[server] NIC 속도를 어떻게 확인합니까?

방금 Linux에 새로운 기가비트 네트워크 인터페이스 카드 (NIC)를 설치했습니다. 실제로 기가비트 속도로 설정되어 있는지 어떻게 알 수 있습니까? 내가 볼 ethtool의 속도를 설정할 수있는 옵션을 가지고 있지만, 나는 그것의 현재 속도를보고하는 방법을 알아낼 수 없습니다.



답변

ethtool eth0필요한 정보를 얻으려면 다음 과 같은 명령을 사용 하십시오. 전의:

$ sudo ethtool eth0 | grep Speed

Speed: 1000Mb/s


답변

ethtool이 없으면 커널의 정보를 사용할 수 있습니다.

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

이름이 eth0 인 인터페이스의 예 :

cat /sys/class/net/eth0/speed


답변

참고 : 의 맨 페이지 mii-tool에는이 면책 조항이 있습니다.

This program is obsolete. For replacement check ethtool.

mii-tool협상 된 네트워크 속도를 보는 데 사용 합니다.

전의.

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


답변

여기에 몇 가지 훌륭한 답변이 있습니다. 몇 가지 옵션을 추가하고 싶었습니다.

1. 나는 이것이 당신이 요구 한 것이 아니라는 것을 알고 있습니다 (다른 방법으로 읽으십시오). 그러나 컴퓨터가 말한 것보다 NIC의 실제 성능을 알고 싶다면 iperf를 사용할 수 있습니다. 나는 보통 이것을한다-당신이 모르기 때문에. 나는 최근에 672Mbps로 전송되었지만 업 링크는 1Gb라는 1Gb NIC를 구입했습니다. 내가 확인한 좋은 것.

두 대의 컴퓨터가 필요합니다.

컴퓨터 1에서 서버 모드로 iperf를 실행하십시오.

iperf -s

다른 방법으로 클라이언트 모드에서 iperf를 실행하십시오.

iperf -c 192.168.0.10

전이중 속도를 보려면 대신 다음을 시도하십시오.

iperf -d -c 192.168.0.10

서버 IP 주소를 192.168.0.10으로 대체

2. 우분투 시스템에서는 /var/log/kern.log커널 이벤트의 로깅이 제한되어 있습니다. 변경시 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 코드작성할 수 있습니다 . 테스트 된 작업 및 루트는 필요하지 않습니다.

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


답변

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을 grep해야합니다) /log/dmesg.* 파일) :

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


답변

아래 명령 사용

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

이것을 참조 하십시오


답변

또한 나중에 참조 할 수 있도록 ethtool의 속도 필드가 NIC에서 지원하는 최대 속도를 제공하고 mii-tool은 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

업데이트 : 잠시 후 mii-tool이 오래되고 더 이상 사용되지 않아 ethtool이 협상 된 속도를 반환하므로 올바른 속도를 반환하지 않았습니다.