英特尔(R) 速度精选技术用户指南¶
英特尔(R) 速度精选技术 (Intel(R) SST) 提供了一系列强大的新功能,可对 CPU 性能进行更精细的控制。借助 Intel(R) SST,一个服务器可以针对各种不同的工作负载要求进行电源和性能配置。
请参阅以下链接,了解该技术概述
在一些较新的服务器平台中,这些功能得到了进一步增强,可以在无需通过 BIOS 设置选项预配置的情况下动态枚举和控制这些功能。这种动态配置是通过邮箱命令发送到硬件来完成的。枚举和配置这些功能的一种方法是使用英特尔速度精选工具。
本文档解释了如何使用英特尔速度精选工具来枚举和控制 Intel(R) SST 功能。本文档提供了示例命令,并解释了这些命令如何改变被测系统的功耗和性能配置文件。客户可以以该工具为例,在其生产软件中复制该工具中实现的消息传递。
intel-speed-select 配置工具¶
大多数 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
英特尔(R) 速度精选技术 - 性能配置文件 (Intel(R) SST-PP)¶
此功能允许根据工作负载性能要求动态配置服务器。这有助于用户在部署过程中不必静态选择特定的服务器配置。此英特尔(R) 速度精选技术 - 性能配置文件 (Intel(R) 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 的基频。要了解更多信息,请执行“intel-speed-select perf-profile info”以获取性能级别 4 的信息
# 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。因此,任何可以使用较少 CPU 的工作负载,与性能级别 0 相比,都可以看到 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 在线/离线。
检查是否存在其他 Intel(R) SST 功能¶
每个性能配置文件还指定是否支持另外两个 Intel(R) SST 功能(英特尔(R) 速度精选技术 - 基频 (Intel(R) SST-BF) 和英特尔(R) 速度精选技术 - 睿频加速频率 (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
鉴于这些结果,级别 4 中的“speed-select-base-freq” (Intel(R) SST-BF) 从“disabled”变为“unsupported”,而性能级别 0 则不同。
这意味着在性能级别 4 中,“speed-select-base-freq”功能不受支持。然而,在性能级别 0 中,此功能“受支持”,但当前处于“禁用”状态,这意味着用户尚未激活此功能。而“speed-select-turbo-freq” (Intel(R) SST-TF) 在两个性能级别都受支持,但用户目前尚未激活。
Intel(R) SST-BF 和 Intel(R) SST-TF 功能建立在名为英特尔(R) 速度精选技术 - 核心功耗 (Intel(R) SST-CP) 的基础技术之上。当平台支持 Intel(R) SST-BF 或 Intel(R) SST-TF 时,平台固件会启用此功能。
英特尔(R) 速度精选技术 - 核心功耗 (Intel(R) SST-CP)¶
英特尔(R) 速度精选技术 - 核心功耗 (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 上 core-power 功能的状态,请执行
# 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 功能。
英特尔(R) 速度精选技术 - 基频 (Intel(R) SST-BF)¶
英特尔(R) 速度精选技术 - 基频 (Intel(R) SST-BF) 功能允许用户控制基频。如果一些关键工作负载线程需要持续的高保证性能,那么可以使用此功能在特定 CPU 集(高优先级 CPU)上以更高的基频执行线程,而代价是其他 CPU 上的基频较低(低优先级 CPU)。此功能不需要低优先级 CPU 离线。
对 Intel(R) SST-BF 的支持取决于英特尔(R) 速度精选技术 - 性能配置文件 (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 并测量其对工作负载性能的影响之前,请执行一些工作负载并测量性能,以获取用于比较的基准性能。
在这里,用户需要更高的保证性能。因此,很可能禁用了睿频加速。要禁用睿频加速,请执行
#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 正在忙碌并达到最大频率(这将是基频,因为睿频加速已禁用)。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 的基频,而此性能级别下的标准基频则较低。然而,这些 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,而且还使用英特尔(R) 速度精选技术 - 核心功耗 (Intel(R) SST-CP) 功能调整了核心的优先级。此选项将每个英特尔(R) 速度精选技术 - 性能配置文件 (Intel(R) SST-PP) 类的最低性能设置为最高性能,以便硬件为每个 CPU 提供尽可能高的性能。
如果未使用 -a 选项,则在启用 Intel(R) SST-BF 之前需要执行以下步骤
发现 Intel(R) SST-BF 并记下低优先级和高优先级基频
记下高优先级 CPU 列表
使用 core-power 功能集启用 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
英特尔(R) 速度精选技术 - 睿频加速频率 (Intel(R) SST-TF)¶
此功能能够根据优先级为核心设置不同的“所有核心睿频加速比限制”。通过使用此功能,可以将一些核心配置为获得更高的睿频加速频率,方法是将其指定为高优先级,而低优先级核心则以较低或不带睿频加速频率为代价。
因此,此功能仅在系统忙于利用所有 CPU 但用户希望获得在某些 CPU 上获得高性能的可配置选项时才有用。
对英特尔(R) 速度精选技术 - 睿频加速频率 (Intel(R) SST-TF) 的支持取决于英特尔(R) 速度精选技术 - 性能配置文件 (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 后的睿频加速频率属性,并与该系统的基本睿频加速功能进行比较。
获取基本睿频加速功能¶
要获取性能级别 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
...
...
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 桶,其中有两个高优先级核心。如果只设置两个高优先级核心,则这些核心上的最大睿频加速频率可以增加到 3200 MHz。这比所有核心的基本睿频加速功能高出 100 MHz。
反过来,对于 hackbench 工作负载,可以将两个 CPU 设置为高优先级,其余设置为低优先级。一个副作用是,一旦启用,低优先级核心将被限制在 2600 MHz 的较低频率。
启用 Intel(R) SST-TF¶
要启用 Intel(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”选项是可选的。如果设置,它会启用 Intel(R) SST-TF 功能,并使用英特尔速度精选技术 - 核心功耗 (Intel(R) SST-CP) 功能将 CPU 设置为高优先级和低优先级。使用“-c”参数传递的 CPU 编号被标记为高优先级,包括其兄弟。
如果未使用 -a 选项,则在启用 Intel(R) SST-TF 之前需要执行以下步骤
发现 Intel(R) SST-TF 并记下高优先级核心和最大频率的桶
使用 core-power 功能集启用 CLOS - 配置 CLOS 参数
将所需的 CPU 订阅到 CLOS 组,确保高优先级核心设置为最大频率
如果执行相同的 hackbench 工作负载,将 hackbench 线程调度到高优先级 CPU 上
#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