Comment vérifier la vitesse de ma carte réseau?


119

Je viens d'installer une nouvelle carte d'interface réseau gigabit sous Linux. Comment puis-je savoir s'il est vraiment réglé sur des vitesses gigabits? Je vois ethtoolune option pour régler la vitesse, mais je n'arrive pas à comprendre comment signaler sa vitesse actuelle.


1
ethtool -h dit: ethtool DEVNAME Afficher les informations standard sur le périphérique
Ryan Babchishin

Réponses:


165

Utilisez simplement une commande comme: ethtool eth0pour obtenir les informations nécessaires. Ex:

$ sudo ethtool eth0 | grep Speed

Speed: 1000Mb/s

2
Si vous voulez avoir la liste complète de toutes vos interfaces avec leur vitesse, vous pouvez utiliser cette commande:for i in $(netstat -i | cut -f1 -d" " | tail -n+3) ; do echo "$i: $(ethtool "$i" | grep Speed | sed 's/Speed://g')" ; done
Code-Source

Si vous obtenez "Speed: Unknown!" vous utilisez peut-être le mauvais nom ethXX, qui mérite une double vérification :)
rogerdpack

76

Il est possible d'utiliser les informations du noyau quand ethtool est manquant:

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

Exemple pour l'interface nommée eth0:

cat /sys/class/net/eth0/speed

5
Remarque: disponible uniquement à partir de la version
2.6.33

6
Obtenir "Invalid argument"
wi1

@ wi1: ajout d'un exemple pour clarifier l'utilisation. Est-ce que ça marche maintenant?
Christian

@Christian Oui c'est merci, mais seulement sur certaines de mes interfaces que j'ai lues est attendu, donc je suis tout bon
wi1

RHEL6 a rétroporté cela dans leur noyau 2.6.32.
Dan Pritts

42

NOTE: la page de manuel pour mii-toola cet avertissement:

This program is obsolete. For replacement check ethtool.

Utilisez mii-toolpour regarder la vitesse du réseau négocié.

Ex.

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

15
Pour les systèmes basés sur Debian, ethtooln’est pas installé par défaut. Mais mii-toolfait partie de l’essentiel du paquet "net-tools". Donc c'était la meilleure solution pour moi.
mardi

1
Je le vois dans la page de manuel de mii-tool "Ce programme est obsolète. Les supports valides ne sont que des cartes Ethernet 100baseT4, 100baseTx-FD, 100baseTx-HD, 10baseT-FD et 10baseT-HD. Pour un remplacement d'outil ethtool." : |
rogerdpack

Alors que les mii-toolrapports «négocient 100 contrôle de flux baseTx-FD, link ok», les deux ethtoolet cat /sys/class/net/eth…/speeds’accordent sur le « Full duplex 1000 Mb / s». Il s’agit d’un contrôleur USB 3.0, à savoir ASIX AX88179 (pilote «ax88179_178a» pour Linux).
Anton Samsonov

23

Il y a quelques bonnes réponses ici, je voulais juste ajouter quelques options supplémentaires.

1. Je sais que ce n'est pas tout à fait ce que vous avez demandé (lisez la suite pour d'autres manières). Mais si vous souhaitez connaître les performances réelles de votre carte réseau , plutôt que ce que votre ordinateur vous dit d’être, vous pouvez utiliser iperf. Je fais généralement cela - parce que vous ne savez jamais. J'ai récemment acheté une carte réseau de 1 Gb qui n'a été transférée qu'à 672 Mbps, mais la liaison montante était de 1 Gb. C'est une bonne chose que j'ai vérifiée.

Vous aurez besoin de deux ordinateurs.

Sur le premier ordinateur, lancez iperf en mode serveur:

iperf -s

D'autre part, lancez iperf en mode client:

iperf -c 192.168.0.10

Si vous voulez voir la vitesse en duplex intégral, essayez plutôt ceci:

iperf -d -c 192.168.0.10

Remplace 192.168.0.10 par l'adresse IP du serveur

2. Sur les systèmes Ubuntu, la /var/log/kern.logjournalisation des événements du noyau est limitée. Il enregistrera la vitesse de liaison et le statut d'une carte réseau lorsqu'elle changera. Je suis sûr que d'autres distributions font probablement quelque chose de similaire ou peuvent être configurées pour le faire.

$ 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. Vous n'aurez probablement jamais, jamais besoin d'aller aussi loin, mais vous pouvez écrire du code c pour obtenir la vitesse. Testé de travail et la racine n'est pas nécessaire.

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

1
Quelle a été votre résolution finale à la performance non attendue?
rogerdpack

Utiliser iperf comme vous l’avez dit est la solution si l’on veut obtenir la vitesse actuelle et pas simplement la vitesse potentielle du processeur réseau.
droid-zilla

18

Comme Khaled l'a mentionné, vous devriez pouvoir exécuter ethtool avec uniquement l'interface comme argument. Ceci listera les vitesses prises en charge, les vitesses annoncées, la vitesse actuelle et bien d'autres choses encore:

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

Vous pouvez également exécuter dmesggrep pour votre interface, mais cela risque de ne pas fonctionner si votre système fonctionne depuis longtemps et que le tampon actuel ne contient plus ces informations (dans ce cas, vous devrez grep l'ancien / var /log/dmesg.*):

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

10

Utilisez la commande ci-dessous

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

renvoyer cette


Utile lorsque vous n'avez pas d'accès root.
Mehdi Sadeghi

utile lorsque le journal n'est pas écrasé. Je suis dans la malheureuse situation.
Zhaorufei

cela m'a aidé lorsque je n'avais pas de privilèges de superutilisateur sur la boîte. Merci!
Sankalp

1

Aussi pour référence future, j'ai remarqué que le champ speed de ethtool donne la vitesse maximale prise en charge par la carte réseau et que mii-tool indique la vitesse réelle d'utilisation de la carte réseau.

[ 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

MISE À JOUR: Après un certain temps, mii-tool ne retrouvait pas la bonne vitesse car il était obsolète et obsolète et qu'ethtool retrouvait la vitesse négociée.


-6

ethtool eth0a travaillé pour moi. Exemple:

$ethtool eth0 |grep -i speed
Speed: 1000Mb/s

1
Veuillez lire les autres réponses avant de répondre. Cela a déjà été dit il y a six ans et est la réponse acceptée avec 66 votes positifs.
Sven

on peut toujours poster sa réponse quand même. Les réponses données peuvent ne pas fonctionner pour quelqu'un, alors je voulais simplement ajouter une autre option qui me convenait dans mon cas.
dragon le

Votre réponse est exactement la même que celle acceptée et n’ajoute aucune valeur.
Sven

Où la commande ethtool est-elle mentionnée dans les options précédentes?
dragon

Regardez la réponse tout en haut avec la coche verte à côté. Ceci est la réponse acceptée et il utilise très clairement ethtool.
Sven
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.