Power management and ACPI options 电源管理和ACPI选项
优质
小牛编辑
121浏览
2023-12-01
Power management and ACPI options
电源管理和ACPI选项
- Suspend to RAM and standby
CONFIG_SUSPEND - "休眠到内存"(ACPI
S3)支持.也就是系统休眠后,除了内存之外,其他所有部件都停止工作,重开机之后可以直接从内存中恢复运行状态.要使用此功能,你需要执行"echo
mem > /sys/power/state"命令,还需要在BIOS中开启S3支持,否则可能会有问题. -
- Enable freezer for suspend to RAM/standby
CONFIG_SUSPEND_FREEZER - 选"Y".除非你知道自己在做什么
- Enable freezer for suspend to RAM/standby
- Hibernation (aka 'suspend to disk')
CONFIG_HIBERNATION - "休
眠到硬盘"(ACPI
S4)支持.也就是将内存的内容保存到硬盘(hibernation),所有部件全都停止工作.要使用此功能,你首先需要使用内核引导参
数"resume=/dev/swappartition",然后执行"echo disk >
/sys/power/state"命令.如果你不想从先前的休眠状态中恢复,那么可以使用"noresume"内核引导参数.更多信息,可以参考"Documentation/power/swsusp.txt"文件. - Default resume partition
CONFIG_PM_STD_PARTITION - 默认的休眠分区.这个分区必须是swap分区.不过这里设置的值会被明确的内核引导参数中的值覆盖.
- Opportunistic sleep
CONFIG_PM_AUTOSLEEP - 这是一种从安卓借鉴过来的休眠方式.
这个特性在安卓系统上被称为"suspend
blockers"或"wakelocks".这是一种更激进的电源管理模式,以尽可能节约电力为目的.系统默认就处于休眠状态,仅为内存和少数唤醒系统
所必须的设备供电,当有任务(唤醒源)需要运行的时候才唤醒相关组件工作,工作完成后又立即进入休眠状态.不过这些特性需要相应的设备驱动程序的支持.目
前除了安卓设备,在PC和服务器领域,能够利用此特性的驱动还比较少,不过这是一项非常有前途的电源技术,喜欢尝鲜的可以考虑开启. - User space wakeup sources interface
CONFIG_PM_WAKELOCKS - 允许用户空间的程序通过sys文件系统接口,创建/激活/撤销系统的"唤醒源".需要与CONFIG_PM_AUTOSLEEP配合使用.
-
- Maximum number of user space wakeup sources (0 = no limit)
CONFIG_PM_WAKELOCKS_LIMIT - 用户空间程序允许使用的"唤醒源"数量,"0"表示无限,最大值是"100000".
- Garbage collector for user space wakeup sources
CONFIG_PM_WAKELOCKS_GC - 对"唤醒源"对象使用垃圾回收.主要用于调试目的和Android环境.
- Maximum number of user space wakeup sources (0 = no limit)
- Run-time PM core functionality[Device power management core functionality]
CONFIG_PM_RUNTIME
CONFIG_PM - 允许IO设备(比如硬盘/网卡/声卡)在系统运行时进入省电模式,并可在收到(硬件或驱动产生的)唤醒信号后恢复正常.此功能通常需要硬件的支持.建议在笔记本/嵌入式等需要节约电力的设备上选"Y".
- Power Management Debug Support
CONFIG_PM_DEBUG - 仅供调试使用
- Enable workqueue power-efficient mode by default
CONFIG_WQ_POWER_EFFICIENT_DEFAULT - 因
为"per-cpu workqueue"的缓存更靠近对应的CPU,所以它比"unbound
workqueue"拥有更好的性能,但另一方面"per-cpu workqueue"通常又比"unbound
workqueue"需要消耗更多的电能.选中此项表示默认开启"workqueue.power_efficient"内核引导参数,以使
用"unbound workqueue"而不是"per-cpu workqueue"以降低功耗,但是性能会有微小的损失. - ACPI (Advanced Configuration and Power Interface) Support
CONFIG_ACPI - 高级配置与电源接口(Advanced Configuration and Power Interface)
包括了软件和硬件方面的规范,目前已被软硬件厂商广泛支持,并且取代了许多过去的配置与电源管理接口,包括 PnP BIOS
(Plug-and-Play BIOS), MPS(CONFIG_X86_MPPARSE), APM(Advanced Power
Management) 等.总之,ACPI已经成为x86平台必不可少的组件,如果你没有特别的理由,务必选中此项. -
- AML debugger interface (EXPERIMENTAL)
CONFIG_ACPI_DEBUGGER - 仅供调试使用.
- Deprecated /proc/acpi files
CONFIG_ACPI_PROCFS - 过时的 /proc/acpi 接口支持,建议关闭.
- Deprecated power /proc/acpi directories
CONFIG_ACPI_PROCFS_POWER - 过时的 /proc/acpi 接口支持,建议关闭.
- Allow supported ACPI revision to be overriden
CONFIG_ACPI_REV_OVERRIDE_POSSIBLE - 某
些笔记本固件会根据操作系统支持的ACPI版本决定硬件的工作模式.例如 Dell XPS 13 (2015) 期望操作系统支持"ACPI
v5"规范,但Linux实际上只支持"ACPI
v4"规范,此时固件会将声卡的工作模式从HDA模式(Linux支持此模式,且为首选模式)转换成I2S模式(次选模式).选中此项后,将强制
Linux内核哄骗固件说它支持"ACPI v5"规范,相当于使用了"acpi_rev_override"内核引导参数. - EC read/write access through /sys/kernel/debug/ec
CONFIG_ACPI_EC_DEBUGFS - 仅供调试使用.
- Deprecated /proc/acpi/event support
CONFIG_ACPI_PROC_EVENT - 过时的 /proc/acpi/event 接口支持,建议关闭.
- AC Adapter
CONFIG_ACPI_AC - 允许在外接交流电源和内置电池之间进行切换.
- Battery
CONFIG_ACPI_BATTERY - 允许通过 /proc/acpi/battery 接口查看电池信息.
- Button
CONFIG_ACPI_BUTTON - 允许守护进程通过 /proc/acpi/event 接口捕获power/sleep/lid(合上笔记本)按钮事件,并执行相应的动作,软关机(poweroff)也需要它的支持.
- Video
CONFIG_ACPI_VIDEO - 对主板上的集成显卡提供ACPI支持.注意:仅支持集成显卡.
- Fan
CONFIG_ACPI_FAN - 允许用户层的程序对风扇进行控制(开/关/查询状态)
- Dock
CONFIG_ACPI_DOCK - 支持兼容ACPI规范的扩展坞(比如 IBM Ultrabay 和 Dell Module Bay)支持.
- Processor
CONFIG_ACPI_PROCESSOR - 在支持 ACPI C2/C3 的CPU上,将ACPI安装为idle处理程序.有几种CPU频率调节驱动依赖于它.而且目前的CPU都已经支持ACPI规范,建议开启此项.
- IPMI
CONFIG_ACPI_IPMI - 允许ACPI使用IPMI(智能平台管理接口)的请求/应答消息访问BMC(主板管理控制器).IPMI通常出现在服务器中,以允许通过诸如ipmitool这样的工具监视服务器的物理健康特征(温度/电压/风扇状态/电源状态).
- Processor Aggregator
CONFIG_ACPI_PROCESSOR_AGGREGATOR - 支持 ACPI 4.0 加入的处理器聚合器(processor Aggregator)功能,以允许操作系统对系统中所有的CPU进行统一的配置和控制.目前只支持逻辑处理器(也就是利用Intel超线程技术虚拟出来的CPU)idling功能,其目标是降低耗电量.不确定的应该选"N".在某些服务器上此驱动(acpi_pad)可能与BIOS中的节能功能冲突
- Thermal Zone
CONFIG_ACPI_THERMAL - ACPI thermal zone 支持.系统温度过高时可以及时调整风扇的工作状态以避免你的CPU被烧毁.目前所有CPU都支持此特性.务必开启.参见CONFIG_THERMAL选项.
- NUMA support
CONFIG_ACPI_NUMA - 通过读取系统固件中的ACPI表,获得NUMA系统的CPU及物理内存分布信息.NUMA系统必选.
- Custom DSDT Table file to include
CONFIG_ACPI_CUSTOM_DSDT_FILE - 允许将一个定制过的DSDT编译进内核.详情参见"Documentation/acpi/dsdt-override.txt"文档.看不懂的请保持空白.
- ACPI tables override via initrd
CONFIG_ACPI_INITRD_TABLE_OVERRIDE - 允许initrd更改 ACPI tables 中的任意内容. ACPI tables 是BIOS提供给OS的硬件配置数据,包括系统硬件的电源管理和配置管理.详情参见"Documentation/acpi/initrd_table_override.txt"文件.
- Debug Statements
CONFIG_ACPI_DEBUG - 详细的ACPI调试信息,不搞开发就别选.
- PCI slot detection driver
CONFIG_ACPI_PCI_SLOT - 将每个PCI插槽都作为一个单独的条目列在 /sys/bus/pci/slots/ 目录中,有助于将设备的物理插槽位置与逻辑的PCI总线地址进行对应.不确定的选"No".
- Power Management Timer Support
CONFIG_X86_PM_TIMER - ACPI PM Timer,
简称"ACPI
Timer",是一种集成在主板上的硬件时钟发生器,提供3.579545MHz固定频率.这是比较传统的硬件时钟发生器(HPET则是比较新型的硬件时
钟发生器),目前所有的主板都支持,而且是ACPI规范不可分割的部分.除非你确定不需要,否则必选. - Container and Module Devices
CONFIG_ACPI_CONTAINER - 支持 NUMA节点/CPU/内存 的热插拔. Device ID: ACPI0004, PNP0A05, PNP0A06 (find /sys/devices/ -name "PNP0A0[56]*" -or -name "ACPI0004*")
- Memory Hotplug
CONFIG_ACPI_HOTPLUG_MEMORY - 内存热插拔支持. Device ID: PNP0C80 (find /sys/devices/ -name "PNP0C80*")
- Smart Battery System
CONFIG_ACPI_SBS - 智能电池系统(Smart Battery System)可以让笔记型电脑显示及管理详细精确的电池状态信息.使用锂电池的笔记本电脑必备利器.但遗憾的是并不是所有笔记本都支持这项特性.
- Hardware Error Device
CONFIG_ACPI_HED - Hardware Error
Device (Device ID: PNP0C33) 能够通过 SCI
报告一些硬件错误(通常是已经被纠正的错误).如果你的系统中有设备ID为"PNP0C33"的设备(find /sys/devices/ -name
"PNP0C33*"),那么就选上. - Allow ACPI methods to be inserted/replaced at run time
CONFIG_ACPI_CUSTOM_METHOD - 允许在不断电的情况下直接对ACPI的功能进行删改,包含一定危险性,它允许root任意修改内存中内核空间的内容.仅用于调试.
- Boottime Graphics Resource Table support
CONFIG_ACPI_BGRT - 在 /sys/firmware/acpi/bgrt/ 中显示 ACPI Boottime Graphics Resource Table ,以允许操作系统获取固件中的启动画面(splash).
- Hardware-reduced ACPI support only
CONFIG_ACPI_REDUCED_HARDWARE_ONLY - 以"reduced hardware"模式编译内核的ACPI代码,从而获得体积更小的内核但仅能运行在ACPI "reduced hardware"模式的硬件上.不确定的选"N".
- ACPI NVDIMM Firmware Interface Table (NFIT)
CONFIG_ACPI_NFIT - 非易失性内存(NVDIMM)支持.此种内存使用超级电容作为后备电力,并且使用非挥发性的flash存储介质来保存数据,以使数据能够在掉电之后依然保存.这是一种很有前途的技术,但是目前笔记本与普通服务器并不使用这种内存.
- ACPI Platform Error Interface (APEI)
CONFIG_ACPI_APEI - 高级平台错误接口(ACPI Platform Error Interface)是RAS(Reliability, Availability and Serviceability)的一部分,是定义在 ACPI 4.0 规范中的一个面向硬件错误管理的接口,主要是为了统一 firmware/BIOS 和 OS 之间的错误交互机制,使用标准的错误接口进行管理,同时也扩展了错误接口的内容以便实现更加灵活丰富的功能.
-
- APEI Generic Hardware Error Source
CONFIG_ACPI_APEI_GHES - "Firmware
First
Mode"支持.由于BIOS/FIRMWARE是平台相关的,因此BIOS/FIRMWARE比OS更清楚硬件平台的配置情况,甚至包含各种必须的修正
/定制/优化.这样,在"Firmware
First"模式下,BIOS/FIRMWARE利用这一优势,可以有针对性的对发生的硬件错误进行分析/处理/分发,也可以更准确的记录错误的现场信
息.这样,不但对硬件错误可以做出更准确,更复杂的处理,而且可以降低OS的复杂性和冗余度.建议开启. - APEI PCIe AER logging/recovering support
CONFIG_ACPI_APEI_PCIEAER - 让 PCIe AER errors 首先通过 APEI firmware 进行报告.
- APEI memory error recovering support
CONFIG_ACPI_APEI_MEMORY_FAILURE - 让 Memory errors 首先通过 APEI firmware 进行报告.
- APEI Error INJection (EINJ)
CONFIG_ACPI_APEI_EINJ - 仅供调试使用.
- APEI Error Record Serialization Table (ERST) Debug Support
CONFIG_ACPI_APEI_ERST_DEBUG - 仅供调试使用
- APEI Generic Hardware Error Source
- Extended Error Log support
CONFIG_ACPI_EXTLOG - 服务器CPU一般都会在非核心寄存器中记录比CONFIG_X86_MCE故障更详细的额外信息,诸如PFA(Predictive Failure Analysis)之类的故障预警系统需要收集这些信息.但由于这些非核心寄存器的位置差别很大没有统一标准,系统软件难以直接读取这些扩展的错误信息.此驱动可以在MCE或CMCI机制之外,将系统固件提供的这些额外扩展错误信息导出到用户空间.不确定的选"N".
- PMIC (Power Management Integrated Circuit) operation region support
CONFIG_PMIC_OPREGION - 电源管理芯片(PMIC)支持.此种芯片常用于以电池作为电源的嵌入式装置.
- AML debugger interface (EXPERIMENTAL)
- SFI (Simple Firmware Interface) Support
CONFIG_SFI - 简单固件接口规范(Simple Firmware Interface)使用一种轻量级的简单方法(通过内存中的一张静态表格)从firmware向操作系统传递信息.目前这个规范仅用于第二代 Intel Atom 平台,其核心名称是"Moorestown".
- CPU Frequency scaling
CONFIG_CPU_FREQ - CPUfreq子系统允许动态改变CPU主频,达到省电和降温的目的.现如今的CPU都已经支持动态频率调整,建议开启.不过,如果你是为虚拟机编译内核,就没有必要开启了,由宿主机内核去控制就OK了.
-
- CPU frequency translation statistics
CONFIG_CPU_FREQ_STAT - 通过sysfs文件系统输出CPU频率变化的统计信息
-
- CPU frequency translation statistics details
CONFIG_CPU_FREQ_STAT_DETAILS - 输出更详细的CPU频率变化统计信息
- CPU frequency translation statistics details
- Default CPUFreq governor
- 默认的CPU频率调节策略.不同策略拥有不同的调节效果.
- 'performance' governor
CONFIG_CPU_FREQ_GOV_PERFORMANCE - '性能'优先,静态的将频率设置为cpu支持的最高频率.最耗电,发热量最大,性能/效率比最低.不建议使用.
- 'powersave' governor
CONFIG_CPU_FREQ_GOV_POWERSAVE - '节能'优
先,静态的将频率设置为cpu支持的最低频率,严重影响性能.[注意]此调节器实际上并不能真正节省电能,因为系统需要花更长的时间才能进入空闲状态
(C1E,C3,C6).但对于CONFIG_X86_INTEL_PSTATE驱动来说,这是效果最佳的调节器. - 'userspace' governor for userspace frequency scaling
CONFIG_CPU_FREQ_GOV_USERSPACE - 既允许手动调整cpu频率,也允许用户空间程序动态调整cpu频率(需要额外的调频软件).比较麻烦,不建议使用.
- 'ondemand' cpufreq policy governor
CONFIG_CPU_FREQ_GOV_ONDEMAND - '
随需应变',内核周期性的考察CPU负载,当CPU负载超过/低于设定的百分比阈值(/sys/devices/system/cpu/cpufreq
/ondemand/up_threshold)时,就自动将cpu频率设为最高/最低值(也就是仅在最高和最低频率间切换),比较适合台式机.[优化建
议]将"up_threshold"设为95左右,可以获得更高的"性能/瓦特"比. - 'conservative' cpufreq governor
CONFIG_CPU_FREQ_GOV_CONSERVATIVE - '
保守',和'ondemand'相似,内核同样周期性的考察CPU负载,但是频率的升降是渐变式的(通常只在相邻的两档频率间切换,但具体取决
于"/sys/devices/system/cpu/cpufreq/conservative/freq_step"的百分比设置,设为"100"则
等价于仅允许在最高和最低频率间切换):当CPU负载超过百分比上限(/sys/devices/system/cpu/cpufreq
/conservative/up_threshold)时,就自动提升一档CPU频率;当CPU负载低于百分比下限(/sys/devices
/system/cpu/cpufreq/conservative/down_threshold)时,就自动降低一档CPU频率.更适合用于笔记本
/PDA/x86_64环境.[优化建议]'conservative'在默认设置下的"性能/瓦特"比通常不如'ondemand'优秀,但是优化设置
之后情况则可能反转.例如,在"down_threshold=93,up_threshold=97"的情况下,可以
比"up_threshold=95"的'ondemand'略有优势. - x86 CPU frequency scaling drivers
- CPU频率调节器驱动
-
- Intel P state control
CONFIG_X86_INTEL_PSTATE - 此驱动是专用于Intel的"Sandy Bridge"/"Ivy Bridge"/"Haswell"/"Broadwell"/"SkyLake"或更新CPU微架构的首选驱动,可以更好的支持"Turbo Boost 2.0"
技术.[注意]此驱动仅支持"performance"与"powersave"(首选)两种频率调节策略(但两者都支持动态频率调整),且"性能/瓦
特"比都优于传统的'ondemand'.[提示]可以通过"echo 1 >
/sys/devices/system/cpu/intel_pstate/no_turbo"关闭睿频加速,进一步降低CPU温度与性能. - Processor Clocking Control interface driver
CONFIG_X86_PCC_CPUFREQ - PCC(Processor Clocking Control)接口支持.此种接口仅对某些HP Proliant系列服务器有意义.更多细节可以参考"Documentation/cpu-freq/pcc-cpufreq.txt"文件.
- ACPI Processor P-States driver
CONFIG_X86_ACPI_CPUFREQ - 此驱动同时支持Intel和AMD的CPU,这是较老的intel cpu与非intel cpu首选的驱动(除非你的CPU是古董级别).[注意]对于可以使用P-state驱动的Intel CPU来说,应该选"N".
-
- Legacy cpb sysfs knob support for AMD CPUs
CONFIG_X86_ACPI_CPUFREQ_CPB - 为了兼容旧的用户空间程序而设置,建议关闭.
- Legacy cpb sysfs knob support for AMD CPUs
- AMD Opteron/Athlon64 PowerNow!
CONFIG_X86_POWERNOW_K8 - 过时的驱动,仅为老旧的K8核心的AMD处理器提供支持.K10以及更新的CPU应该使用CONFIG_X86_ACPI_CPUFREQ驱动.
- AMD frequency sensitivity feedback powersave bias
CONFIG_X86_AMD_FREQ_SENSITIVITY - 如果你使用 AMD Family 16h 或者更高级别的处理器,同时又使用"ondemand"频率调节器,开启此项可以更有效的进行频率调节(在保证性能的前提下更节能).
- Intel Enhanced SpeedStep (deprecated)
CONFIG_X86_SPEEDSTEP_CENTRINO - 已被时代抛弃的驱动,仅对老旧的迅驰平台 Intel Pentium M / XEON 处理器有意义.
- Intel Pentium 4 clock modulation
CONFIG_X86_P4_CLOCKMOD - 已被时代抛弃的驱动,仅对支持老旧的Speedstep技术的 Intel Pentium 4 / XEON 处理器有意义.而且即便是在这样的CPU上,因为种种兼容性问题可能导致的不稳定,也不建议开启.
- Intel P state control
- CPU frequency translation statistics
- CPU idle PM support
CONFIG_CPU_IDLE - CPU idle 指令支持,该指令可以让CPU在空闲时"打盹"以节约电力和减少发热.只要是支持ACPI的CPU就应该开启.由于所有64位CPU都已支持ACPI,所以不必犹豫,开启![提示]为虚拟机编译的内核就没有必要开启了,由宿主机内核去控制就OK了.
-
- Support multiple cpuidle drivers
CONFIG_CPU_IDLE_MULTIPLE_DRIVERS - 允许CONFIG_CPU_IDLE为每个不同的CPU使用不同的驱动.仅在你的系统由多个不同型号的CPU组成,并且具有不同的唤醒潜伏时间和状态的时候才需要开启.
- Support multiple cpuidle drivers
- Cpuidle Driver for Intel Processors
CONFIG_INTEL_IDLE - 专用于Intel CPU的cpuidle驱动.而CONFIG_CPU_IDLE则可用于非Intel的CPU.
- Memory power savings
- 内存节能