amd-pstate
CPU 性能缩放驱动程序¶
- 版权:
© 2021 Advanced Micro Devices, Inc.
- 作者:
黄睿 <ray.huang@amd.com>
简介¶
amd-pstate
是 AMD CPU 性能缩放驱动程序,它在 Linux 内核中引入了现代 AMD APU 和 CPU 系列的全新 CPU 频率控制机制。新机制基于协作处理器性能控制 (CPPC),该机制提供了比传统 ACPI 硬件 P 状态更精细的频率管理。当前的 AMD CPU/APU 平台正在使用 ACPI P 状态驱动程序来管理 CPU 频率和时钟,并且仅在 3 个 P 状态下切换。CPPC 取代了 ACPI P 状态控制,并为 Linux 内核提供了一个灵活的低延迟接口,以直接将性能提示传递给硬件。
amd-pstate
利用 Linux 内核调速器(例如 schedutil
、ondemand
等)来管理性能提示,这些提示由 CPPC 硬件功能提供,这些功能在内部遵循硬件规范(有关详细信息,请参阅 AMD64 架构程序员手册第 2 卷:系统编程 [1])。目前,amd-pstate
根据内核调速器在某些 Zen2 和 Zen3 处理器上支持基本频率控制功能,并且我们将在硬件和 SBIOS 上验证它们后,在未来实现更多 AMD 特定功能。
AMD CPPC 概述¶
协作处理器性能控制 (CPPC) 接口枚举一个连续的、抽象的和无单位的性能值,该值的范围不与特定的性能状态/频率相关联。这是一个 ACPI 标准 [2],软件可以将应用程序性能目标和提示指定为相对于基础设施限制的相对目标。AMD 处理器为性能调整提供了低延迟寄存器模型 (MSR),而不是 AML 代码解释器。amd-pstate
将初始化一个 struct cpufreq_driver
实例 amd_pstate_driver
,其中包含用于管理每个性能更新行为的回调。
Highest Perf ------>+-----------------------+ +-----------------------+
| | | |
| | | |
| | Max Perf ---->| |
| | | |
| | | |
Nominal Perf ------>+-----------------------+ +-----------------------+
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | Desired Perf ---->| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
Lowest non- | | | |
linear perf ------>+-----------------------+ +-----------------------+
| | | |
| | Lowest perf ---->| |
| | | |
Lowest perf ------>+-----------------------+ +-----------------------+
| | | |
| | | |
| | | |
0 ------>+-----------------------+ +-----------------------+
AMD P-States Performance Scale
AMD CPPC 性能能力¶
最高性能 (RO)¶
这是单个处理器在理想条件下可能达到的绝对最大性能。此性能水平可能无法长时间维持,并且可能只有在其他平台组件处于特定状态时才能实现;例如,它可能需要其他处理器处于空闲状态。这相当于处理器支持的最高频率。
标称(保证)性能 (RO)¶
这是处理器在理想操作条件下的最大持续性能水平。在没有外部约束(电源、散热等)的情况下,这是处理器预期能够持续保持的性能水平。所有内核/处理器都应能够同时维持其标称性能状态。
最低非线性性能 (RO)¶
这是实现非线性节能的最低性能水平,例如,由于电压和频率缩放的综合影响。高于此阈值,较低的性能水平通常应比更高的性能水平更节能。此寄存器有效地将最有效的性能水平传达给 amd-pstate
。
最低性能 (RO)¶
这是处理器的绝对最低性能水平。选择低于最低非线性性能水平的性能水平可能会导致效率损失,但应降低处理器的瞬时功耗。
AMD CPPC 性能控制¶
amd-pstate
通过这些寄存器传递性能目标。该寄存器驱动所需性能目标的行为。
最低请求性能 (RW)¶
amd-pstate
指定允许的最低性能水平。
最大请求性能 (RW)¶
amd-pstate
指定硬件预期提供的最大性能限制。
期望的性能目标 (RW)¶
amd-pstate
在 CPPC 性能范围内指定所需的相对目标。这可以表示为标称性能(基础设施最大值)的百分比。在标称持续性能水平以下,期望的性能表示受硬件约束的处理器平均性能水平。在标称性能水平以上,处理器必须提供至少请求的标称性能,并且如果当前运行条件允许,则会更高。
能量性能偏好 (EPP) (RW)¶
此属性为软件提供了一个提示,如果软件倾向于性能(0x0)或能效(0xff)。
关键调速器支持¶
amd-pstate
可以与 sysfs
中 scaling_available_governors
策略属性列出的所有(通用)缩放调速器一起使用。然后,它负责配置与 CPU 对应的策略对象,并为 CPUFreq
核心(以及附加到策略对象的缩放调速器)提供硬件支持的最大和最小工作频率的准确信息。用户可以检查 scaling_cur_freq
信息是否来自 CPUFreq
核心。
amd-pstate
主要支持 schedutil
和 ondemand
进行动态频率控制。它是为了在 amd-pstate
上微调处理器配置以适应带有 CPU CFS 调度器的 schedutil
。amd-pstate
注册 adjust_perf 回调,以实现类似于 CPPC 的性能更新行为。它由 sugov_start
初始化,然后填充 CPU 的 update_util_data 指针,以将 sugov_update_single_perf
分配为 CPU 调度器中的利用率更新回调函数。CPU 调度器将调用 cpufreq_update_util
并根据利用率更新所属的 struct sugov_cpu
分配目标性能。然后,amd-pstate
根据 CPU 调度器分配的结果更新所需的性能。
处理器支持¶
如果检测到的处理器中 ACPI SBIOS 中的 _CPC
条目不存在,则 amd-pstate
初始化将失败。它使用 acpi_cpc_valid
检查 _CPC
的存在。所有基于 Zen 的处理器都支持传统的 ACPI 硬件 P 状态功能,因此当 amd-pstate
初始化失败时,内核将回退到初始化 acpi-cpufreq
驱动程序。
amd-pstate
有两种硬件实现类型:一种是 完整 MSR 支持,另一种是 共享内存支持。它可以使用 X86_FEATURE_CPPC
功能标志来指示不同的类型。(有关详细信息,请参阅 AMD Family 19h Model 51h,Revision A1 处理器的处理器编程参考 (PPR) [3]。)amd-pstate
是为不同的硬件实现注册不同的 static_call
实例。
目前,一些 Zen2 和 Zen3 处理器支持 amd-pstate
。未来,它将在越来越多的 AMD 处理器上得到支持。
完整 MSR 支持¶
一些新的 Zen3 处理器(如 Cezanne)直接提供 MSR 寄存器,同时设置了 X86_FEATURE_CPPC
CPU 功能标志。amd-pstate
可以处理 MSR 寄存器,以在 CPUFreq
中实现快速切换功能,从而减少中断上下文中频率控制的延迟。带有 pstate_xxx
前缀的函数表示对 MSR 寄存器的操作。
sysfs
中的用户空间接口 - 每个策略的控制¶
amd-pstate
在 sysfs
中公开了几个全局属性(文件)来控制其在系统级别的功能。它们位于 /sys/devices/system/cpu/cpufreq/policyX/
目录中,并影响所有 CPU。
root@hr-test1:/home/ray# ls /sys/devices/system/cpu/cpufreq/policy0/*amd*
/sys/devices/system/cpu/cpufreq/policy0/amd_pstate_highest_perf
/sys/devices/system/cpu/cpufreq/policy0/amd_pstate_lowest_nonlinear_freq
/sys/devices/system/cpu/cpufreq/policy0/amd_pstate_max_freq
amd_pstate_highest_perf / amd_pstate_max_freq
驱动程序允许设置的最大 CPPC 性能和 CPU 频率,以最大支持的 CPPC 性能水平(AMD CPPC 性能能力中支持的最高性能)的百分比表示。在某些 ASIC 中,最高的 CPPC 性能不是 _CPC
表格中的性能,因此我们需要将其公开给 sysfs。如果 boost 未激活,但仍然受支持,则此最大频率将大于 cpuinfo
中的频率。此属性是只读的。
amd_pstate_lowest_nonlinear_freq
驱动程序允许设置的最低非线性 CPPC CPU 频率,以最大支持的 CPPC 性能水平的百分比表示。(请参阅 AMD CPPC 性能能力中的最低非线性性能。)此属性是只读的。
amd_pstate_hw_prefcore
平台是否支持首选核心功能并且已启用。此属性是只读的。
amd_pstate_prefcore_ranking
核心的性能排名。此数字没有单位,但在读取时较大的数字更受欢迎。这可能会在运行时根据平台条件而变化。此属性是只读的。
energy_performance_available_preferences
可用于此系统上的 energy_performance_preference
的所有受支持 EPP 首选项的列表。这些配置文件代表向低级固件提供的关于用户期望的能量与效率权衡的不同提示。default
表示 epp 值由平台固件设置。此属性是只读的。
energy_performance_preference
可以从此属性读取当前的能量性能首选项。用户可以根据能源或性能需求更改当前首选项。请从 energy_performance_available_preferences
属性获取所有支持的配置文件列表,当平台固件启用 EPP 功能时,所有配置文件都是定义在 0 到 255 之间的整数值,如果禁用 EPP 功能,驱动程序将忽略写入的值。此属性是可读写的。
boost
boost sysfs 属性提供了对 CPU 内核性能提升的控制,允许用户管理 CPU 的最大频率限制。此属性可用于在单个 CPU 上启用或禁用 boost 功能。
启用 boost 功能后,CPU 可以将其频率动态提高到基本频率以上,从而为要求苛刻的工作负载提供增强的性能。另一方面,禁用 boost 功能会将 CPU 限制为以基本频率运行,这在某些情况下可能需要优先考虑功率效率或管理温度。
要操作 boost 属性,用户可以写入值 0 以禁用 boost 或写入值 1 以启用 boost,对于使用 sysfs 路径 /sys/devices/system/cpu/cpuX/cpufreq/boost 的相应 CPU,其中 X 表示 CPU 编号。
其他性能和频率值可以从 /sys/devices/system/cpu/cpuX/acpi_cppc/
中读回,请参阅 CPPC。
amd-pstate
与 acpi-cpufreq
¶
在 acpi-cpufreq
支持的大多数 AMD 平台上,平台固件提供的 ACPI 表用于 CPU 性能缩放,但在 AMD 处理器上仅提供 3 个 P 状态。但是,在现代 AMD APU 和 CPU 系列中,硬件根据 ACPI 协议提供协作处理器性能控制,并针对 AMD 平台对其进行自定义。也就是说,细粒度和连续的频率范围,而不是传统的硬件 P 状态。amd-pstate
是内核模块,它在大多数未来的 AMD 平台上支持新的 AMD P 状态机制。AMD P 状态机制是 AMD 处理器上性能更高、能效更高的频率管理方法。
amd-pstate
驱动程序操作模式¶
amd_pstate
CPPC 有 3 种操作模式:自主(主动)模式、非自主(被动)模式和引导自主(引导)模式。可以使用不同的内核参数选择主动/被动/引导模式。
在自主模式下,平台忽略所需的性能级别请求,仅考虑设置给最小、最大和能量性能首选项寄存器的值。
在非自主模式下,平台直接通过“所需性能”寄存器从操作系统获取所需的性能级别。
在引导自主模式下,平台根据当前工作负载并在操作系统通过最小和最大性能寄存器设置的限制内自主设置工作性能级别。
主动模式¶
amd_pstate=active
这是底层固件控制模式,由 amd_pstate_epp
驱动程序实现,并通过在命令行中传递 amd_pstate=active
给内核来激活。在此模式下,如果软件希望偏向性能 (0x0) 或能效 (0xff),amd_pstate_epp
驱动程序会向 CPPC 固件提供一个提示。然后,CPPC 电源算法将计算运行时工作负载,并根据电源、散热、核心电压和其他一些硬件条件调整实时核心频率。
被动模式¶
amd_pstate=passive
如果在命令行中传递 amd_pstate=passive
给内核,则将启用此模式。在此模式下,amd_pstate
驱动程序软件在 CPPC 性能范围内指定期望的 QoS 目标,以相对数字表示。这可以表示为标称性能(基础设施最大值)的百分比。在标称持续性能水平以下,期望的性能表示处理器在性能降低容差寄存器约束下的平均性能水平。在标称性能水平之上,处理器必须提供至少所请求的标称性能,并且如果当前操作条件允许,则性能会更高。
引导模式¶
amd_pstate=guided
如果将 amd_pstate=guided
传递给内核命令行选项,则会激活此模式。在此模式下,驱动程序请求最小和最大性能水平,平台会在该范围内自主选择适合当前工作负载的性能水平。
amd-pstate
偏好核心¶
核心频率受半导体制造过程中的工艺变化影响。并非所有核心都能在符合基础设施限制的情况下达到最大频率。因此,AMD 重新定义了部件的最大频率概念。这意味着一部分核心可以达到最大频率。为了找到给定场景的最佳进程调度策略,操作系统需要知道平台通过 CPPC 接口的最高性能能力寄存器告知的核心排序。
amd-pstate
偏好核心使调度器能够优先在能够以较低电压实现更高频率的核心上进行调度。偏好核心的排名可能会根据工作负载、平台条件、散热和老化情况动态变化。
优先级指标将由 amd-pstate
驱动程序初始化。amd-pstate
驱动程序还将确定平台是否支持 amd-pstate
偏好核心。
amd-pstate
驱动程序将在系统启动时提供初始核心排序。平台使用 CPPC 接口将核心排名传达给操作系统和调度器,以确保操作系统首先选择性能最高的核心进行进程调度。当 amd-pstate
驱动程序收到最高性能更改的消息时,它将更新核心排名并设置 CPU 的优先级。
amd-pstate
偏好核心切换¶
内核参数¶
amd-pstate
偏好核心`` 有两种状态:启用和禁用。可以通过不同的内核参数选择启用/禁用状态。默认启用 amd-pstate
偏好核心。
amd_prefcore=disable
对于支持 amd-pstate
偏好核心的系统,平台将始终公布核心排名。但操作系统可以选择通过内核参数 amd_prefcore=disable
忽略该排名。
sysfs
中的用户空间接口 - 常规¶
全局属性¶
amd-pstate
在 sysfs
中公开了几个全局属性(文件),以在系统级别控制其功能。它们位于 /sys/devices/system/cpu/amd_pstate/
目录中,并影响所有 CPU。
状态
驱动程序的操作模式:“active”、“passive”、“guided” 或 “disable”。
- “active”
驱动程序功能正常,处于
active 模式
- “passive”
驱动程序功能正常,处于
passive 模式
- “guided”
驱动程序功能正常,处于
guided 模式
- “disable”
驱动程序已注销,目前不工作。
可以写入此属性以更改驱动程序的操作模式或注销它。写入的字符串必须是其可能的值之一,如果成功,则将这些值之一写入 sysfs 文件将导致驱动程序切换到该字符串表示的操作模式 - 或者在 “disable” 情况下被注销。
prefcore
驱动程序的偏好核心状态:“enabled” 或 “disabled”。
- “enabled”
启用
amd-pstate
偏好核心。- “disabled”
禁用
amd-pstate
偏好核心。
此属性是只读的,用于检查内核参数设置的偏好核心状态。
cpupower
工具对 amd-pstate
的支持¶
cpupower
工具支持 amd-pstate
,可用于转储频率信息。正在开发中,以便使用此工具支持新 amd-pstate
模块的更多操作。
root@hr-test1:/home/ray# cpupower frequency-info
analyzing CPU 0:
driver: amd-pstate
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: 131 us
hardware limits: 400 MHz - 4.68 GHz
available cpufreq governors: ondemand conservative powersave userspace performance schedutil
current policy: frequency should be within 400 MHz and 4.68 GHz.
The governor "schedutil" may decide which speed to use
within this range.
current CPU frequency: Unable to call hardware
current CPU frequency: 4.02 GHz (asserted by call to kernel)
boost state support:
Supported: yes
Active: yes
AMD PSTATE Highest Performance: 166. Maximum Frequency: 4.68 GHz.
AMD PSTATE Nominal Performance: 117. Nominal Frequency: 3.30 GHz.
AMD PSTATE Lowest Non-linear Performance: 39. Lowest Non-linear Frequency: 1.10 GHz.
AMD PSTATE Lowest Performance: 15. Lowest Frequency: 400 MHz.
诊断和调优¶
跟踪事件¶
有两个静态跟踪事件可用于 amd-pstate
诊断。其中一个是 CPUFreq
通常使用的 cpu_frequency
跟踪事件,另一个是 amd-pstate
特有的 amd_pstate_perf
跟踪事件。以下 shell 命令序列可用于启用它们并查看其输出(如果内核配置为支持事件跟踪)。
root@hr-test1:/home/ray# cd /sys/kernel/tracing/
root@hr-test1:/sys/kernel/tracing# echo 1 > events/amd_cpu/enable
root@hr-test1:/sys/kernel/tracing# cat trace
# tracer: nop
#
# entries-in-buffer/entries-written: 47827/42233061 #P:2
#
# _-----=> irqs-off
# / _----=> need-resched
# | / _---=> hardirq/softirq
# || / _--=> preempt-depth
# ||| / delay
# TASK-PID CPU# |||| TIMESTAMP FUNCTION
# | | | |||| | |
<idle>-0 [015] dN... 4995.979886: amd_pstate_perf: amd_min_perf=85 amd_des_perf=85 amd_max_perf=166 cpu_id=15 changed=false fast_switch=true
<idle>-0 [007] d.h.. 4995.979893: amd_pstate_perf: amd_min_perf=85 amd_des_perf=85 amd_max_perf=166 cpu_id=7 changed=false fast_switch=true
cat-2161 [000] d.... 4995.980841: amd_pstate_perf: amd_min_perf=85 amd_des_perf=85 amd_max_perf=166 cpu_id=0 changed=false fast_switch=true
sshd-2125 [004] d.s.. 4995.980968: amd_pstate_perf: amd_min_perf=85 amd_des_perf=85 amd_max_perf=166 cpu_id=4 changed=false fast_switch=true
<idle>-0 [007] d.s.. 4995.980968: amd_pstate_perf: amd_min_perf=85 amd_des_perf=85 amd_max_perf=166 cpu_id=7 changed=false fast_switch=true
<idle>-0 [003] d.s.. 4995.980971: amd_pstate_perf: amd_min_perf=85 amd_des_perf=85 amd_max_perf=166 cpu_id=3 changed=false fast_switch=true
<idle>-0 [011] d.s.. 4995.980996: amd_pstate_perf: amd_min_perf=85 amd_des_perf=85 amd_max_perf=166 cpu_id=11 changed=false fast_switch=true
cpu_frequency
跟踪事件将由 schedutil
缩放调速器(对于其附加的策略)或 CPUFreq
核心(对于具有其他缩放调速器的策略)触发。
Tracer 工具¶
amd_pstate_tracer.py
可以记录和解析 amd-pstate
跟踪日志,然后生成性能图。此实用程序可用于调试和调整 amd-pstate
驱动程序的性能。tracer 工具需要导入 intel pstate tracer。
Tracer 工具位于 linux/tools/power/x86/amd_pstate_tracer
中。它可以通过两种方式使用。如果跟踪文件可用,则使用命令直接解析文件
./amd_pstate_trace.py [-c cpus] -t <trace_file> -n <test_name>
或使用 root 权限生成跟踪文件,然后使用命令解析并绘制图形
sudo ./amd_pstate_trace.py [-c cpus] -n <test_name> -i <interval> [-m kbytes]
测试结果可以在 results/test_name
中找到。以下是关于部分输出的示例。
common_cpu common_secs common_usecs min_perf des_perf max_perf freq mperf apef tsc load duration_ms sample_num elapsed_time common_comm
CPU_005 712 116384 39 49 166 0.7565 9645075 2214891 38431470 25.1 11.646 469 2.496 kworker/5:0-40
CPU_006 712 116408 39 49 166 0.6769 8950227 1839034 37192089 24.06 11.272 470 2.496 kworker/6:0-1264
amd-pstate 的单元测试¶
amd-pstate-ut
是用于测试 amd-pstate
驱动程序的测试模块。
它可以帮助所有用户验证他们的处理器支持(SBIOS/固件或硬件)。
内核可以进行基本功能测试,以避免更新期间的内核回归。
我们可以引入更多功能或性能测试来统一结果,这将有利于功耗和性能范围的优化。
测试用例描述
1). 基本测试
测试
amd-pstate
驱动程序的前提条件和基本功能。索引
功能
描述
1
amd_pstate_ut_acpi_cpc_valid
2
amd_pstate_ut_check_enabled
检查是否启用了 AMD P-State。AMD P 状态和 ACPI 硬件 P 状态始终可以在一个处理器中得到支持。但是,AMD P 状态具有更高的优先级,如果通过MSR_AMD_CPPC_ENABLE
或cppc_set_enable
启用,它将响应来自 AMD P 状态的请求。3
amd_pstate_ut_check_perf
检查每个性能值是否合理。最高性能 >= 标称性能 > 最低非线性性能 > 最低性能 > 0。4
amd_pstate_ut_check_freq
检查在设置支持睿频模式时,每个频率值和最大频率是否合理。最大频率 >= 标称频率 > 最低非线性频率 > 最小频率 > 0如果睿频未激活但支持,则此最大频率将大于cpuinfo
中的频率。2). Tbench 测试
在指定的调速器下运行 tbench 基准测试时,测试并监控 CPU 的变化。这些变化包括期望的性能、频率、负载、性能、能耗等。指定的调速器为 ondemand 或 schedutil。也可以在
acpi-cpufreq
内核驱动程序上测试 Tbench 以进行比较。3). Gitsource 测试
在指定的调速器下运行 gitsource 基准测试时,测试并监控 CPU 的变化。这些变化包括期望的性能、频率、负载、时间、能耗等。指定的调速器为 ondemand 或 schedutil。也可以在
acpi-cpufreq
内核驱动程序上测试 Gitsource 以进行比较。如何执行测试
我们使用 kselftest 框架中的测试模块来实现它。我们创建
amd-pstate-ut
模块并将其绑定到 kselftest。(详情请参考 Linux Kernel Selftests [4])。1). 构建
打开
CONFIG_X86_AMD_PSTATE
配置选项。将
CONFIG_X86_AMD_PSTATE_UT
配置选项设置为 M。编译项目
编译 selftest
$ cd linux $ make -C tools/testing/selftests
编译 perf
$ cd tools/perf/ $ make
2). 安装 & 步骤
$ make -C tools/testing/selftests install INSTALL_PATH=~/kselftest $ cp tools/perf/perf /usr/bin/perf $ sudo ./kselftest/run_kselftest.sh -c amd-pstate
3). 指定测试用例
$ cd ~/kselftest/amd-pstate $ sudo ./run.sh -t basic $ sudo ./run.sh -t tbench $ sudo ./run.sh -t tbench -m acpi-cpufreq $ sudo ./run.sh -t gitsource $ sudo ./run.sh -t gitsource -m acpi-cpufreq $ ./run.sh --help ./run.sh: illegal option -- - Usage: ./run.sh [OPTION...] [-h <help>] [-o <output-file-for-dump>] [-c <all: All testing, basic: Basic testing, tbench: Tbench testing, gitsource: Gitsource testing.>] [-t <tbench time limit>] [-p <tbench process number>] [-l <loop times for tbench>] [-i <amd tracer interval>] [-m <comparative test: acpi-cpufreq>]
4). 结果
基本
完成测试后,您将获得以下日志信息
$ dmesg | grep "amd_pstate_ut" | tee log.txt [12977.570663] amd_pstate_ut: 1 amd_pstate_ut_acpi_cpc_valid success! [12977.570673] amd_pstate_ut: 2 amd_pstate_ut_check_enabled success! [12977.571207] amd_pstate_ut: 3 amd_pstate_ut_check_perf success! [12977.571212] amd_pstate_ut: 4 amd_pstate_ut_check_freq success!
tbench
完成测试后,您将获得 selftest.tbench.csv 文件和 png 图像。selftest.tbench.csv 文件包含原始数据和对比测试的下降情况。png 图像显示每次测试的性能、能耗和每瓦性能。打开 selftest.tbench.csv 文件
调速器
轮次
期望性能
频率
负载
性能
能耗
每瓦性能
单位
GHz
MB/s
J
MB/J
amd-pstate-ondemand
1
2504.05
1563.67
158.5378
amd-pstate-ondemand
2
2243.64
1430.32
155.2941
amd-pstate-ondemand
3
2183.88
1401.32
154.2860
amd-pstate-ondemand
平均值
2310.52
1465.1
156.1268
amd-pstate-schedutil
1
165.329
1.62257
99.798
2136.54
1395.26
151.5971
amd-pstate-schedutil
2
166
1.49761
99.9993
2100.56
1380.5
150.6377
amd-pstate-schedutil
3
166
1.47806
99.9993
2084.12
1375.76
149.9737
amd-pstate-schedutil
平均值
165.776
1.53275
99.9322
2107.07
1383.84
150.7399
acpi-cpufreq-ondemand
1
2529.9
1564.4
160.0997
acpi-cpufreq-ondemand
2
2249.76
1432.97
155.4297
acpi-cpufreq-ondemand
3
2181.46
1406.88
153.5060
acpi-cpufreq-ondemand
平均值
2320.37
1468.08
156.4741
acpi-cpufreq-schedutil
1
2137.64
1385.24
152.7723
acpi-cpufreq-schedutil
2
2107.05
1372.23
152.0138
acpi-cpufreq-schedutil
3
2085.86
1365.35
151.2433
acpi-cpufreq-schedutil
平均值
2110.18
1374.27
152.0136
acpi-cpufreq-ondemand VS acpi-cpufreq-schedutil
对比(%)
-9.0584
-6.3899
-2.8506
amd-pstate-ondemand VS amd-pstate-schedutil
对比(%)
8.8053
-5.5463
-3.4503
acpi-cpufreq-ondemand VS amd-pstate-ondemand
对比(%)
-0.4245
-0.2029
-0.2219
acpi-cpufreq-schedutil VS amd-pstate-schedutil
对比(%)
-0.1473
0.6963
-0.8378
gitsource
完成测试后,您将获得 selftest.gitsource.csv 文件和 png 图像。selftest.gitsource.csv 文件包含原始数据和对比测试的下降情况。png 图像显示每次测试的性能、能耗和每瓦性能。打开 selftest.gitsource.csv 文件
调速器
轮次
期望性能
频率
负载
时间
能耗
每瓦性能
单位
GHz
秒
J
1/焦耳
amd-pstate-ondemand
1
50.119
2.10509
23.3076
475.69
865.78
0.001155027
amd-pstate-ondemand
2
94.8006
1.98771
56.6533
467.1
839.67
0.001190944
amd-pstate-ondemand
3
76.6091
2.53251
43.7791
467.69
855.85
0.001168429
amd-pstate-ondemand
平均值
73.8429
2.20844
41.2467
470.16
853.767
0.001171279
amd-pstate-schedutil
1
165.919
1.62319
98.3868
464.17
866.8
0.001153668
amd-pstate-schedutil
2
165.97
1.31309
99.5712
480.15
880.4
0.001135847
amd-pstate-schedutil
3
165.973
1.28448
99.9252
481.79
867.02
0.001153375
amd-pstate-schedutil
平均值
165.954
1.40692
99.2944
475.37
871.407
0.001147569
acpi-cpufreq-ondemand
1
2379.62
742.96
0.001345967
acpi-cpufreq-ondemand
2
441.74
817.49
0.001223256
acpi-cpufreq-ondemand
3
455.48
820.01
0.001219497
acpi-cpufreq-ondemand
平均值
425.613
793.487
0.001260260
acpi-cpufreq-schedutil
1
459.69
838.54
0.001192548
acpi-cpufreq-schedutil
2
466.55
830.89
0.001203528
acpi-cpufreq-schedutil
3
470.38
837.32
0.001194286
acpi-cpufreq-schedutil
平均值
465.54
835.583
0.001196769
acpi-cpufreq-ondemand VS acpi-cpufreq-schedutil
对比(%)
9.3810
5.3051
-5.0379
amd-pstate-ondemand VS amd-pstate-schedutil
对比(%)
124.7392
-36.2934
140.7329
1.1081
2.0661
-2.0242
acpi-cpufreq-ondemand VS amd-pstate-ondemand
对比(%)
10.4665
7.5968
-7.0605
acpi-cpufreq-schedutil VS amd-pstate-schedutil
对比(%)
2.1115
4.2873
-4.1110