我如何validation我的网卡的速度?

我刚刚在Linux中安装了一个新的千兆网卡(NIC)。 我怎么知道它是否真的被设置为千兆速度? 我看到ethtool有一个选项来设置速度,但我似乎无法弄清楚如何报告当前的速度。

只需使用如下命令: ethtool eth0即可获取所需的信息。 例如:

$ sudo ethtool eth0 | grep Speed

 Speed: 1000Mb/s 

使用mii-tool来观察协商的networking速度。

防爆。

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

ethtool丢失时,可以使用内核中的信息:

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

名为eth0的接口示例:

 cat /sys/class/net/eth0/speed 

正如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,但是如果你的系统已经运行了很长时间,并且当前的缓冲区不再有这些信息,这可能不起作用(在这种情况下,你必须grep旧的/ var / 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 

这里有一些很好的答案,我只是想添加更多的选项。

我知道这不是你所问的(用其他方式阅读)。 但是如果你想知道你的网卡的真实世界性能 ,而不是你的电脑所说的,你可以使用iperf。 我通常这样做 – 因为你永远不知道。 我最近买了一个1Gb的网卡,只能以672Mbps的速度传输,而上行链路则是1Gb。 好东西我检查。

你需要两台电脑。

在计算机上,在服务器模式下运行iperf:

 iperf -s 

另一方面,在客户端模式下运行iperf:

 iperf -c 192.168.0.10 

如果你想看到全双工速度,试试这个:

 iperf -d -c 192.168.0.10 

用192.168.0.10代替服务器的IP地址

2.在Ubuntu系统上,/ /var/log/kern.log log/ /var/log/kern.log限制了内核事件的logging。 logging链路速度和网卡状态。 我相信其他发行版可能会做类似的事情,或者可以设置这样做。

 $ 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 

来自“简明英汉词典”你可能永远都不需要走这么远,但是你可以编写C代码来获得速度。 testing工作和根不是必需的。

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

使用下面的命令

  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工具没有恢复到正确的速度,因为它已经过时,不赞成,ethtool正在返回协商的速度。

ethtool eth0为我工作。 例:

 $ethtool eth0 |grep -i speed Speed: 1000Mb/s