GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso verificare la velocità della mia NIC?

Soluzione 1:

Basta usare un comando come:ethtool eth0 per ottenere le informazioni necessarie. Es:

$ sudo ethtool eth0 | grep Speed

Speed: 1000Mb/s

Soluzione 2:

È possibile utilizzare le informazioni dal kernel quando manca ethtool:

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

Esempio per l'interfaccia denominata eth0:

cat /sys/class/net/eth0/speed

Soluzione 3:

NOTA: la pagina man di mii-tool ha questo disclaimer:

This program is obsolete. For replacement check ethtool.

Usa mii-tool per controllare la velocità di rete negoziata.

Es.

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

Soluzione 4:

Ci sono alcune ottime risposte qui, volevo solo aggiungere qualche altra opzione.

1. So che questo non è proprio quello che hai chiesto (continua a leggere per altri modi). Ma se vuoi conoscere le prestazioni del mondo reale della tua NIC , piuttosto che come dovrebbe essere il tuo computer, puoi usare iperf. Di solito lo faccio, perché non si sa mai. Di recente ho acquistato una scheda NIC da 1 Gb che trasferiva solo a 672 Mbps, ma l'uplink era di 1 Gb. Meno male che ho controllato.

Ti serviranno due computer.

Sul computer uno, esegui iperf in modalità server:

iperf -s

Dall'altro, esegui iperf in modalità client:

iperf -c 192.168.0.10

Se vuoi vedere la velocità full duplex, prova invece questo:

iperf -d -c 192.168.0.10

Sostituire 192.168.0.10 per l'indirizzo IP del server

2. Sui sistemi Ubuntu, /var/log/kern.log ha una registrazione limitata degli eventi del kernel. Registrerà la velocità del collegamento e lo stato di una scheda NIC quando cambia. Sono sicuro che altre distribuzioni probabilmente fanno qualcosa di simile o possono essere configurate per farlo.

$ 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. Probabilmente non avrai mai, mai bisogno di andare così lontano, ma puoi scrivere codice c che per ottenere la velocità. Testato funzionante e root non richiesto.

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

Soluzione 5:

Come menzionato da Khaled, dovresti essere in grado di eseguire ethtool con solo l'interfaccia come argomento. Questo elencherà le velocità supportate, le velocità pubblicizzate, la velocità corrente e anche un sacco di altre cose:

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

Puoi anche eseguire dmesg e grep per la tua interfaccia, ma questo potrebbe non funzionare se il tuo sistema è in esecuzione da molto tempo e il buffer corrente non ha più quell'informazione (in tal caso, dovrai grep il vecchio /var/log/dmesg .* file):

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. Come controllare la velocità della tua connessione ssh

  2. Come eseguire il benchmark o controllare la velocità del tuo server DNS su Linux?

  3. Come aumentare la velocità del cursore nel terminale Gnome?

  4. Come utilizzare l'editor di testo in InstantSite.

  5. Come creare un collegamento a una directory

Come Linux è arrivato al mainframe

Come verificare il checksum su Linux

Come controllare la velocità di collegamento in Ubuntu 20.04

Come impostare il nome host Pretty

Come verificare se iptables è in esecuzione o il firewall è attivato

Come verificare lo stato fisico di una porta Ethernet in Linux?