GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo verifico la velocidad de mi NIC?

Solución 1:

Simplemente use un comando como:ethtool eth0 para obtener la información necesaria. Ej:

$ sudo ethtool eth0 | grep Speed

Speed: 1000Mb/s

Solución 2:

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

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

Ejemplo de interfaz llamada eth0:

cat /sys/class/net/eth0/speed

Solución 3:

NOTA: la página man para mii-tool tiene este descargo de responsabilidad:

This program is obsolete. For replacement check ethtool.

Usa mii-tool para ver la velocidad de la red negociada.

Ej.

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

Solución 4:

Hay algunas respuestas excelentes aquí, solo quería agregar algunas opciones más.

1. Sé que esto no es exactamente lo que pediste (sigue leyendo para conocer otras formas). Pero si desea conocer el rendimiento real de su NIC , en lugar de lo que su computadora dice que debería ser, puede usar iperf. Normalmente hago esto, porque nunca se sabe. Recientemente compré una NIC de 1 Gb que solo se transfirió a 672 Mbps pero su enlace ascendente era 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, ejecuta iperf en modo cliente:

iperf -c 192.168.0.10

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

iperf -d -c 192.168.0.10

Sustituya 192.168.0.10 por la dirección IP del servidor

2. En sistemas Ubuntu, /var/log/kern.log tiene un registro limitado de eventos del núcleo. Registrará la velocidad del enlace y el estado de una NIC cuando cambie. Estoy seguro de que otras distribuciones probablemente hagan algo similar o puedan 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, jamás, necesite llegar tan lejos, pero puede escribir código c que para conseguir la velocidad. No se requiere funcionamiento probado y raíz.

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

Solución 5:

Como mencionó Khaled, debería poder ejecutar ethtool solo con la interfaz como argumento. Esto enumerará las velocidades admitidas, las velocidades anunciadas, la velocidad actual y muchas 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 puede ejecutar dmesg y 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 anterior /var/log/dmesg .* 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

Linux
  1. Cómo comprobar la velocidad de su conexión ssh

  2. ¿Cómo comparar o comprobar la velocidad de su servidor DNS en Linux?

  3. Ssh:¿cómo acelerar el inicio de sesión de Ssh demasiado lento?

  4. ¿Cómo vincular Wsl al Python ya instalado en Windows?

  5. ¿Cómo aumentar la velocidad del cursor en Gnome Terminal?

Cómo llegó Linux al mainframe

Cómo verificar la suma de comprobación en Linux

Cómo comprobar la velocidad de enlace en Ubuntu 20.04

Cómo configurar el nombre de host bonito

¿Cómo vincular la biblioteca de tiempo de ejecución de C con 'ld'?

Cómo verificar si iptables se está ejecutando o el firewall está activado