14.6.电源和资源管理
在高效利用硬件资源方面非常重要。功耗和资源管理使操作系统能够监视系统限制,并可能根据与这些限制相关的事件运行一些动作。
14.6.1. ACPI 配置
在 FreeBSD 上,这些资源的管理由 acpi(4)内核设备管理。
在 FreeBSD 中,acpi(4)驱动程序默认在系统启动时加载。 此驱动程序在启动后无法卸载,因为系统总线在各种硬件交互中使用它。 |
除了 acpi(4)之外,FreeBSD 还有几个专用的内核模块用于各种 ACPI 供应商子系统。这些模块将增加一些额外功能,如风扇速度、键盘背光或屏幕亮度。
可通过运行以下命令获取列表:
输出应类似于以下内容:
如果使用 IBM/Lenovo 笔记本电脑,将需要通过执行以下命令加载模块 acpi_ibm(4):
并将此行添加到 /boot/loader.conf 以在启动时加载它:
ACPI_VIDEO(4)模块的替代品是背光(9)驱动程序。它提供了一种处理面板背光的通用方法。默认的 GENERIC 内核包含此驱动程序。背光(8)实用程序可用于查询和调整面板背光的亮度。在此示例中,亮度减少了 10%。
14.6.2. CPU 功耗管理
CPU 是系统中功耗最大的部分。知道如何提高 CPU 效率是系统中省电的一个基本部分。
为了正确地利用机器的资源,FreeBSD 通过 powerd(8)和 cpufeq(4)支持诸如 Intel Turbo Boost、AMD Turbo Core、Intel Speed Shift 等技术。
第一步是通过执行以下命令获取 CPU 信息:
输出应该类似于以下内容:
用于使 CPU 处于空闲状态的最低 Cx 状态。 | |
---|---|
CPU 支持的 Cx 状态。 | |
目前 CPU 的可用级别(频率/功耗)。 | |
CPU 当前活跃频率(MHz)。 | |
CPU 当前温度。 |
如 CPU 信息可用,配置节能的最简单方法就是让 powerd(8) 接管。
在 /etc/rc.conf 中启用 powerd(8) 服务以在系统启动时启动:
需要指定一些参数给 powerd(8),告诉它如何管理执行以下命令的 CPU 状态。
-a :选择在交流电源下使用的模式。
hiadaptive :操作模式。更多信息请参阅 powerd(8)。
-i :指定自适应模式开始降低性能以节省电源的 CPU 负载百分比水平。
-r :指定自适应模式应考虑 CPU 运行并增加性能的 CPU 负载百分比水平。
-N :将“nice”时间视为负载计算中的空闲时间;即,如果 CPU 仅忙于“nice”进程,则不增加 CPU 频率。
然后执行以下命令启用服务:
14.6.3. CPU 频率控制
FreeBSD 包括通用的 cpufreq(4) 驱动程序,能让管理员或软件(如 powerd(8) 和 sysutils/powerdxx)管理 CPU 的频率,以实现所需的性能和经济之间的平衡。较低的设置会节省电力,同时减少 CPU 产生的热量。较高的设置会增加性能,但会增加额外的功耗和产生更多的热量。
14.6.4. Intel® 提高速度步进™
Intel® 提高速度步进™ 驱动程序 est(4) 取代了为提供此功能的 CPU 提供的通用 cpufreq(4) 驱动程序。可以使用 sysctl(8) 静态调整 CPU 频率,或者使用 /etc/rc.d/power_profile 启动脚本。还可以使用附加软件,如 powerd(8) 或 sysutils/powerdxx,根据处理器利用率自动调整 CPU 频率。
通过检查 sysctl(3) 树,可以列出每个受支持的频率及其预期功耗。
输出应与以下内容类似:
CPU 的最大频率高于 1 MHz 表示 Intel® Turbo Boost™ 功能。
14.6.5. Intel Speed Shift™
运行更新的 Intel® CPU 的用户在升级到 FreeBSD 13 时可能会发现动态频率控制方面存在一些差异。适用于某些 SKU 的 Intel® Speed Shift™功能集的新驱动程序公开了硬件动态变化核心频率的能力,包括按核心的基础。FreeBSD 13 配备了 hwpstate_intel(4)驱动程序,可自动启用配备的 CPU 上的 Speed Shift™控制,取代了旧的 Enhanced Speed Step™ est(4)驱动程序。sysctl(8) dev.cpufreq.%d.freq_driver 将指示系统是否正在使用 Speed Shift。
要确定正在使用哪个频率控制驱动程序,请检查 dev.cpufreq.0.freq_driver oid。
输出应类似于以下内容:
这表示新的 hwpstate_intel(4)驱动程序正在使用。在这种系统上,oid dev.cpu.%d.freq_levels 将只显示最大 CPU 频率,并指示功耗水平为 -1。
当前 CPU 频率可以通过检查 dev.cpu.%d.freq oid 来确定。
输出应类似于以下内容:
有关更多信息,请参阅 man 手册 hwpstate_intel(4),包括如何平衡性能和能量使用以及如何禁用此驱动程序。
14.6.6. 显卡功耗管理
近年来,显卡已经成为计算中不可或缺的部分。一些显卡可能有过高的功耗。FreeBSD 能让通过某些配置来改善功耗。
如果使用 Intel®显卡与图形/drm-kmod 驱动程序,可以在/boot/loader.conf 中添加这些选项:
尝试在启动时跳过不必要的模式设置。 | |
---|---|
启用节能显示 C 状态。 | |
启用帧缓冲压缩以节省电能 |
14.6.7. 暂停/恢复
暂停/恢复功能能让将计算机保持在能耗较低的状态,并且能让在不丢失运行程序状态的情况下恢复系统。
为了使暂停/恢复功能正常工作,必须在系统上加载图形驱动程序。在不支持 KMS 的图形卡中,必须使用 sc(4)以避免破坏暂停/恢复功能。 关于使用哪个驱动程序以及如何配置它的更多信息,请参阅 X Window System 章节。 |
acpi(4)支持下一个睡眠状态列表:
支持的睡眠状态表
S1 | 快速挂起到 RAM。CPU 进入较低的功率状态,但大多数外围设备仍在运行。 |
---|---|
S2 | 比 S1 更低的电源状态,但具有相同的基本特征。许多系统不支持。 |
S3(睡眠模式) | 休眠到 RAM。大多数设备已关闭电源,系统除了内存刷新外停止运行。 |
S4(深度休眠) | 写磁盘以及电源关闭,所有的设备都被关闭,系统停止运行。在恢复时,系统将如同从冷启动一样启动。FreeBSD 尚不支持。 |
S5 | 系统将干净关机并关机。 |
14.6.7.1. 配置挂起/恢复
第一步将是了解所用硬件支持的睡眠状态类型,执行以下命令:
输出应类似于以下内容:
可以使用 acpiconf(8)来检查 S3 状态是否正常工作,运行以下命令,如果成功,屏幕应该变黑,机器将关闭:
在绝大多数情况下,挂起/恢复功能是用于笔记本电脑的。
FreeBSD 可以通过将以下行添加到/etc/sysctl.conf 文件来配置在关闭盖子时进入 S3 状态。
14.6.7.2. 在暂停/恢复中的故障排除
在 FreeBSD 上已经付出了大量的努力,使暂停和恢复功能能够在某些特定的笔记本电脑上正常工作。
有些检查可以在它不正常工作的情况下进行。
在某些情况下,关闭蓝牙就足够了。在其他情况下,加载正确的显卡驱动程序就足够了,等等。
如果它工作不正常,一些提示可以在 FreeBSD Wiki 的休眠/恢复部分找到。
最后更新于