GNU/Linux >> Linux の 問題 >  >> Linux

NIC の速度を確認するにはどうすればよいですか?

解決策 1:

次のようなコマンドを使用してください:ethtool eth0 必要な情報を取得します。例:

$ sudo ethtool eth0 | grep Speed

Speed: 1000Mb/s

解決策 2:

ethtool がない場合、カーネルからの情報を使用することが可能です:

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

eth0:という名前のインターフェイスの例

cat /sys/class/net/eth0/speed

解決策 3:

注: mii-tool の man ページ この免責事項があります:

This program is obsolete. For replacement check ethtool.

mii-tool を使用 ネゴシエートされたネットワーク速度を監視します。

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

解決策 4:

ここには素晴らしい答えがいくつかあります。さらにいくつかのオプションを追加したかっただけです。

1. これはあなたが求めたものではないことを私は知っています(他の方法を読んでください).ただし、NIC の実際のパフォーマンスを知りたい場合 、コンピューターがそうあるべきだと言うのではなく、iperf を使用できます。私は通常これを行います-あなたが決して知らないからです。 最近購入した 1Gb NIC は 672Mbps でしか転送されませんが、アップリンクは 1Gb でした。確認して良かったです。

2 台のコンピューターが必要です。

コンピューター 1 で、サーバー モードで iperf を実行します。

iperf -s

一方、クライアント モードで iperf を実行します。

iperf -c 192.168.0.10

全二重速度を確認したい場合は、代わりにこれを試してください:

iperf -d -c 192.168.0.10

サーバーの IP アドレスを 192.168.0.10 に置き換えます

2. Ubuntu システムでは、/var/log/kern.log カーネル イベントのロギングが制限されています。 NIC が変更されると、NIC のリンク速度とステータスが記録されます。他のディストリビューションもおそらく同様のことを行うか、そうするようにセットアップできると確信しています.

$ 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. ここまでやる必要はないでしょうが、C コードを書くことはできます スピードを出すことです。動作確認済みで、root は不要です。

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

解決策 5:

Khaled が述べたように、インターフェイスだけを引数として ethtool を実行できるはずです。これにより、サポートされている速度、宣伝されている速度、現在の速度、およびその他のものが一覧表示されます。

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

dmesg を実行することもできます 、およびインターフェイスの grep を実行しますが、システムが長時間実行されていて、現在のバッファーにその情報がなくなっている場合、これは機能しない可能性があります (その場合、古い /var/log/dmesg を grep する必要があります) .* ファイル):

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. Linuxがメインフレームに登場した経緯

  2. ssh接続の速度を確認する方法

  3. LinuxでDNSサーバーの速度をベンチマークまたは確認するにはどうすればよいですか?

  1. Ssh –遅すぎるSshログインを高速化する方法は?

  2. md5 チェックサムでファイルの整合性を検証する方法

  3. シンボリック リンク libc.so.6 を削除した後に回復するにはどうすればよいですか?

  1. C ランタイム ライブラリを 'ld' とリンクするには?

  2. ls で実際のハード リンクを確認するにはどうすればよいですか?

  3. Linux でイーサネット ポートの物理的な状態を確認するにはどうすればよいですか?