Use*_*er1 153 linux gigabit-ethernet ethtool
我刚刚在 Linux 中安装了一个新的千兆网络接口卡 (NIC)。我如何判断它是否真的设置为千兆速度?我看到ethtool有一个设置速度的选项,但我似乎无法弄清楚如何报告其当前速度。
Kha*_*led 209
只需使用如下命令:ethtool eth0获取所需信息。前任:
$ sudo ethtool eth0 | grep Speed
Speed: 1000Mb/s
Run Code Online (Sandbox Code Playgroud)
Chr*_*ian 123
当缺少 ethtool 时,可以使用内核中的信息:
cat /sys/class/net/<interface>/speed
Run Code Online (Sandbox Code Playgroud)
名为 eth0 的接口示例:
cat /sys/class/net/eth0/speed
Run Code Online (Sandbox Code Playgroud)
小智 43
注意:手册页mii-tool有这个免责声明:
Run Code Online (Sandbox Code Playgroud)This program is obsolete. For replacement check ethtool.
使用mii-tool观看协商网络速度。
前任。
eth0: no link
eth1: negotiated 100baseTx-FD, link ok
Run Code Online (Sandbox Code Playgroud)
Rya*_*hin 33
这里有一些很好的答案,我只是想添加更多选项。
1.我知道这不是你问的(阅读其他方式)。但是如果你想知道你的 NIC 的真实世界性能,而不是你的计算机所说的应该是什么,你可以使用 iperf。我通常这样做 - 因为你永远不知道。我最近买了一个 1Gb 网卡,它只能以 672Mbps 的速度传输,但它的上行链路却是 1Gb。还好我查过了。
你需要两台电脑。
在计算机一上,在服务器模式下运行 iperf:
iperf -s
Run Code Online (Sandbox Code Playgroud)
另一方面,在客户端模式下运行 iperf:
iperf -c 192.168.0.10
Run Code Online (Sandbox Code Playgroud)
如果您想查看全双工速度,请尝试以下操作:
iperf -d -c 192.168.0.10
Run Code Online (Sandbox Code Playgroud)
将服务器 IP 地址替换为 192.168.0.10
2.在 Ubuntu 系统上,/var/log/kern.log内核事件的日志记录有限。当网卡改变时,它会记录网卡的链接速度和状态。我确信其他发行版可能会做类似的事情,或者可以设置为这样做。
$ 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
Run Code Online (Sandbox Code Playgroud)
3.你可能永远、永远都不需要走这么远,但你可以编写 c 代码来获得速度。测试工作和 root 不是必需的。
#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);
}
Run Code Online (Sandbox Code Playgroud)
Jed*_*els 19
正如 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
Run Code Online (Sandbox Code Playgroud)
您也可以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
Run Code Online (Sandbox Code Playgroud)
小智 12
使用下面的命令
dmesg | grep -i duplex
Output: eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
Run Code Online (Sandbox Code Playgroud)
参考这个
| 归档时间: |
|
| 查看次数: |
471881 次 |
| 最近记录: |