방금 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
답변
답변
또한 나중에 참조 할 수 있도록 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이 협상 된 속도를 반환하므로 올바른 속도를 반환하지 않았습니다.