平台配置选择(例如 /sys/firmware/acpi/platform_profile)

在现代系统中,平台性能、温度、风扇以及其他硬件相关特性通常是可以动态配置的。平台配置通常由某种自动机制(该机制很可能位于内核之外)根据当前条件进行自动调整。

这些自动平台调整机制通常可以通过几种平台配置(platform profiles)之一进行配置,偏向于低功耗运行或偏向于性能。

platform_profile 属性的目的是提供一个通用的 sysfs API,用于选择这些自动机制的平台配置。

请注意,此 API 仅用于选择平台配置,其目的**不是**允许监控由此产生的性能特性。性能监控最好通过设备/供应商特定的工具来完成,例如 turbostat。

具体来说,当选择高性能配置时,实际达到的性能可能会受到多种因素的限制,例如:其他组件产生的热量、室温、笔记本电脑底部的空气流通情况等。明确一点,此 API 的目的**不是**让用户空间了解任何阻碍达到请求性能水平的次优条件。

由于数字本身无法表示配置文件将调整的多个变量(功耗、发热量等),因此该 API 使用字符串来描述各种配置文件。为了确保用户空间获得一致的体验,sysfs-platform_profile ABI 文档定义了一组固定的配置文件名称。驱动程序必须将其内部配置文件表示映射到这组固定的名称上。

如果映射时没有合适的匹配项,则可以添加新的配置文件名称。希望引入新配置文件名称的驱动程序必须

  1. 解释为什么不能使用现有的配置文件名称。

  2. 将新的配置文件名称及其预期行为的清晰描述添加到 sysfs-platform_profile ABI 文档中。

“自定义”(Custom)配置支持

platform_profile 类还支持通告“自定义”配置的配置文件。这旨在由驱动程序设置,当驱动程序中的设置被修改,以至于标准配置文件无法表示当前状态时使用。

多驱动程序支持

当系统上的多个驱动程序通告一个平台配置处理程序(handler)时,平台配置处理程序核心只会向 /sys/firmware/acpi 接口通告所有驱动程序共有的配置文件。

这是为了确保当并非所有处理程序都支持某个配置文件时,配置文件名称的含义不会产生歧义。

各个驱动程序将注册一个 ‘platform_profile’ 类设备,该设备具有与 /sys/firmware/acpi/platform_profile 接口类似的语义。

要发现哪个驱动程序与平台配置处理程序相关联,用户可以读取类设备的 name 属性。

要从类接口发现可用的配置文件,用户可以读取 choices 属性。

如果用户想要为特定驱动程序选择配置文件,可以通过写入驱动程序的类设备的 profile 属性来实现。

这将允许用户在同一系统上为不同的驱动程序设置不同的配置文件。如果各个驱动程序选择的配置文件不同,平台配置处理程序核心将显示配置文件 ‘custom’,以表明这些配置文件不一致。

platform_profile 属性的值为 custom 时,将 platform_profile_choices 中的通用配置文件写入平台配置处理程序核心的 platform_profile 属性,将为所有驱动程序设置该配置文件。