Linux 中是否有任何方法可以查看以太网自动协商是否正在进行或已经终止?
例如,我发现在我的网络中,当我将 1Gb 接口的管理状态设置为“启动”后,需要 3 到 4 秒才能正确更新其链路状态。
目前,我看到如果接口关闭、协商正在进行以及协商完成后协商的速度值,则会/sys/class/net/$eth/speed
产生收益。这可能是解决方案的初步近似值。还有比这更精确的吗?invalid argument
-1
顺便说一句,/sys/class/net/$eth/operstate
既是down
何时speed
又-1
是 何时invalid value
,所以我不能使用它。
答案1
看起来我们可以使用“ethtool”和“perf”来获得您需要的东西。
来自 ethtool 手册页:
-r——协商
如果启用了自动协商,则重新启动指定以太网设备上的自动协商。
要了解有关 perf 命令的更多信息,请访问 Brendan Gregg 的网站: http://www.brendangregg.com/perf.html
我们可以对 ethtool 重新协商进行性能记录:
# perf record ethtool -r <interface>
然后显示报告
# perf report --stdio
在使用 Intel e1000 驱动程序的虚拟机上,我得到了报告的这些结果......您的结果可能会有所不同。
# Overhead Command Shared Object Symbol
# ........ ....... ................. .....................................
#
17.39% ethtool [kernel.kallsyms] [k] e1000_raise_ee_clk.isra.7
13.04% ethtool [kernel.kallsyms] [k] __lock_text_start
13.04% ethtool [kernel.kallsyms] [k] delay_tsc
13.04% ethtool [kernel.kallsyms] [k] e1000_shift_in_ee_bits
8.70% ethtool [kernel.kallsyms] [k] e1000_lower_ee_clk.isra.8
4.35% ethtool [kernel.kallsyms] [k] e1000_acquire_eeprom
4.35% ethtool [kernel.kallsyms] [k] e1000_configure_rx
4.35% ethtool [kernel.kallsyms] [k] e1000_init_hw
4.35% ethtool [kernel.kallsyms] [k] e1000_release_eeprom
4.35% ethtool [kernel.kallsyms] [k] e1000_standby_eeprom
4.35% ethtool [kernel.kallsyms] [k] finish_task_switch
4.35% ethtool [kernel.kallsyms] [k] kmem_cache_free
4.35% ethtool [kernel.kallsyms] [k] native_read_tsc