很多人选择 Intel N100 制作 NAS,看中的就是它宣称的超低待机功耗。然而在实际物理安装黑群晖(DSM 7.x)后,不少人发现整机空载功耗高达 15W - 20W,CPU 的 Package C-State 只能卡在 C2 或 C3,根本无法进入 C8 甚至 C10 状态。
要让 N100 在黑群晖下实现 4W - 6W 的极致待机功耗,必须在主板 BIOS、系统内核参数、外设硬件兼容性三个维度同时做好调优,漏掉任何一步,深层省电机制都会失效。
核心原理:为什么你的 N100 无法进入 C10?
CPU 能否进入深层省电(C8/C10),取决于 ASPM(Active State Power Management,主动状态电源管理)。
简单来说,如果主板上的 PCIe 设备(网卡、SATA 控制器、NVMe 固态硬盘)在空闲时不能主动降低功耗并允许链路进入 L1/L1.1/L1.2 状态,CPU 就会为了维持与这些设备的通信而被迫保持在活跃状态,从而无法“深睡”。
目前市面上主流的 N100 畅网、工控板或 ITX 主板,默认 BIOS 设置和群晖 DSM 默认内核参数对 ASPM 的支持非常保守。我们要做的,就是强行打通这一链路。
第一阶段:主板 BIOS 关键设置(基石)
不同品牌(畅网、倍控、精粤等)的 BIOS 界面略有差异,但底层菜单译名基本一致。开机狂按 Del 键进入 BIOS,找到并修改以下选项:
1. 开启 CPU 深层 C 状态
- 路径:
Advanced->CPU Configuration->CPU Power Management Control - 修改项:
Intel(R) SpeedStep(tm)-> EnabledIntel(R) Speed Shift Technology-> EnabledC-States-> EnabledEnhanced C-states-> EnabledPackage C State Limit-> C10(不要设为 Auto,强行锁死 C10)
2. 强启 PCIe ASPM 链路省电
- 路径:
Advanced->PCI Express Configuration或System Agent (SA) Configuration - 修改项:
Enable PEG/PCH ASPM-> EnabledPCI Express Clock Gating-> EnabledDMI Link ASPM Control-> L1 或 EnabledPCIe Route ASPM-> L1 / Auto (建议手动指定 L1,不要用 L0s)
3. PCH 电源管理
- 路径:
Advanced->PCH-IO Configuration->PCI Express Configuration - 修改项:
- 将所有具体的
PCIe Speed设为 Auto 或 Gen2/Gen3(N100 本身带宽不高,硬设 Gen4 有时会阻碍低功耗协议协商)。 - 将每个 PCIe Port 下的
ASPM选项由 Disable 强行改为 L1。
- 将所有具体的
第二阶段:群晖引导层修改(系统注入)
群晖 DSM 的 Linux 内核默认对非原生硬件的 ASPM 极其保守,甚至会主动关闭未认证设备的 ASPM。我们需要在引导器中强行注入内核参数。
如果你使用的是目前主流的 ARPL / RR 引导:
- 启动黑群晖进入编译引导界面(可通过
IP:5000进入编译菜单,或在群晖内通过 SSH 访问grub.cfg)。 - 找到
CMDLINE或grub添加内核启动参数的位置。 - 在启动参数(通常是
append或linux /vmlinuz那一行的末尾)追加以下关键参数:pcie_aspm=force pcie_aspm.policy=powersavepcie_aspm=force:无视硬件反馈,强制开启所有 PCIe 设备的 ASPM 协议协商。pcie_aspm.policy=powersave:将 ASPM 策略设置为省电模式。
保存并重新编译/启动黑群晖。
第三阶段:排除“不合群”的硬件毒瘤(最关键)
这是 90% 的用户卡在 C3/C6 进不去 C10 的根源。即使 BIOS 和系统都设置好了,只要挂载了一个不支持或兼容性极差的物理设备,ASPM 就会彻底瘫痪。
1. NVMe 固态硬盘
部分国产廉价 SSD(如早期采用联韧、慧荣主控的部分型号)和部分企业级 SSD 功耗极高,它们在 Linux 下完全不支持 APST/ASPM,直接堵死 C-State。
- 避坑指南:建议使用致态(TiPlus5000/7000 系列)、三星(970 EVO Plus/980)、西数(SN570/SN580)等在 Linux 下省电机制支持较好的固态硬盘。
2. ASM1166 SATA 扩展芯片
很多 4 盘位、6 盘位的 N100 NAS 板载了 ASM1166 用于转接 SATA 接口。原生 ASM1166 固件默认关闭了 ASPM,这会导致整机死卡在 C3 状态。
- 解决方案:需要单独下载 ASM1166 的可开启 ASPM 固件(通常为 211124_00_00_00.bin 或更新版本),在 Windows 环境下用
ASM1166MPTool刷入。如果不刷固件,即使在系统里强开也无济于事。
3. RTL8125BG 2.5G 网卡
黑群晖下由于使用了社区第三方网卡驱动(如 r8125),有些驱动默认是不启用 ASPM 的。
在群晖内可以通过以下命令检查网卡 ASPM 状态:
lspci -vvv | grep -A 8 -i "Ethernet controller"
如果看到 LnkCap: ASPM L0s L1 但下面 LnkCtl: ASPM Disabled,说明驱动未成功开启。
可以通过在群晖启动脚本(通过控制面板 -> 任务计划 -> 触发的任务 -> 脚本)中加入以下指令强开:
echo "powersave" > /sys/class/net/eth0/device/power/control
(注意:请根据实际网卡名称将 eth0 修改为你的主网卡,如 eth0、eth1)
第四阶段:如何验证是否真正吃满 C10?
在黑群晖(DSM)下,我们无法直观看到 CPU 当前的 C-State。最精准的方法是使用 powertop 工具。
由于群晖套件源不一定自带 powertop,推荐通过 Docker 部署容器 来直接抓取物理机状态,步骤如下:
- 在群晖 Container Manager(Docker)中下载
debian或ubuntu镜像。 - 运行容器,务必勾选“使用高权限执行容器” (Privileged),并在网络模式中选择 Host 模式。
- 进入容器的终端(Terminal),依次执行以下命令:
apt-get update apt-get install -y powertop pciutils powertop - 进入
powertop界面后,使用左右方向键切换到 Idle stats 页面。
在这里,你可以清晰地看到 CPU 各个核心以及 Package 的状态占比:
| Disabled
| Active
| C1 (MWAIT 1)
| C1E (MWAIT 2)
| C2 (MWAIT 3)
| C3 (MWAIT 4)
| C6 (MWAIT 5)
| C8 (MWAIT 6)
Package | C10 (MWAIT 7) <-- 观察这一行的百分比!
- 如果 Package C10 占比能够达到 50% - 90%,说明调优大功告成,你的 N100 已经进入了最完美的省电状态。
- 如果 Package 这一栏最高只能卡在 C2 或 C3,说明仍有 PCIe 设备在不断唤醒 CPU,需要返回第三阶段重点排查 NVMe SSD 和外接网卡/SATA 控制器。
💡 终极一招:进入 Device stats 页面排查
在 powertop 中切换到 Device stats 页面,观察最上面功耗占比和活动频率最高的硬件(如 PCI Device 某一栏显示 100% Active),那它就是阻止系统深睡的“元凶”,直接针对性拔除或更换即可。