GNU/Linux >> Znalost Linux >  >> Linux

Jak ověřím rychlost mé NIC?

Řešení 1:

Stačí použít příkaz jako:ethtool eth0 abyste získali potřebné informace. Příklad:

$ sudo ethtool eth0 | grep Speed

Speed: 1000Mb/s

Řešení 2:

Pokud ethtool chybí, je možné použít informace z jádra:

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

Příklad rozhraní s názvem eth0:

cat /sys/class/net/eth0/speed

Řešení 3:

POZNÁMKA: manuálovou stránku pro mii-tool má toto vyloučení odpovědnosti:

This program is obsolete. For replacement check ethtool.

Použijte mii-tool sledovat sjednanou rychlost sítě.

Př.

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

Řešení 4:

Je zde několik skvělých odpovědí, jen jsem chtěl přidat několik dalších možností.

1. Vím, že to není úplně to, na co jste se ptali (čtěte dále pro další způsoby). Ale pokud chcete znát skutečný výkon vaší síťové karty , spíše než to, co váš počítač říká, že by to mělo být, můžete použít iperf. Obvykle to dělám - protože člověk nikdy neví. Nedávno jsem si koupil 1Gb NIC, která přenášela pouze 672Mbps, ale její uplink byl 1Gb. Dobře, že jsem to zkontroloval.

Budete potřebovat dva počítače.

Na prvním počítači spusťte iperf v režimu serveru:

iperf -s

Na druhé straně spusťte iperf v klientském režimu:

iperf -c 192.168.0.10

Pokud chcete vidět plnou duplexní rychlost, zkuste místo toho toto:

iperf -d -c 192.168.0.10

Nahraďte adresu IP serverů 192.168.0.10

2. Na systémech Ubuntu /var/log/kern.log má omezené protokolování událostí jádra. Při změně zaznamená rychlost připojení a stav síťové karty. Jsem si jistý, že jiné distribuce pravděpodobně dělají něco podobného nebo mohou být nastaveny tak, aby to dělaly.

$ 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. Pravděpodobně nikdy, nikdy nebudete muset zajít tak daleko, ale můžete napsat kód c že získat rychlost. Testovaná funkčnost a root není vyžadován.

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

Řešení 5:

Jak zmínil Khaled, měli byste být schopni spustit ethtool pouze s rozhraním jako argumentem. Zde budou uvedeny podporované rychlosti, inzerované rychlosti, aktuální rychlost a spousta dalších věcí:

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

Můžete také spustit dmesg , a grep pro vaše rozhraní, ale to nemusí fungovat, pokud váš systém běží dlouhou dobu a aktuální vyrovnávací paměť již tyto informace neobsahuje (v takovém případě budete muset grep použít starší /var/log/dmesg .* soubory):

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. Jak porovnat nebo zkontrolovat rychlost serveru DNS v systému Linux?

  2. Ssh – Jak urychlit příliš pomalé přihlašování Ssh?

  3. Jak propojit Wsl s již nainstalovaným Pythonem ve Windows?

  1. Jak používat textový editor na InstantSite.

  2. Jak ověřit syntaxi souboru /etc/ssh/sshd_config

  3. Jak vytvořit odkaz na adresář

  1. Jak obnovit po smazání symbolického odkazu libc.so.6?

  2. Jak propojit knihovnu C Runtime s 'ld'?

  3. Jak můžete vidět skutečný pevný odkaz pomocí ls?