nmcli不能配置网卡节能项,因为其仅管理连接抽象层(IP、路由、DHCP等),不触达MAC/PHY层寄存器或驱动私有ioctl接口;EEE、LPI、ASPM等硬件级电源管理特性必须通过ethtool、setpci或内核参数控制。

nmcli 不能配置网卡节能项,包括 EEE、LPI、ASPM 等。这些是硬件级电源管理特性,必须用 ethtool、setpci 或内核参数控制。
为什么 nmcli 对网卡节能无效
nmcli 能管的,其实是 NetworkManager 这一层的“连接配置”——比如 IP 地址、路由、DHCP、认证,以及 Wi‑Fi 连接这些内容。可再往下,它就不负责了:既不会去碰 MAC/PHY 层的寄存器,也不会调用驱动私有的 ioctl 接口。像 EEE、TX/RX LPI、Autosuspend 这类节能开关,本质上都在驱动或固件层,NetworkManager 默认也不会介入。
- 执行
nmcli device show enp0s3不会显示任何节能相关字段 nmcli connection modify没有eee、lpi、aspm等参数选项- 试图在
ifcfg-或 Netplan 中添加节能配置会被静默忽略
用 ethtool 启用 EEE 和 LPI(最常见场景)
EEE(Energy Efficient Ethernet)和 TX/RX LPI(Low Power Idle)需通过 ethtool --set-eee 控制,且依赖链路两端协商。不是“开了就省电”,而是“空闲时自动降频+降低信号幅度”。
- 先确认支持:
ethtool --show-eee enp0s3—— 若Supports EEE: Yes但EEE active: no,说明对端(交换机/另一台设备)未启用或不支持 - 启用 EEE + TX LPI:
sudo ethtool --set-eee enp0s3 eee on tx-lpi on - 部分网卡(如某些 Realtek RTL8125/RTL8168)需额外开启 RX LPI:
sudo ethtool --set-eee enp0s3 rx-lpi on - 禁用(调试用):
sudo ethtool --set-eee enp0s3 eee off - 注意:
--set-eee在较老内核(<5.4)或特定驱动(如 igb、e1000e 的旧版本)上可能报错Operation not supported,此时只能靠 BIOS 设置或固件更新
让节能设置重启后仍生效
ethtool 命令默认只作用于当前运行时。要持久化,不能靠 NetworkManager 或 nmcli,必须绕过它直接干预启动流程。
- Systemd 服务(推荐,通用性强):创建
/etc/systemd/system/enable-eee@.service,ExecStart调用ethtool --set-eee %I eee on tx-lpi on,然后sudo systemctl enable enable-eee@enp0s3 - Debian/Ubuntu:
post-up写入/etc/network/interfaces(仅适用于 ifupdown 管理的接口,不适用于 NetworkManager 默认接管的系统) - RHEL/CentOS:
ETHTOOL_OPTS="--set-eee eee on tx-lpi on"加入/etc/sysconfig/network-scripts/ifcfg-enp0s3(同样要求 NetworkManager 不接管该连接) - 关键点:NetworkManager 和 ifupdown 互斥;若你用
nmcli管理连接,上述 ifcfg/post-up 方式将被忽略 —— 必须用 systemd 服务或 dispatcher 脚本
其他节能项:ASPM、PCIe LTR、USB autosuspend
除了以太网 PHY 层节能,还有 PCIe 总线级节电机制,比如 ASPM(Active State Power Management),它由内核和固件协同控制,ethtool 不涉及。
- 查看 ASPM 状态:
lspci -vv -s 0000:00:1f.6 | grep ASPM(替换为你的网卡 PCI 地址) - 强制启用 ASPM(需 BIOS 允许):
echo "powersa ve" | sudo tee /sys/module/pcie_aspm/parameters/policy(临时) - USB 网卡节能:
echo auto | sudo tee /sys/bus/usb/devices/*/power/level,但可能引发唤醒延迟 - 警告:强行启用 ASPM 或 LTR 可能导致某些网卡(尤其是 Intel I210/I225)出现链路不稳定、重连或丢包,务必在业务低峰验证
真正能把节能效果做出来的配置,几乎都不在 NetworkManager 的图形界面里。关键往往藏得更深:可能是 ethtool 对寄存器的写入,可能是 setpci 对偏移地址的操作,也可能干脆就在内核启动参数里。更容易被忽视的其实是这一点:EEE 到底有没有生效,不是看本地开关点没点,而是看链路两端有没有完成同步协商——如果交换机那一侧没开,你这边单独启用,基本就是白费功夫。