GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie überprüfe ich die Geschwindigkeit meiner Netzwerkkarte?

Lösung 1:

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

$ sudo ethtool eth0 | grep Speed

Speed: 1000Mb/s

Lösung 2:

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

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

Beispiel für Schnittstelle namens eth0:

cat /sys/class/net/eth0/speed

Lösung 3:

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

This program is obsolete. For replacement check ethtool.

Verwenden Sie mii-tool um die ausgehandelte Netzwerkgeschwindigkeit zu sehen.

Bsp.

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

Lösung 4:

Hier sind einige großartige Antworten, ich wollte nur ein paar weitere Optionen hinzufügen.

1. Ich weiß, das ist nicht ganz das, was Sie gefragt haben (lesen Sie weiter für andere Möglichkeiten). Aber wenn Sie die reale Leistung Ihrer NIC wissen möchten , anstelle dessen, was Ihr Computer vorgibt, können Sie iperf verwenden. Normalerweise mache ich das - weil man nie weiß. Ich habe kürzlich eine 1-GB-NIC gekauft, die nur mit 672 MBit/s übertragen hat, aber der Uplink war 1 GB. Gut, dass ich nachgesehen habe.

Sie benötigen zwei Computer.

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

iperf -s

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

iperf -c 192.168.0.10

Wenn Sie die Vollduplex-Geschwindigkeit sehen möchten, versuchen Sie stattdessen Folgendes:

iperf -d -c 192.168.0.10

Ersetzen Sie 192.168.0.10 durch die IP-Adresse des Servers

2. Auf Ubuntu-Systemen /var/log/kern.log hat eine begrenzte Protokollierung von Kernel-Ereignissen. Es zeichnet die Verbindungsgeschwindigkeit und den Status einer NIC auf, wenn sie sich ändert. Ich bin mir 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 niemals so weit gehen müssen, aber Sie können C-Code schreiben das, um die Geschwindigkeit zu bekommen. Getestetes Arbeiten und Root ist nicht erforderlich.

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

#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);
}

Lösung 5:

Wie Khaled erwähnt hat, sollten Sie in der Lage sein, ethtool nur mit der Schnittstelle als Argument auszuführen. Dies listet die unterstützten Geschwindigkeiten, die beworbenen Geschwindigkeiten, die aktuelle Geschwindigkeit und eine Reihe anderer Dinge auf:

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 ausführen , und grep für Ihre Schnittstelle, aber das funktioniert möglicherweise nicht, wenn Ihr System schon lange läuft und der aktuelle Puffer diese Informationen nicht mehr enthält (in diesem Fall müssen Sie die ältere /var/log/dmesg .*-Dateien):

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

Linux
  1. So überprüfen Sie die Geschwindigkeit Ihrer SSH-Verbindung

  2. Wie kann man Benchmarks erstellen oder die Geschwindigkeit Ihres DNS-Servers unter Linux überprüfen?

  3. Wie verknüpfe ich Wsl mit dem bereits installierten Python unter Windows?

  4. So überprüfen Sie die Integrität einer Datei mit der md5-Prüfsumme

  5. So überprüfen Sie die Syntax der Datei /etc/ssh/sshd_config

Wie Linux auf den Mainframe kam

So überprüfen Sie die Prüfsumme unter Linux

So überprüfen Sie die Verbindungsgeschwindigkeit in Ubuntu 20.04

So richten Sie den Pretty Hostnamen ein

Wie überprüfe ich den physischen Status eines Ethernet-Ports in Linux?

Wie lautet der Befehl zum Blinken einer NIC-Verbindungsanzeige?