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


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


101
2017-11-30 16:20


origine


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


Réponses:


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

$ sudo ethtool eth0 | grep Speed

Speed: 1000Mb/s

145
2017-11-30 16:23



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


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

54
2018-04-15 15:39



Remarque: disponible uniquement à partir de la version 2.6.33. - zhaorufei
Obtenir "Argument invalide" - 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


Utilisation mii-tool regarder la vitesse du réseau négocié.

Ex.

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

40
2017-11-30 20:58



Pour les systèmes basés sur Debian, ethtool n'est pas installé par défaut. Mais mii-tool fait partie de l’essentiel du paquet "net-tools". Donc c'était la meilleure solution pour moi. - mivk
Je le vois dans la page de manuel relative à 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
Tandis que mii-tool rapports 'négociés 100contrôle de flux baseTx-FD, lien ok ', les deux ethtool et cat /sys/class/net/eth…/speed s'accorder sur '1000Mb / s Full duplex '. Il s’agit d’un contrôleur USB 3.0, à savoir ASIX AX88179 (pilote «ax88179_178a» pour Linux). - Anton Samsonov


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 voulez connaître les performances réelles de votre carte réseau, plutôt que ce que votre ordinateur dit qu'il devrait ê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 Go qui n'a été transférée qu'à 672 Mbps, mais la liaison montante était de 1 Go. 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, exécutez 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

Remplacez 192.168.0.10 par l'adresse IP du serveur

2 Sur les systèmes Ubuntu, /var/log/kern.log a limité la journalisation des événements du noyau. 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 peut écrire du code c que 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);
}

20
2017-10-01 10:28





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 beaucoup d'autres choses aussi:

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 aussi courir dmesget grep 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 grapter l'ancien fichier / var / log / dmesg .* des dossiers):

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
2017-11-30 16:40





Utilisez la commande ci-dessous

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

référer ce


8
2017-11-28 10:17



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 été utile lorsque je n'avais pas de privilèges de superutilisateur sur la boîte. Merci! - Sankalp


Également pour référence ultérieure, 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.


1
2017-11-11 11:59





ethtool eth0 a travaillé pour moi. Exemple:

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

-5
2017-07-11 11:39



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
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é. C’est la réponse acceptée et elle utilise très clairement ethtool. - Sven♦