英特尔® 睿频加速技术用户指南¶
英特尔® 睿频加速技术 (Intel® SST) 提供了一系列强大的新功能,可更精细地控制 CPU 性能。借助英特尔® SST,可以针对各种不同的工作负载要求配置一台服务器的功耗和性能。
有关该技术的概述,请参阅以下链接
在一些较新的服务器平台中,这些功能得到了进一步增强,这些功能可以动态枚举和控制,而无需通过 BIOS 设置选项进行预配置。此动态配置是通过向硬件发送邮箱命令来完成的。枚举和配置这些功能的一种方法是使用英特尔睿频加速实用程序。
本文档解释了如何使用英特尔睿频加速工具枚举和控制英特尔® SST 功能。本文档提供了示例命令,并解释了这些命令如何更改被测系统的功耗和性能配置文件。以该工具为例,客户可以在其生产软件中复制该工具中实现的消息传递。
英特尔睿频加速配置工具¶
大多数 Linux 发行版软件包可能包含 “intel-speed-select” 工具。如果未包含,则可以通过从 kernel.org 下载 Linux 内核树来构建该工具。下载后,无需构建完整的内核即可构建该工具。
从内核树中,运行以下命令
# cd tools/power/x86/intel-speed-select/
# make
# make install
获取帮助¶
要获取该工具的帮助,请执行以下命令
# intel-speed-select --help
顶级帮助描述了参数和功能。请注意,该工具中有一个多级帮助结构。例如,要获取功能 “perf-profile” 的帮助
# intel-speed-select perf-profile --help
要获取有关命令的帮助,还提供了另一级别的帮助。例如,对于命令 info “info”
# intel-speed-select perf-profile info --help
平台功能摘要¶
要检查当前平台和驱动程序功能,请执行
#intel-speed-select --info
例如在测试系统上
# intel-speed-select --info
Intel(R) Speed Select Technology
Executing on CPU model: X
Platform: API version : 1
Platform: Driver version : 1
Platform: mbox supported : 1
Platform: mmio supported : 1
Intel(R) SST-PP (feature perf-profile) is supported
TDP level change control is unlocked, max level: 4
Intel(R) SST-TF (feature turbo-freq) is supported
Intel(R) SST-BF (feature base-freq) is not supported
Intel(R) SST-CP (feature core-power) is supported
英特尔® 睿频加速技术 - 性能配置文件 (Intel® SST-PP)¶
此功能允许根据工作负载性能要求动态配置服务器。这有助于用户在部署期间,因为他们不必静态地选择特定的服务器配置。英特尔® 睿频加速技术 - 性能配置文件 (Intel® SST-PP) 功能引入了一种机制,允许每个系统使用多个优化的性能配置文件。每个配置文件定义了一组需要在线的 CPU,其余 CPU 需要离线以维持保证的基频。一旦用户发出命令以使用特定的性能配置文件并满足 CPU 在线/离线要求,用户就可以期望动态更改基频。在使用英特尔睿频加速工具时,此功能称为 “perf-profile”。
性能级别数¶
系统上可以有多个性能配置文件。要获取配置文件的数量,请执行以下命令
# intel-speed-select perf-profile get-config-levels
Intel(R) Speed Select Technology
Executing on CPU model: X
package-0
die-0
cpu-0
get-config-levels:4
package-1
die-0
cpu-14
get-config-levels:4
在此被测系统中,除了基本性能配置文件(即性能级别 0)之外,还有 4 个性能配置文件。
锁定/解锁状态¶
即使有多个性能配置文件,也可能被锁定。如果它们被锁定,则用户无法发出命令来更改性能状态。可能存在 BIOS 设置来解锁或咨询您的系统供应商。
要检查系统是否被锁定,请执行以下命令
# intel-speed-select perf-profile get-lock-status
Intel(R) Speed Select Technology
Executing on CPU model: X
package-0
die-0
cpu-0
get-lock-status:0
package-1
die-0
cpu-14
get-lock-status:0
在这种情况下,锁定状态为 0,这意味着系统已解锁。
性能级别的属性¶
要获取特定性能级别的属性(例如,下面的级别 0),请执行以下命令
# intel-speed-select perf-profile info -l 0
Intel(R) Speed Select Technology
Executing on CPU model: X
package-0
die-0
cpu-0
perf-profile-level-0
cpu-count:28
enable-cpu-mask:000003ff,f0003fff
enable-cpu-list:0,1,2,3,4,5,6,7,8,9,10,11,12,13,28,29,30,31,32,33,34,35,36,37,38,39,40,41
thermal-design-power-ratio:26
base-frequency(MHz):2600
speed-select-turbo-freq:disabled
speed-select-base-freq:disabled
...
...
此处 -l 选项用于指定性能级别。
如果省略选项 -l,则此命令将打印有关所有性能级别的信息。上面的命令正在打印性能级别 0 的属性。
对于此性能配置文件,“enable-cpu-mask/enable-cpu-list” 显示的 CPU 列表在最大程度上可以是“在线”的。当满足该条件时,可以保持 2600 MHz 的基频。要了解更多信息,请对性能级别 4 执行 “intel-speed-select perf-profile info”
# intel-speed-select perf-profile info -l 4
Intel(R) Speed Select Technology
Executing on CPU model: X
package-0
die-0
cpu-0
perf-profile-level-4
cpu-count:28
enable-cpu-mask:000000fa,f0000faf
enable-cpu-list:0,1,2,3,5,7,8,9,10,11,28,29,30,31,33,35,36,37,38,39
thermal-design-power-ratio:28
base-frequency(MHz):2800
speed-select-turbo-freq:disabled
speed-select-base-freq:unsupported
...
...
“enable-cpu-mask/enable-cpu-list” 中的 CPU 较少。因此,如果用户仅保持这些 CPU 在线,而其余 CPU “离线”,则基频将从性能级别 0 的 2.6 GHz 增加到 2.8 GHz。
获取当前性能级别¶
要获取当前性能级别,请执行
# intel-speed-select perf-profile get-config-current-level
Intel(R) Speed Select Technology
Executing on CPU model: X
package-0
die-0
cpu-0
get-config-current_level:0
首先验证 cpufreq sysfs 显示的 base_frequency 是否正确
# cat /sys/devices/system/cpu/cpu0/cpufreq/base_frequency
2600000
这与 “perf-profile info” 命令针对性能级别 0 显示的 base-frequency (MHz) 字段值匹配(cpufreq 频率以 KHz 为单位)。
要检查对于 100% 繁忙的工作负载,平均频率是否等于基频,请禁用睿频
# echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo
然后在所有 CPU 上运行繁忙的工作负载,例如
#stress -c 64
要验证基频,请运行 turbostat
#turbostat -c 0-13 --show Package,Core,CPU,Bzy_MHz -i 1
Package Core CPU Bzy_MHz
- - 2600
0 0 0 2600
0 1 1 2600
0 2 2 2600
0 3 3 2600
0 4 4 2600
. . . .
更改性能级别¶
要将性能级别更改为 4,请执行
# intel-speed-select -d perf-profile set-config-level -l 4 -o
Intel(R) Speed Select Technology
Executing on CPU model: X
package-0
die-0
cpu-0
perf-profile
set_tdp_level:success
在上面的命令中,“-o” 是可选的。如果指定了该选项,它还将使此性能级别的 enable_cpu_mask 中不存在的 CPU 脱机。
现在如果检查 base_frequency
#cat /sys/devices/system/cpu/cpu0/cpufreq/base_frequency
2800000
结果表明,基频现在从性能级别 0 的 2600 MHz 增加到性能级别 4 的 2800 MHz。因此,与性能级别 0 相比,任何可以使用较少 CPU 的工作负载都可以看到 200 MHz 的提升。
通过 BMC 接口更改性能级别¶
可以使用带外 (OOB) 代理(通过某些远程管理控制台,通过 BMC “基板管理控制器” 接口)更改 SST-PP 级别。Sapphire Rapids 处理器世代支持此模式。支持此模式的内核和工具更改已添加到 Linux 内核版本 5.18。要启用此功能,需要内核配置 “CONFIG_INTEL_HFI_THERMAL”。该工具的最低版本为 “v1.12” 以支持此功能,该功能是 Linux 内核版本 5.18 的一部分。
为了支持这种配置,可以将此工具用作守护程序。添加命令行选项 --oob
# intel-speed-select --oob
Intel(R) Speed Select Technology
Executing on CPU model:143[0x8f]
OOB mode is enabled and will run as daemon
在此模式下,该工具将根据新的性能级别使 CPU 在线/离线。
检查其他英特尔® SST 功能是否存在¶
每个性能配置文件还指定是否支持其他两个英特尔® SST 功能(英特尔® 睿频加速技术 - 基本频率 (Intel® SST-BF) 和英特尔® 睿频加速技术 - 睿频频率 (Intel SST-TF))。
例如,从上面的 “perf-profile info” 的输出中,对于级别 0 和级别 4
- 对于级别 0:
speed-select-turbo-freq:disabled speed-select-base-freq:disabled
- 对于级别 4:
speed-select-turbo-freq:disabled speed-select-base-freq:unsupported
根据这些结果,与性能级别 0 相比,级别 4 中的 “speed-select-base-freq” (Intel(R) SST-BF) 从“禁用”变为“不支持”。
这意味着在性能级别 4,“speed-select-base-freq” 功能不受支持。 然而,在性能级别 0,此功能是“支持的”,但目前是“禁用”的,这意味着用户尚未激活此功能。 而“speed-select-turbo-freq” (Intel(R) SST-TF) 在两个性能级别都受支持,但目前未被用户激活。
Intel(R) SST-BF 和 Intel(R) SST-TF 功能构建在名为 Intel(R) Speed Select Technology - Core Power (Intel(R) SST-CP) 的基础技术之上。当平台上支持 Intel(R) SST-BF 或 Intel(R) SST-TF 时,平台固件会启用此功能。
Intel(R) Speed Select Technology Core Power (Intel(R) SST-CP)¶
Intel(R) Speed Select Technology Core Power (Intel(R) SST-CP) 是一个允许用户定义每个核心优先级的接口。它定义了一种在功率受限情况下在核心之间分配功率的机制。这定义了一个服务类别 (CLOS) 配置。
用户最多可以配置 4 个服务类别配置。每个 CLOS 组配置都允许定义参数,这些参数会影响频率限制方式和功率分配方式。每个 CPU 核心都可以绑定到一个服务类别,从而绑定到相关的优先级。粒度级别是核心级别,而不是每个 CPU 级别。
启用基于 CLOS 的优先级¶
要使用基于 CLOS 的优先级功能,必须通知固件启用并使用优先级类型。有一个默认的每个平台的优先级类型,可以使用可选的命令行参数进行更改。
要启用并检查选项,请执行
# intel-speed-select core-power enable --help
Intel(R) Speed Select Technology
Executing on CPU model: X
Enable core-power for a package/die
Clos Enable: Specify priority type with [--priority|-p]
0: Proportional, 1: Ordered
有两种类型的优先级类型
有序
有序节流的优先级是根据分配的 CLOS 组的索引定义的。其中 CLOS0 获得最高优先级(最后进行节流)。
优先级顺序为:CLOS0 > CLOS1 > CLOS2 > CLOS3。
比例
当使用比例优先级时,还有一个额外的参数称为 frequency_weight,可以为每个 CLOS 组指定。比例优先级的目标是为每个核心提供请求的最小值,然后根据定义的权重按比例分配所有剩余的(超额/不足)预算。可以使用“core-power config”命令配置此比例优先级。
要启用平台默认优先级类型,请执行
# intel-speed-select core-power enable
Intel(R) Speed Select Technology
Executing on CPU model: X
package-0
die-0
cpu-0
core-power
enable:success
package-1
die-0
cpu-6
core-power
enable:success
当一个封装包含多个晶片时,此启用的范围是每个封装或晶片范围。要检查是否启用了 CLOS 并获取优先级类型,可以使用“core-power info”命令。例如,要检查 CPU 0 上核心电源功能的状态,请执行
# intel-speed-select -c 0 core-power info
Intel(R) Speed Select Technology
Executing on CPU model: X
package-0
die-0
cpu-0
core-power
support-status:supported
enable-status:enabled
clos-enable-status:enabled
priority-type:proportional
package-1
die-0
cpu-24
core-power
support-status:supported
enable-status:enabled
clos-enable-status:enabled
priority-type:proportional
配置 CLOS 组¶
每个 CLOS 组都有自己的属性,包括 min、max、freq_weight 和 desired。可以使用“core-power config”命令配置这些参数。如果用户跳过设置参数(clos id 除外,它是强制性的),将使用默认值。要检查 core-power 配置选项,请执行
# intel-speed-select core-power config --help
Intel(R) Speed Select Technology
Executing on CPU model: X
Set core-power configuration for one of the four clos ids
Specify targeted clos id with [--clos|-c]
Specify clos Proportional Priority [--weight|-w]
Specify clos min in MHz with [--min|-n]
Specify clos max in MHz with [--max|-m]
例如
# intel-speed-select core-power config -c 0
Intel(R) Speed Select Technology
Executing on CPU model: X
clos epp is not specified, default: 0
clos frequency weight is not specified, default: 0
clos min is not specified, default: 0 MHz
clos max is not specified, default: 25500 MHz
clos desired is not specified, default: 0
package-0
die-0
cpu-0
core-power
config:success
package-1
die-0
cpu-6
core-power
config:success
用户可以选择更改默认值。例如,用户可以更改“min”并将基本频率设置为始终获得保证的基本频率。
获取当前 CLOS 配置¶
要检查当前配置,可以使用“core-power get-config”。例如,要获取 CLOS 0 的配置
# intel-speed-select core-power get-config -c 0
Intel(R) Speed Select Technology
Executing on CPU model: X
package-0
die-0
cpu-0
core-power
clos:0
epp:0
clos-proportional-priority:0
clos-min:0 MHz
clos-max:Max Turbo frequency
clos-desired:0 MHz
package-1
die-0
cpu-24
core-power
clos:0
epp:0
clos-proportional-priority:0
clos-min:0 MHz
clos-max:Max Turbo frequency
clos-desired:0 MHz
将 CPU 与 CLOS 组关联¶
要将 CPU 与 CLOS 组关联,可以使用“core-power assoc”命令
# intel-speed-select core-power assoc --help
Intel(R) Speed Select Technology
Executing on CPU model: X
Associate a clos id to a CPU
Specify targeted clos id with [--clos|-c]
例如,要将 CPU 10 与 CLOS 组 3 关联,请执行
# intel-speed-select -c 10 core-power assoc -c 3
Intel(R) Speed Select Technology
Executing on CPU model: X
package-0
die-0
cpu-10
core-power
assoc:success
一旦 CPU 被关联,其兄弟 CPU 也将关联到 CLOS 组。一旦关联,请避免更改 Linux “cpufreq” 子系统的缩放频率限制。
要检查 CPU 的现有关联,可以使用“core-power get-assoc”命令。例如,要获取 CPU 10 的关联,请执行
# intel-speed-select -c 10 core-power get-assoc
Intel(R) Speed Select Technology
Executing on CPU model: X
package-1
die-0
cpu-10
get-assoc
clos:3
这表明 CPU 10 是 CLOS 组 3 的一部分。
禁用基于 CLOS 的优先级¶
要禁用,请执行
# intel-speed-select core-power disable
某些功能(如 Intel(R) SST-TF)只能在启用基于 CLOS 的优先级时启用。因此,如果在启用 Intel(R) SST-TF 时禁用,可能会导致 Intel(R) SST-TF 失败。如果 Intel(R) SST-TF 已经启用,这将导致“disable”命令显示错误。反过来,要禁用,必须首先禁用 Intel(R) SST-TF 功能。
Intel(R) Speed Select Technology - Base Frequency (Intel(R) SST-BF)¶
Intel(R) Speed Select Technology - Base Frequency (Intel(R) SST-BF) 功能允许用户控制基本频率。如果某些关键工作负载线程需要持续高保证性能,则可以使用此功能在特定 CPU 集(高优先级 CPU)上以更高的基本频率执行线程,但其他 CPU 上的基本频率较低(低优先级 CPU)。此功能不需要低优先级 CPU 脱机。
Intel(R) SST-BF 的支持取决于 Intel(R) Speed Select Technology - Performance Profile (Intel(R) SST-PP) 性能级别配置。可能只有某些性能级别支持 Intel(R) SST-BF。也可能只有基本性能级别(级别 = 0)支持 Intel SST-BF。因此,首先选择所需的性能级别以启用此功能。
在此处的测试系统中,Intel(R) SST-BF 在基本性能级别 0 上受支持,但目前已禁用。例如,对于级别 0
# intel-speed-select -c 0 perf-profile info -l 0
Intel(R) Speed Select Technology
Executing on CPU model: X
package-0
die-0
cpu-0
perf-profile-level-0
...
speed-select-base-freq:disabled
...
在启用 Intel(R) SST-BF 并衡量其对工作负载性能的影响之前,执行一些工作负载并测量性能,并获得基准性能以进行比较。
在这里,用户需要更多的保证性能。因此,很可能禁用 turbo。要禁用 turbo,请执行
#echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo
根据 “intel-speed-select perf-profile info -l 0” 的输出,保证频率的基本频率为 2600 MHz。
测量基准性能以进行比较¶
要进行比较,请选择一个多线程工作负载,其中每个线程都可以在单独的 CPU 上调度。“Hackbench pipe” 测试是关于如何使用 Intel(R) SST-BF 提高性能的一个很好的例子。
下面,工作负载正在测量平均调度程序唤醒延迟,因此数字越低意味着性能越好
# taskset -c 3,4 perf bench -r 100 sched pipe
# Running 'sched/pipe' benchmark:
# Executed 1000000 pipe operations between two processes
Total time: 6.102 [sec]
6.102445 usecs/op
163868 ops/sec
在运行上述测试时,如果我们采用 turbostat 输出,它将显示 2 个 CPU 很忙并达到最大频率(这将是 turbo 被禁用时的基本频率)。turbostat 输出
#turbostat -c 0-13 --show Package,Core,CPU,Bzy_MHz -i 1
Package Core CPU Bzy_MHz
0 0 0 1000
0 1 1 1005
0 2 2 1000
0 3 3 2600
0 4 4 2600
0 5 5 1000
0 6 6 1000
0 7 7 1005
0 8 8 1005
0 9 9 1000
0 10 10 1000
0 11 11 995
0 12 12 1000
0 13 13 1000
从上面的 turbostat 输出可以看出,CPU 3 和 4 都很忙并达到了 2600 MHz 的完整保证频率。
Intel(R) SST-BF 功能¶
要获取当前性能级别 0 的 Intel(R) SST-BF 功能,请执行
# intel-speed-select base-freq info -l 0
Intel(R) Speed Select Technology
Executing on CPU model: X
package-0
die-0
cpu-0
speed-select-base-freq
high-priority-base-frequency(MHz):3000
high-priority-cpu-mask:00000216,00002160
high-priority-cpu-list:5,6,8,13,33,34,36,41
low-priority-base-frequency(MHz):2400
tjunction-temperature(C):125
thermal-design-power(W):205
上述功能表明,此系统上的一些 CPU 可以提供 3000 MHz 的基本频率,而此性能级别的标准基本频率为 3000 MHz。 然而,这些 CPU 是固定的,并且它们是通过 high-priority-cpu-list/high-priority-cpu-mask 呈现的。但是,如果选择了此 Intel(R) SST-BF 功能,则低优先级 CPU(不在 high-priority-cpu-list 中)只能提供高达 2400 MHz 的频率。因此,如果可以接受对低优先级 CPU 的这种削减,则用户可以启用 Intel SST-BF 功能,特别是对于上述“sched pipe”工作负载,因为只使用了两个 CPU,它们可以在高优先级 CPU 上调度,并且可以获得 400 MHz 的提升。
启用 Intel(R) SST-BF¶
要启用 Intel(R) SST-BF 功能,请执行
# intel-speed-select base-freq enable -a
Intel(R) Speed Select Technology
Executing on CPU model: X
package-0
die-0
cpu-0
base-freq
enable:success
package-1
die-0
cpu-14
base-freq
enable:success
在本例中,-a 选项是可选的。这不仅会启用 Intel(R) SST-BF,还会使用 Intel(R) Speed Select Technology Core Power (Intel(R) SST-CP) 功能调整核心的优先级。此选项将每个 Intel(R) Speed Select Technology - Performance Profile (Intel(R) SST-PP) 类的最低性能设置为最高性能,以便硬件为每个 CPU 提供尽可能高的性能。
如果未使用 -a 选项,则在启用 Intel(R) SST-BF 之前需要执行以下步骤
发现 Intel(R) SST-BF 并注意低优先级和高优先级基本频率
注意高优先级 CPU 列表
使用核心电源功能集启用 CLOS
配置 CLOS 参数。使用 CLOS.min 设置为最低性能
将所需的 CPU 订阅到 CLOS 组
通过此配置,如果通过将工作负载固定到高优先级 CPU(在本例中为 CPU 5 和 6)来执行相同的工作负载
#taskset -c 5,6 perf bench -r 100 sched pipe
# Running 'sched/pipe' benchmark:
# Executed 1000000 pipe operations between two processes
Total time: 5.627 [sec]
5.627922 usecs/op
177685 ops/sec
通过这种方式,通过启用 Intel(R) SST-BF,此基准测试的性能提高了(延迟减少了)7.79%。从 turbostat 输出可以看出,高优先级 CPU 达到了 3000 MHz,而之前为 2600 MHz。turbostat 输出
#turbostat -c 0-13 --show Package,Core,CPU,Bzy_MHz -i 1
Package Core CPU Bzy_MHz
0 0 0 2151
0 1 1 2166
0 2 2 2175
0 3 3 2175
0 4 4 2175
0 5 5 3000
0 6 6 3000
0 7 7 2180
0 8 8 2662
0 9 9 2176
0 10 10 2175
0 11 11 2176
0 12 12 2176
0 13 13 2661
禁用 Intel(R) SST-BF¶
要禁用 Intel(R) SST-BF 功能,请执行
# intel-speed-select base-freq disable -a
Intel(R) Speed Select Technology - Turbo Frequency (Intel(R) SST-TF)¶
此功能允许根据优先级为核心设置不同的“所有核心 turbo 比率限制”。通过使用此功能,可以通过将一些核心指定为高优先级来配置它们以获得更高的 turbo 频率,但低优先级核心的 turbo 频率会较低或没有 turbo 频率。
因此,只有当系统繁忙且正在利用所有 CPU 时,此功能才有用,但用户希望有一些可配置的选项以在某些 CPU 上获得高性能。
Intel(R) Speed Select Technology - Turbo Frequency (Intel(R) SST-TF) 的支持取决于 Intel(R) Speed Select Technology - Performance Profile (Intel SST-PP) 性能级别配置。可能只有特定的性能级别支持 Intel(R) SST-TF。也可能只有基本性能级别(级别 = 0)支持 Intel(R) SST-TF。因此,首先选择所需的性能级别以启用此功能。
在此处的测试系统中,Intel(R) SST-TF 在基本性能级别 0 上受支持,但目前已禁用
# intel-speed-select -c 0 perf-profile info -l 0
Intel(R) Speed Select Technology
package-0
die-0
cpu-0
perf-profile-level-0
...
...
speed-select-turbo-freq:disabled
...
...
要检查是否可以使用 Intel(R) SST-TF 功能提高性能,请获取启用 Intel(R) SST-TF 的 turbo 频率属性,并与此系统的基本 turbo 能力进行比较。
获取基本 turbo 能力¶
要获取性能级别 0 的基本 turbo 能力,请执行
# intel-speed-select perf-profile info -l 0
Intel(R) Speed Select Technology
Executing on CPU model: X
package-0
die-0
cpu-0
perf-profile-level-0
...
...
turbo-ratio-limits-sse
bucket-0
core-count:2
max-turbo-frequency(MHz):3200
bucket-1
core-count:4
max-turbo-frequency(MHz):3100
bucket-2
core-count:6
max-turbo-frequency(MHz):3100
bucket-3
core-count:8
max-turbo-frequency(MHz):3100
bucket-4
core-count:10
max-turbo-frequency(MHz):3100
bucket-5
core-count:12
max-turbo-frequency(MHz):3100
bucket-6
core-count:14
max-turbo-frequency(MHz):3100
bucket-7
core-count:16
max-turbo-frequency(MHz):3100
根据以上数据,当所有 CPU 都忙时,可以实现 3100 MHz 的最大频率。如果在 cpu 0 - 11 上有一些繁忙的工作负载(例如,stress),并在 CPU 12 和 13 上执行 “hackbench pipe” 工作负载
# taskset -c 12,13 perf bench -r 100 sched pipe
# Running 'sched/pipe' benchmark:
# Executed 1000000 pipe operations between two processes
Total time: 5.705 [sec]
5.705488 usecs/op
175269 ops/sec
turbostat 输出
#turbostat -c 0-13 --show Package,Core,CPU,Bzy_MHz -i 1
Package Core CPU Bzy_MHz
0 0 0 3000
0 1 1 3000
0 2 2 3000
0 3 3 3000
0 4 4 3000
0 5 5 3100
0 6 6 3100
0 7 7 3000
0 8 8 3100
0 9 9 3000
0 10 10 3000
0 11 11 3000
0 12 12 3100
0 13 13 3100
根据 turbostat 输出,性能受到 3100 MHz 频率上限的限制。要检查是否可以提高 CPU 12 和 CPU 13 的 hackbench 性能,请首先检查此性能级别的 Intel(R) SST-TF 功能的能力。
获取 Intel(R) SST-TF 能力¶
要获取能力,可以使用 “turbo-freq info” 命令
# intel-speed-select turbo-freq info -l 0
Intel(R) Speed Select Technology
Executing on CPU model: X
package-0
die-0
cpu-0
speed-select-turbo-freq
bucket-0
high-priority-cores-count:2
high-priority-max-frequency(MHz):3200
high-priority-max-avx2-frequency(MHz):3200
high-priority-max-avx512-frequency(MHz):3100
bucket-1
high-priority-cores-count:4
high-priority-max-frequency(MHz):3100
high-priority-max-avx2-frequency(MHz):3000
high-priority-max-avx512-frequency(MHz):2900
bucket-2
high-priority-cores-count:6
high-priority-max-frequency(MHz):3100
high-priority-max-avx2-frequency(MHz):3000
high-priority-max-avx512-frequency(MHz):2900
speed-select-turbo-freq-clip-frequencies
low-priority-max-frequency(MHz):2600
low-priority-max-avx2-frequency(MHz):2400
low-priority-max-avx512-frequency(MHz):2100
根据上面的输出,有一个 Intel(R) SST-TF 存储桶,其中有两个高优先级核心。如果仅设置了两个高优先级核心,则这些核心上的最大 turbo 频率可以提高到 3200 MHz。这比所有核心的基本 turbo 能力高 100 MHz。
反过来,对于 hackbench 工作负载,可以将两个 CPU 设置为高优先级,其余设置为低优先级。一个副作用是,一旦启用,低优先级核心的频率将被削减到较低的 2600 MHz。
启用 Intel(R) SST-TF¶
要启用英特尔(R) SST-TF,请执行以下操作
# intel-speed-select -c 12,13 turbo-freq enable -a
Intel(R) Speed Select Technology
Executing on CPU model: X
package-0
die-0
cpu-12
turbo-freq
enable:success
package-0
die-0
cpu-13
turbo-freq
enable:success
package--1
die-0
cpu-63
turbo-freq --auto
enable:success
在这种情况下,“-a”选项是可选的。如果设置,它将启用英特尔(R) SST-TF 功能,并使用英特尔 Speed Select 技术核心功率 (Intel(R) SST-CP) 功能将 CPU 设置为高优先级和低优先级。通过“-c”参数传递的 CPU 编号(包括其同级 CPU)将被标记为高优先级。
如果未使用 -a 选项,则在启用英特尔(R) SST-TF 之前需要执行以下步骤
发现英特尔(R) SST-TF 并记下高优先级核心的存储桶和最大频率
使用核心功率功能集启用 CLOS - 配置 CLOS 参数
将所需的 CPU 订阅到 CLOS 组,确保将高优先级核心设置为最大频率
如果执行相同的 hackbench 工作负载,请在高优先级 CPU 上调度 hackbench 线程
#taskset -c 12,13 perf bench -r 100 sched pipe
# Running 'sched/pipe' benchmark:
# Executed 1000000 pipe operations between two processes
Total time: 5.510 [sec]
5.510165 usecs/op
180826 ops/sec
这在繁忙系统上将性能提高了约 3.3%。 此处 turbostat 输出将显示 CPU 12 和 CPU 13 获得了 100 MHz 的提升。 turbostat 输出
#turbostat -c 0-13 --show Package,Core,CPU,Bzy_MHz -i 1
Package Core CPU Bzy_MHz
...
0 12 12 3200
0 13 13 3200