Pregunta ¿Cómo verifico la velocidad de mi NIC?


Acabo de instalar una nueva tarjeta de interfaz de red (NIC) gigabit en Linux. ¿Cómo puedo saber si está realmente configurado para velocidades de gigabit? Veo ethtool tiene una opción para establecer la velocidad, pero parece que no puedo averiguar cómo informar su velocidad actual.


101
2017-11-30 16:20


origen


ethtool -h dice: ethtool DEVNAME Muestra información estándar sobre el dispositivo - Ryan Babchishin


Respuestas:


Solo usa un comando como: ethtool eth0 para obtener la información necesaria. Ex:

$ sudo ethtool eth0 | grep Speed

Speed: 1000Mb/s

145
2017-11-30 16:23



Si desea tener la lista completa de todas sus interfaces con la velocidad de ellos, puede usar este comando: 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 obtienes "Speed: Unknown!" puede estar usando el nombre de ethXX incorrecto, vale la pena una verificación doble :) - rogerdpack


Es posible utilizar la información del kernel cuando falta ethtool:

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

Ejemplo para la interfaz llamada eth0:

cat /sys/class/net/eth0/speed

54
2018-04-15 15:39



Nota: Solo disponible desde la versión 2.6.33. - zhaorufei
Obteniendo "argumento inválido" - wi1
@ wi1: Se agregó un ejemplo para aclarar el uso. ¿Está funcionando ahora? - Christian
@Christian Sí, gracias, pero solo se espera en algunas de mis interfaces que he leído, así que estoy bien. - wi1
RHEL6 ha incluido esto en su kernel 2.6.32. - Dan Pritts


Utilizar mii-tool Para ver la velocidad de la red negociada.

Ex.

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

40
2017-11-30 20:58



Para los sistemas basados ​​en Debian, ethtool no está instalado por defecto Pero mii-tool es, como parte del paquete esencial de "herramientas de red". Así que esta fue la mejor solución para mí. - mivk
"Veo esto en la página de manual de mii-tool" Este programa está obsoleto. Los medios válidos son solo tarjetas Ethernet 100baseT4, 100baseTx-FD, 100baseTx-HD, 10baseT-FD y 10baseT-HD. : | - rogerdpack
Mientras mii-tool informes negociados 100control de flujo baseTx-FD, enlace ok ', ambos ethtool y cat /sys/class/net/eth…/speed de acuerdo en1000Mb / s dúplex completo '. Esto es para un controlador USB 3.0, a saber, ASIX AX88179 (controlador 'ax88179_178a' para Linux). - Anton Samsonov


Aquí hay algunas respuestas geniales, solo quería agregar algunas opciones más.

1. Sé que esto no es exactamente lo que pediste (sigue leyendo para conocer otras maneras). Pero Si quieres conocer el rendimiento real de tu NIC., en lugar de lo que su computadora dice que debería ser, puede usar iperf. Normalmente hago esto, porque nunca se sabe. Compré una NIC de 1 Gb recientemente que solo se transfirió a 672 Mbps pero su enlace ascendente fue de 1 Gb. Menos mal que lo comprobé.

Necesitarás dos computadoras.

En la computadora uno, ejecute iperf en modo servidor:

iperf -s

Por otro lado, ejecute iperf en modo cliente:

iperf -c 192.168.0.10

Si desea ver la velocidad dúplex completa, intente esto en su lugar:

iperf -d -c 192.168.0.10

Sustituya 192.168.0.10 por la dirección IP de los servidores

2. En los sistemas Ubuntu, /var/log/kern.log ha limitado el registro de eventos del núcleo. Registrará la velocidad de enlace y el estado de una NIC cuando cambie. Estoy seguro de que otras distribuciones probablemente hagan algo similar o pueden configurarse para hacerlo.

$ 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. Probablemente nunca, nunca tendrás que ir tan lejos, pero puede escribir código c que para conseguir la velocidad. Prueba de trabajo y la raíz no es necesario.

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





Como mencionó Khaled, debería poder ejecutar ethtool solo con la interfaz como argumento. Esto mostrará una lista de las velocidades admitidas, las velocidades anunciadas, la velocidad actual y un montón de otras cosas también:

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

También puedes correr dmesgy grep para su interfaz, pero esto podría no funcionar si su sistema ha estado funcionando durante mucho tiempo y el búfer actual ya no tiene esa información (en ese caso, tendrá que grep el / var / log / dmesg más antiguo). . * archivos):

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





Use el comando de abajo

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

referir esta


8
2017-11-28 10:17



Útil cuando no tienes acceso de root. - Mehdi Sadeghi
Útil cuando el registro no se sobrescribe. Estoy en la desafortunada situación. - zhaorufei
esto fue útil cuando no tenía privilegios de superusuario en la caja. ¡Gracias! - Sankalp


También para futuras referencias, he notado que el campo de velocidad en ethtool proporciona la velocidad máxima admitida por la NIC y mii-tool da la velocidad real a la que se ejecuta la NIC.

[ 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

ACTUALIZACIÓN: Al cabo de un tiempo, descubrí que la mii-tool no estaba devolviendo la velocidad correcta, ya que estaba desactualizada y en desuso y la herramienta Ethtool estaba devolviendo la velocidad negociada.


1
2017-11-11 11:59





ethtool eth0 trabajó para mi. Ejemplo:

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

-5
2017-07-11 11:39



Por favor, lea otras respuestas antes de responder. Esto ya se dijo hace seis años y es la respuesta aceptada con 66 votos positivos. - Sven♦
Todavía se puede publicar su respuesta a pesar de todo. Las respuestas dadas podrían no funcionar para alguien, así que solo quería agregar otra opción que se adaptara a mi situación. - dragon
Su respuesta es exactamente la misma que la aceptada y no agrega valor. - Sven♦
¿Dónde se menciona el comando ethtool en las opciones anteriores? - dragon
mira la respuesta más alta con la marca verde al lado. Esta es la respuesta aceptada y utiliza muy claramente. ethtool. - Sven♦