Intel 性能和能耗偏向提示

版权:

© 2019 Intel Corporation

作者:

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 中的 Intel 性能和能耗偏向属性

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

energy_perf_bias

显示 CPU 当前的 EPB 值,范围为 0 - 15,其中 0 对应于最高性能的提示偏好,15 对应于最大的节能效果。

为了更新 CPU 的 EPB 值,可以写入此属性,写入一个 0 - 15 范围内的数字,或者写入以下字符串之一:“performance”、“balance-performance”、“normal”、“balance-power”、“power”,这些字符串代表了其含义所反映的值。

此属性存在于所有支持 EPB 功能的在线 CPU 上。

请注意,尽管到处理器的 EPB 接口是在逻辑 CPU 级别定义的,但其背后的物理寄存器可能由多个 CPU 共享(例如,SMT 同级或一个封装中的核心)。因此,更新一个 CPU 的 EPB 值可能会导致其他 CPU 的 EPB 值发生变化。