nmcli不支持配置网口节能项,必须用ethtool操作硬件寄存器;启用eee前需确认网卡、驱动、对端设备三者均支持,通过sudo ethtool --show-eee enp0s3检查supports eee: yes和eee active: yes,并确保link partner eee非零值,否则协商失败。

nmcli 不支持配置网口节能项,必须用 ethtool 操作硬件寄存器;启用 EEE(Energy Efficient Ethernet)前得先确认网卡、驱动、对端设备三者都支持,否则命令执行成功但实际不生效。
怎么确认网卡是否支持并已启用 EEE
先查网卡名,再用 ethtool --show-eee 看状态:
-
nmcli device status | grep ethernet或ip link show | grep "state UP"找出物理网卡名(如enp0s3、eno1) - 执行
sudo ethtool --show-eee enp0s3,关键字段含义:-
Supports EEE: Yes→ 硬件+驱动支持 -
EEE active: yes→ 链路已协商启用(需对端也支持且开启) -
Link partner EEE: 0x00000000→ 对端不支持或未开启,此时EEE active必为no
-
- 若显示
Operation not supported,说明该网卡驱动不提供--set-eee接口(常见于部分 Realtek 或老旧 Intel 芯片),只能靠 BIOS/固件控制或放弃
如何启用或禁用 EEE(含 tx-lpi)
启用 EEE 的本质是打开节能协商 + 启用发送端低功耗空闲(tx-lpi),部分网卡还需显式开 rx-lpi:
- 启用完整 EEE:
sudo ethtool --set-eee enp0s3 eee on tx-lpi on - 仅启用 tx-lpi(不触发链路重协商):
sudo ethtool --set-eee enp0s3 tx-lpi on - 禁用:
sudo ethtool --set-eee enp0s3 eee off - 注意:部分网卡(如某些 i225-V)要求先关再开才能生效,即先
eee off,再eee on tx-lpi on
如何让 EEE 设置重启后仍然有效
ethtool 命令默认只影响当前会话,持久化必须靠系统级机制。不同发行版方案差异大,别硬套通用脚本:
- Debian/Ubuntu:
/etc/network/interfaces中对应接口下加一行post-up /usr/bin/ethtool --set-eee enp0s3 eee on tx-lpi on - RHEL/CentOS 7+:
/etc/sysconfig/network-scripts/ifcfg-enp0s3中添加ETHTOOL_OPTS="--set-eee eee on tx-lpi on" - 通用推荐(systemd):建服务
/etc/systemd/system/enable-eee@.service,ExecStart调用ethtool,然后sudo systemctl enable enable-eee@enp0s3.service - 切忌在
/etc/rc.local里直接写ethtool—— NetworkManager 可能还没接管网卡,命令会失败或被覆盖
为什么设置了 EEE 却没效果
常见失效原因不是命令输错,而是链路层协同失败:
- 对端交换机/网卡未开启 EEE(尤其家用路由器、老款企业交换机默认关闭)
- 网线质量差或长度超限(EEE 对 PHY 层信噪比敏感,Cat5e 以上且 ≤30m 更稳)
- 内核版本过低(
ethtool --set-eee在较新驱动中才稳定,建议 kernel ≥5.4) - 启用后延迟升高或小包丢包:EEE 切换 LPI 状态有微秒级唤醒延迟,对实时性要求高的场景(如音视频流、高频交易)应禁用
ethtool --show-eee 就永远显示 EEE active: no。











