it-swarm.com.de

Wie überprüfe ich die Geschwindigkeit meiner Netzwerkkarte?

Ich habe gerade eine neue Gigabit-Netzwerkkarte (NIC) unter Linux installiert. Wie kann ich feststellen, ob die Gigabit-Geschwindigkeit wirklich eingestellt ist? Ich sehe, dass ethtool eine Option zum Einstellen der Geschwindigkeit hat, aber ich kann anscheinend nicht herausfinden, wie die aktuelle Geschwindigkeit gemeldet werden soll.

126
User1

Verwenden Sie einfach einen Befehl wie: ethtool eth0 um die benötigten Informationen zu erhalten. Ex:

$ Sudo ethtool eth0 | grep Speed

Speed: 1000Mb/s
178
Khaled

Es ist möglich, die Informationen aus dem Kernel zu verwenden, wenn ethtool fehlt:

cat /sys/class/net/<interface>/speed

Beispiel für eine Schnittstelle mit dem Namen eth0:

cat /sys/class/net/eth0/speed
88
Christian

HINWEIS : die Manpage für mii-tool hat diesen Haftungsausschluss:

This program is obsolete. For replacement check ethtool.

Verwenden mii-tool, um die ausgehandelte Netzwerkgeschwindigkeit zu beobachten.

Ex.

eth0: no link
eth1: negotiated 100baseTx-FD, link ok
42
Simon Gate

Hier gibt es einige gute Antworten. Ich wollte nur ein paar weitere Optionen hinzufügen.

1. Ich weiß, dass dies nicht ganz das ist, was Sie gefragt haben (lesen Sie weiter für andere Möglichkeiten). Aber Wenn Sie die reale Leistung Ihrer Netzwerkkarte kennen möchten, anstatt das, was Ihr Computer vorschreibt, können Sie iperf verwenden. Normalerweise mache ich das - weil du es nie weißt. Ich habe kürzlich ein 1 GB gekauft NIC, das nur mit 672 Mbit/s übertragen wurde, aber der Uplink war 1 GB. Gut, dass ich es überprüft habe.

Sie benötigen zwei Computer.

Führen Sie auf Computer 1 iperf im Servermodus aus:

iperf -s

Führen Sie andererseits iperf im Client-Modus aus:

iperf -c 192.168.0.10

Wenn Sie die volle Duplexgeschwindigkeit sehen möchten, versuchen Sie stattdessen Folgendes:

iperf -d -c 192.168.0.10

Ersetzen Sie die IP-Adresse des Servers durch 192.168.0.10

2. Auf Ubuntu-Systemen /var/log/kern.log hat die Protokollierung von Kernel-Ereignissen eingeschränkt. Es zeichnet die Verbindungsgeschwindigkeit und den Status eines NIC auf, wenn es sich ändert. Ich bin sicher, dass andere Distributionen wahrscheinlich etwas Ähnliches tun oder dafür eingerichtet werden können.

$ tail -n 300 /var/log/kern.log.1 | grep slave0
Aug 28 12:54:04 haze kernel: [ 9452.766248] e1000e: slave0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
Aug 28 12:54:41 haze NetworkManager[921]: <info>  [1472403281.8486] device (slave0): link disconnected
Aug 28 12:54:41 haze kernel: [ 9489.898476] e1000e: slave0 NIC Link is Down

3. Sie werden wahrscheinlich nie so weit gehen müssen, aber Sie können schreiben c code um die Geschwindigkeit zu erhalten. Getestetes Arbeiten und Root sind nicht erforderlich.

https://stackoverflow.com/questions/2872058/get-link-speed-programmatisch

#include <stdio.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <linux/sockios.h>
#include <linux/if.h>
#include <linux/ethtool.h>
#include <string.h>
#include <stdlib.h>
int main (int argc, char **argv)
{
    int sock;
    struct ifreq ifr;
    struct ethtool_cmd edata;
    int rc;
    sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
    if (sock < 0) {
        perror("socket");
        exit(1);
    }
    strncpy(ifr.ifr_name, "eth0", sizeof(ifr.ifr_name));
    ifr.ifr_data = &edata;
    edata.cmd = ETHTOOL_GSET;
    rc = ioctl(sock, SIOCETHTOOL, &ifr);
    if (rc < 0) {
        perror("ioctl");
        exit(1);
    }
    switch (ethtool_cmd_speed(&edata)) {
        case SPEED_10: printf("10Mbps\n"); break;
        case SPEED_100: printf("100Mbps\n"); break;
        case SPEED_1000: printf("1Gbps\n"); break;
        case SPEED_2500: printf("2.5Gbps\n"); break;
        case SPEED_10000: printf("10Gbps\n"); break;
        default: printf("Speed returned is %d\n", edata.speed);
    }
    return (0);
}
25
Ryan Babchishin

Wie Khaled erwähnt hat, sollten Sie in der Lage sein, ethtool nur mit der Schnittstelle als Argument auszuführen. Hier werden die unterstützten Geschwindigkeiten, die angekündigten Geschwindigkeiten, die aktuelle Geschwindigkeit und eine Reihe anderer Dinge aufgelistet:

Settings for eth0:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Advertised auto-negotiation: Yes
    Speed: 1000Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: on
    Supports Wake-on: d
    Wake-on: d
    Current message level: 0x00000007 (7)
    Link detected: yes

Sie können auch dmesg und grep für Ihre Schnittstelle ausführen. Dies funktioniert jedoch möglicherweise nicht, wenn Ihr System längere Zeit ausgeführt wurde und der aktuelle Puffer diese Informationen nicht mehr enthält (in diesem Fall haben Sie diese um die älteren /var/log/dmesg.* Dateien zu durchsuchen):

dmesg |grep eth0
[    2.867481] e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection
[   19.429444] ADDRCONF(NETDEV_UP): eth0: link is not ready
[   19.431555] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
[   19.449341] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   26.972379] e1000: eth0: e1000_set_tso: TSO is Enabled
[   29.920458] eth0: no IPv6 routers present
18
Jed Daniels

Verwenden Sie den folgenden Befehl

 dmesg | grep -i duplex
 Output: eth0: link up, 100Mbps, full-duplex, lpa 0x45E1

siehe this

10
Vikas Hardia

Auch zum späteren Nachschlagen habe ich festgestellt, dass das Geschwindigkeitsfeld in ethtool die maximale Geschwindigkeit angibt, die von NIC unterstützt wird, und mii-tool die tatsächliche Geschwindigkeit angibt, mit der die NIC ausgeführt wird.

[ root @  ]# mii-tool
eth0: negotiated 100baseTx-FD, link ok
[ root @  ]# ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 2
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: off (auto)
        Supports Wake-on: pumbg
        Wake-on: g
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: yes

UPDATE: Nach einer Weile stellte sich heraus, dass das Mii-Tool nicht die richtige Geschwindigkeit zurückgab, da es veraltet und veraltet war und ethtool die ausgehandelte Geschwindigkeit zurückgab.

1
maco1717