英特尔性能和能耗偏好提示

版权:

© 2019 英特尔公司

作者:

Rafael J. Wysocki <rafael.j.wysocki@intel.com>

性能和能耗偏好提示 (EPB) 允许软件指定其在处理器中存在的功耗-性能权衡方面的偏好。通常,EPB 应该由用户空间设置(直接通过 sysfs 或在 x86_energy_perf_policy 工具的帮助下),但是内核更新它有两个原因。

首先,在某些系统中,平台固件会在从睡眠状态到工作状态的系统范围转换期间重置 EPB,从而有效地导致用户空间之前的 EPB 更新丢失。因此,内核需要在系统范围的转换到睡眠状态期间保存所有 CPU 的当前 EPB 值,并在返回工作状态时恢复它们。可以通过在转换到系统睡眠状态期间将辅助 CPU 脱机时保存它们的 EPB,并在 syscore 挂起操作中保存引导 CPU 的 EPB 来实现,以便可以在 syscore 恢复操作中为引导 CPU 恢复它,并在其他 CPU 恢复联机时为它们恢复。但是,当系统范围的 PM 转换开始时已经脱机的 CPU 不会再次脱机,但它们的 EPB 值在转换期间仍可能被平台固件重置,因此实际上有必要保存任何脱机 CPU 的 EPB,并在给定的 CPU 始终返回联机时恢复它。

其次,在许多系统中,来自平台固件的初始 EPB 值为 0(“性能”),至少在某些系统中是这样,因为平台固件根本不初始化 EPB,而是假设操作系统会这样做。这有时会带来问题,因为它可能会导致系统电池消耗过快,例如,因此最好在 CPU 启动时进行调整,如果给定 CPU 的初始 EPB 值为 0,则内核会将其更改为 6(“正常”)。

sysfs 中的英特尔性能和能耗偏好属性

可以通过 sysfs 属性(文件)在 /sys/devices/system/cpu/cpu<N>/power/ 下检查或更新给定(逻辑)CPU 的英特尔性能和能耗偏好提示 (EPB) 值,其中 CPU 编号 <N> 在系统初始化时分配

energy_perf_bias

以 0 - 15 的滑动刻度显示 CPU 的当前 EPB 值,其中值 0 对应于对最高性能的提示偏好,而值 15 对应于最大节能。

为了更新 CPU 的 EPB 值,可以写入此属性,可以使用上面 0 - 15 的滑动刻度中的数字,也可以使用以下字符串之一:“performance”、“balance-performance”、“normal”、“balance-power”、“power”,这些字符串表示它们含义所反映的值。

此属性适用于支持 EPB 功能的所有联机 CPU。

请注意,虽然处理器 EPB 接口是在逻辑 CPU 级别定义的,但支持它的物理寄存器可能由多个 CPU 共享(例如,SMT 对等体或一个封装中的核心)。因此,更新一个 CPU 的 EPB 值可能会导致其他 CPU 的 EPB 值发生更改。