GNU/Linux >> Tutoriels Linux >  >> Linux

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

Solution 1 :

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

$ sudo ethtool eth0 | grep Speed

Speed: 1000Mb/s

Solution 2 :

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

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

Exemple d'interface nommée eth0 :

cat /sys/class/net/eth0/speed

Solution 3 :

REMARQUE : la page de manuel pour mii-tool a cette clause de non-responsabilité :

This program is obsolete. For replacement check ethtool.

Utilisez mii-tool pour surveiller la vitesse du réseau négociée.

Ex.

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

Solution 4 :

Il y a d'excellentes 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 moyens). 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 le fais habituellement - parce qu'on ne sait jamais. J'ai récemment acheté une carte réseau de 1 Go qui ne transférait qu'à 672 Mbps, mais sa liaison montante était de 1 Go. Heureusement que j'ai vérifié.

Vous aurez besoin de deux ordinateurs.

Sur l'ordinateur un, 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 du duplex intégral, essayez plutôt ceci :

iperf -d -c 192.168.0.10

Remplacez 192.168.0.10 par l'adresse IP des serveurs

2. Sur les systèmes Ubuntu, /var/log/kern.log a une journalisation limitée des événements du noyau. Il enregistrera la vitesse de liaison et l'état d'une carte réseau lorsqu'elle change. 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 besoin d'aller aussi loin, mais vous pouvez écrire du code c que pour obtenir la vitesse. Le fonctionnement testé et la racine ne sont pas requis.

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

Solution 5 :

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

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 dmesg , et grep pour votre interface, mais cela peut 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 .* fichiers) :

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. Comment vérifier la vitesse de votre connexion ssh

  2. Comment évaluer ou vérifier la vitesse de votre serveur DNS sous Linux ?

  3. Ssh – Comment accélérer la connexion Ssh trop lente ?

  4. Comment lier Wsl au Python déjà installé sous Windows ?

  5. Comment augmenter la vitesse du curseur dans le terminal Gnome ?

Comment vérifier la somme de contrôle sur Linux

Comment vérifier la vitesse de liaison dans Ubuntu 20.04

Comment configurer le joli nom d'hôte

Comment lier la bibliothèque d'exécution C avec 'ld' ?

Comment vérifier si iptables est en cours d'exécution ou si le pare-feu est activé

Quelle est la commande pour faire clignoter un voyant de liaison NIC ?