brintos

brintos / linux-shallow public Read only

0
0
Text · 30.7 KiB · a2bfb97 Raw
940 lines · plain
1.. SPDX-License-Identifier: GPL-2.02 3============================================================4Intel(R) Speed Select Technology User Guide5============================================================6 7The Intel(R) Speed Select Technology (Intel(R) SST) provides a powerful new8collection of features that give more granular control over CPU performance.9With Intel(R) SST, one server can be configured for power and performance for a10variety of diverse workload requirements.11 12Refer to the links below for an overview of the technology:13 14- https://www.intel.com/content/www/us/en/architecture-and-technology/speed-select-technology-article.html15- https://builders.intel.com/docs/networkbuilders/intel-speed-select-technology-base-frequency-enhancing-performance.pdf16 17These capabilities are further enhanced in some of the newer generations of18server platforms where these features can be enumerated and controlled19dynamically without pre-configuring via BIOS setup options. This dynamic20configuration is done via mailbox commands to the hardware. One way to enumerate21and configure these features is by using the Intel Speed Select utility.22 23This document explains how to use the Intel Speed Select tool to enumerate and24control Intel(R) SST features. This document gives example commands and explains25how these commands change the power and performance profile of the system under26test. Using this tool as an example, customers can replicate the messaging27implemented in the tool in their production software.28 29intel-speed-select configuration tool30======================================31 32Most Linux distribution packages may include the "intel-speed-select" tool. If not,33it can be built by downloading the Linux kernel tree from kernel.org. Once34downloaded, the tool can be built without building the full kernel.35 36From the kernel tree, run the following commands::37 38# cd tools/power/x86/intel-speed-select/39# make40# make install41 42Getting Help43------------44 45To get help with the tool, execute the command below::46 47# intel-speed-select --help48 49The top-level help describes arguments and features. Notice that there is a50multi-level help structure in the tool. For example, to get help for the feature "perf-profile"::51 52# intel-speed-select perf-profile --help53 54To get help on a command, another level of help is provided. For example for the command info "info"::55 56# intel-speed-select perf-profile info --help57 58Summary of platform capability59------------------------------60To check the current platform and driver capabilities, execute::61 62#intel-speed-select --info63 64For example on a test system::65 66 # intel-speed-select --info67 Intel(R) Speed Select Technology68 Executing on CPU model: X69 Platform: API version : 170 Platform: Driver version : 171 Platform: mbox supported : 172 Platform: mmio supported : 173 Intel(R) SST-PP (feature perf-profile) is supported74 TDP level change control is unlocked, max level: 475 Intel(R) SST-TF (feature turbo-freq) is supported76 Intel(R) SST-BF (feature base-freq) is not supported77 Intel(R) SST-CP (feature core-power) is supported78 79Intel(R) Speed Select Technology - Performance Profile (Intel(R) SST-PP)80------------------------------------------------------------------------81 82This feature allows configuration of a server dynamically based on workload83performance requirements. This helps users during deployment as they do not have84to choose a specific server configuration statically.  This Intel(R) Speed Select85Technology - Performance Profile (Intel(R) SST-PP) feature introduces a mechanism86that allows multiple optimized performance profiles per system. Each profile87defines a set of CPUs that need to be online and rest offline to sustain a88guaranteed base frequency. Once the user issues a command to use a specific89performance profile and meet CPU online/offline requirement, the user can expect90a change in the base frequency dynamically. This feature is called91"perf-profile" when using the Intel Speed Select tool.92 93Number or performance levels94~~~~~~~~~~~~~~~~~~~~~~~~~~~~~95 96There can be multiple performance profiles on a system. To get the number of97profiles, execute the command below::98 99 # intel-speed-select perf-profile get-config-levels100 Intel(R) Speed Select Technology101 Executing on CPU model: X102 package-0103  die-0104    cpu-0105        get-config-levels:4106 package-1107  die-0108    cpu-14109        get-config-levels:4110 111On this system under test, there are 4 performance profiles in addition to the112base performance profile (which is performance level 0).113 114Lock/Unlock status115~~~~~~~~~~~~~~~~~~116 117Even if there are multiple performance profiles, it is possible that they118are locked. If they are locked, users cannot issue a command to change the119performance state. It is possible that there is a BIOS setup to unlock or check120with your system vendor.121 122To check if the system is locked, execute the following command::123 124 # intel-speed-select perf-profile get-lock-status125 Intel(R) Speed Select Technology126 Executing on CPU model: X127 package-0128  die-0129    cpu-0130        get-lock-status:0131 package-1132  die-0133    cpu-14134        get-lock-status:0135 136In this case, lock status is 0, which means that the system is unlocked.137 138Properties of a performance level139~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~140 141To get properties of a specific performance level (For example for the level 0, below), execute the command below::142 143 # intel-speed-select perf-profile info -l 0144 Intel(R) Speed Select Technology145 Executing on CPU model: X146 package-0147  die-0148    cpu-0149      perf-profile-level-0150        cpu-count:28151        enable-cpu-mask:000003ff,f0003fff152        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,41153        thermal-design-power-ratio:26154        base-frequency(MHz):2600155        speed-select-turbo-freq:disabled156        speed-select-base-freq:disabled157	...158	...159 160Here -l option is used to specify a performance level.161 162If the option -l is omitted, then this command will print information about all163the performance levels. The above command is printing properties of the164performance level 0.165 166For this performance profile, the list of CPUs displayed by the167"enable-cpu-mask/enable-cpu-list" at the max can be "online." When that168condition is met, then base frequency of 2600 MHz can be maintained. To169understand more, execute "intel-speed-select perf-profile info" for performance170level 4::171 172 # intel-speed-select perf-profile info -l 4173 Intel(R) Speed Select Technology174 Executing on CPU model: X175 package-0176  die-0177    cpu-0178      perf-profile-level-4179        cpu-count:28180        enable-cpu-mask:000000fa,f0000faf181        enable-cpu-list:0,1,2,3,5,7,8,9,10,11,28,29,30,31,33,35,36,37,38,39182        thermal-design-power-ratio:28183        base-frequency(MHz):2800184        speed-select-turbo-freq:disabled185        speed-select-base-freq:unsupported186	...187	...188 189There are fewer CPUs in the "enable-cpu-mask/enable-cpu-list". Consequently, if190the user only keeps these CPUs online and the rest "offline," then the base191frequency is increased to 2.8 GHz compared to 2.6 GHz at performance level 0.192 193Get current performance level194~~~~~~~~~~~~~~~~~~~~~~~~~~~~~195 196To get the current performance level, execute::197 198 # intel-speed-select perf-profile get-config-current-level199 Intel(R) Speed Select Technology200 Executing on CPU model: X201 package-0202  die-0203    cpu-0204        get-config-current_level:0205 206First verify that the base_frequency displayed by the cpufreq sysfs is correct::207 208 # cat /sys/devices/system/cpu/cpu0/cpufreq/base_frequency209 2600000210 211This matches the base-frequency (MHz) field value displayed from the212"perf-profile info" command for performance level 0(cpufreq frequency is in213KHz).214 215To check if the average frequency is equal to the base frequency for a 100% busy216workload, disable turbo::217 218# echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo219 220Then runs a busy workload on all CPUs, for example::221 222#stress -c 64223 224To verify the base frequency, run turbostat::225 226 #turbostat -c 0-13 --show Package,Core,CPU,Bzy_MHz -i 1227 228  Package	Core	CPU	Bzy_MHz229		-	-	2600230  0		0	0	2600231  0		1	1	2600232  0		2	2	2600233  0		3	3	2600234  0		4	4	2600235  .		.	.	.236 237 238Changing performance level239~~~~~~~~~~~~~~~~~~~~~~~~~~~~240 241To the change the performance level to 4, execute::242 243 # intel-speed-select -d perf-profile set-config-level -l 4 -o244 Intel(R) Speed Select Technology245 Executing on CPU model: X246 package-0247  die-0248    cpu-0249      perf-profile250        set_tdp_level:success251 252In the command above, "-o" is optional. If it is specified, then it will also253offline CPUs which are not present in the enable_cpu_mask for this performance254level.255 256Now if the base_frequency is checked::257 258 #cat /sys/devices/system/cpu/cpu0/cpufreq/base_frequency259 2800000260 261Which shows that the base frequency now increased from 2600 MHz at performance262level 0 to 2800 MHz at performance level 4. As a result, any workload, which can263use fewer CPUs, can see a boost of 200 MHz compared to performance level 0.264 265Changing performance level via BMC Interface266~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~267 268It is possible to change SST-PP level using out of band (OOB) agent (Via some269remote management console, through BMC "Baseboard Management Controller"270interface). This mode is supported from the Sapphire Rapids processor271generation. The kernel and tool change to support this mode is added to Linux272kernel version 5.18. To enable this feature, kernel config273"CONFIG_INTEL_HFI_THERMAL" is required. The minimum version of the tool274is "v1.12" to support this feature, which is part of Linux kernel version 5.18.275 276To support such configuration, this tool can be used as a daemon. Add277a command line option --oob::278 279 # intel-speed-select --oob280 Intel(R) Speed Select Technology281 Executing on CPU model:143[0x8f]282 OOB mode is enabled and will run as daemon283 284In this mode the tool will online/offline CPUs based on the new performance285level.286 287Check presence of other Intel(R) SST features288---------------------------------------------289 290Each of the performance profiles also specifies weather there is support of291other two Intel(R) SST features (Intel(R) Speed Select Technology - Base Frequency292(Intel(R) SST-BF) and Intel(R) Speed Select Technology - Turbo Frequency (Intel293SST-TF)).294 295For example, from the output of "perf-profile info" above, for level 0 and level2964:297 298For level 0::299       speed-select-turbo-freq:disabled300       speed-select-base-freq:disabled301 302For level 4::303       speed-select-turbo-freq:disabled304       speed-select-base-freq:unsupported305 306Given these results, the "speed-select-base-freq" (Intel(R) SST-BF) in level 4307changed from "disabled" to "unsupported" compared to performance level 0.308 309This means that at performance level 4, the "speed-select-base-freq" feature is310not supported. However, at performance level 0, this feature is "supported", but311currently "disabled", meaning the user has not activated this feature. Whereas312"speed-select-turbo-freq" (Intel(R) SST-TF) is supported at both performance313levels, but currently not activated by the user.314 315The Intel(R) SST-BF and the Intel(R) SST-TF features are built on a foundation316technology called Intel(R) Speed Select Technology - Core Power (Intel(R) SST-CP).317The platform firmware enables this feature when Intel(R) SST-BF or Intel(R) SST-TF318is supported on a platform.319 320Intel(R) Speed Select Technology Core Power (Intel(R) SST-CP)321---------------------------------------------------------------322 323Intel(R) Speed Select Technology Core Power (Intel(R) SST-CP) is an interface that324allows users to define per core priority. This defines a mechanism to distribute325power among cores when there is a power constrained scenario. This defines a326class of service (CLOS) configuration.327 328The user can configure up to 4 class of service configurations. Each CLOS group329configuration allows definitions of parameters, which affects how the frequency330can be limited and power is distributed. Each CPU core can be tied to a class of331service and hence an associated priority. The granularity is at core level not332at per CPU level.333 334Enable CLOS based prioritization335~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~336 337To use CLOS based prioritization feature, firmware must be informed to enable338and use a priority type. There is a default per platform priority type, which339can be changed with optional command line parameter.340 341To enable and check the options, execute::342 343 # intel-speed-select core-power enable --help344 Intel(R) Speed Select Technology345 Executing on CPU model: X346 Enable core-power for a package/die347	Clos Enable: Specify priority type with [--priority|-p]348		 0: Proportional, 1: Ordered349 350There are two types of priority types:351 352- Ordered353 354Priority for ordered throttling is defined based on the index of the assigned355CLOS group. Where CLOS0 gets highest priority (throttled last).356 357Priority order is:358CLOS0 > CLOS1 > CLOS2 > CLOS3.359 360- Proportional361 362When proportional priority is used, there is an additional parameter called363frequency_weight, which can be specified per CLOS group. The goal of364proportional priority is to provide each core with the requested min., then365distribute all remaining (excess/deficit) budgets in proportion to a defined366weight. This proportional priority can be configured using "core-power config"367command.368 369To enable with the platform default priority type, execute::370 371 # intel-speed-select core-power enable372 Intel(R) Speed Select Technology373 Executing on CPU model: X374 package-0375  die-0376    cpu-0377      core-power378        enable:success379 package-1380  die-0381    cpu-6382      core-power383        enable:success384 385The scope of this enable is per package or die scoped when a package contains386multiple dies. To check if CLOS is enabled and get priority type, "core-power387info" command can be used. For example to check the status of core-power feature388on CPU 0, execute::389 390 # intel-speed-select -c 0 core-power info391 Intel(R) Speed Select Technology392 Executing on CPU model: X393 package-0394  die-0395    cpu-0396      core-power397        support-status:supported398        enable-status:enabled399        clos-enable-status:enabled400        priority-type:proportional401 package-1402  die-0403    cpu-24404      core-power405        support-status:supported406        enable-status:enabled407        clos-enable-status:enabled408        priority-type:proportional409 410Configuring CLOS groups411~~~~~~~~~~~~~~~~~~~~~~~412 413Each CLOS group has its own attributes including min, max, freq_weight and414desired. These parameters can be configured with "core-power config" command.415Defaults will be used if user skips setting a parameter except clos id, which is416mandatory. To check core-power config options, execute::417 418 # intel-speed-select core-power config --help419 Intel(R) Speed Select Technology420 Executing on CPU model: X421 Set core-power configuration for one of the four clos ids422	Specify targeted clos id with [--clos|-c]423	Specify clos Proportional Priority [--weight|-w]424	Specify clos min in MHz with [--min|-n]425	Specify clos max in MHz with [--max|-m]426 427For example::428 429 # intel-speed-select core-power config -c 0430 Intel(R) Speed Select Technology431 Executing on CPU model: X432 clos epp is not specified, default: 0433 clos frequency weight is not specified, default: 0434 clos min is not specified, default: 0 MHz435 clos max is not specified, default: 25500 MHz436 clos desired is not specified, default: 0437 package-0438  die-0439    cpu-0440      core-power441        config:success442 package-1443  die-0444    cpu-6445      core-power446        config:success447 448The user has the option to change defaults. For example, the user can change the449"min" and set the base frequency to always get guaranteed base frequency.450 451Get the current CLOS configuration452~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~453 454To check the current configuration, "core-power get-config" can be used. For455example, to get the configuration of CLOS 0::456 457 # intel-speed-select core-power get-config -c 0458 Intel(R) Speed Select Technology459 Executing on CPU model: X460 package-0461  die-0462    cpu-0463      core-power464        clos:0465        epp:0466        clos-proportional-priority:0467        clos-min:0 MHz468        clos-max:Max Turbo frequency469        clos-desired:0 MHz470 package-1471  die-0472    cpu-24473      core-power474        clos:0475        epp:0476        clos-proportional-priority:0477        clos-min:0 MHz478        clos-max:Max Turbo frequency479        clos-desired:0 MHz480 481Associating a CPU with a CLOS group482~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~483 484To associate a CPU to a CLOS group "core-power assoc" command can be used::485 486 # intel-speed-select core-power assoc --help487 Intel(R) Speed Select Technology488 Executing on CPU model: X489 Associate a clos id to a CPU490	Specify targeted clos id with [--clos|-c]491 492 493For example to associate CPU 10 to CLOS group 3, execute::494 495 # intel-speed-select -c 10 core-power assoc -c 3496 Intel(R) Speed Select Technology497 Executing on CPU model: X498 package-0499  die-0500    cpu-10501      core-power502        assoc:success503 504Once a CPU is associated, its sibling CPUs are also associated to a CLOS group.505Once associated, avoid changing Linux "cpufreq" subsystem scaling frequency506limits.507 508To check the existing association for a CPU, "core-power get-assoc" command can509be used. For example, to get association of CPU 10, execute::510 511 # intel-speed-select -c 10 core-power get-assoc512 Intel(R) Speed Select Technology513 Executing on CPU model: X514 package-1515  die-0516    cpu-10517      get-assoc518        clos:3519 520This shows that CPU 10 is part of a CLOS group 3.521 522 523Disable CLOS based prioritization524~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~525 526To disable, execute::527 528# intel-speed-select core-power disable529 530Some features like Intel(R) SST-TF can only be enabled when CLOS based prioritization531is enabled. For this reason, disabling while Intel(R) SST-TF is enabled can cause532Intel(R) SST-TF to fail. This will cause the "disable" command to display an error533if Intel(R) SST-TF is already enabled. In turn, to disable, the Intel(R) SST-TF534feature must be disabled first.535 536Intel(R) Speed Select Technology - Base Frequency (Intel(R) SST-BF)537-------------------------------------------------------------------538 539The Intel(R) Speed Select Technology - Base Frequency (Intel(R) SST-BF) feature lets540the user control base frequency. If some critical workload threads demand541constant high guaranteed performance, then this feature can be used to execute542the thread at higher base frequency on specific sets of CPUs (high priority543CPUs) at the cost of lower base frequency (low priority CPUs) on other CPUs.544This feature does not require offline of the low priority CPUs.545 546The support of Intel(R) SST-BF depends on the Intel(R) Speed Select Technology -547Performance Profile (Intel(R) SST-PP) performance level configuration. It is548possible that only certain performance levels support Intel(R) SST-BF. It is also549possible that only base performance level (level = 0) has support of Intel550SST-BF. Consequently, first select the desired performance level to enable this551feature.552 553In the system under test here, Intel(R) SST-BF is supported at the base554performance level 0, but currently disabled. For example for the level 0::555 556 # intel-speed-select -c 0 perf-profile info -l 0557 Intel(R) Speed Select Technology558 Executing on CPU model: X559 package-0560  die-0561    cpu-0562      perf-profile-level-0563        ...564 565        speed-select-base-freq:disabled566	...567 568Before enabling Intel(R) SST-BF and measuring its impact on a workload569performance, execute some workload and measure performance and get a baseline570performance to compare against.571 572Here the user wants more guaranteed performance. For this reason, it is likely573that turbo is disabled. To disable turbo, execute::574 575#echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo576 577Based on the output of the "intel-speed-select perf-profile info -l 0" base578frequency of guaranteed frequency 2600 MHz.579 580 581Measure baseline performance for comparison582~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~583 584To compare, pick a multi-threaded workload where each thread can be scheduled on585separate CPUs. "Hackbench pipe" test is a good example on how to improve586performance using Intel(R) SST-BF.587 588Below, the workload is measuring average scheduler wakeup latency, so a lower589number means better performance::590 591 # taskset -c 3,4 perf bench -r 100 sched pipe592 # Running 'sched/pipe' benchmark:593 # Executed 1000000 pipe operations between two processes594     Total time: 6.102 [sec]595       6.102445 usecs/op596         163868 ops/sec597 598While running the above test, if we take turbostat output, it will show us that5992 of the CPUs are busy and reaching max. frequency (which would be the base600frequency as the turbo is disabled). The turbostat output::601 602 #turbostat -c 0-13 --show Package,Core,CPU,Bzy_MHz -i 1603 Package	Core	CPU	Bzy_MHz604 0		0	0	1000605 0		1	1	1005606 0		2	2	1000607 0		3	3	2600608 0		4	4	2600609 0		5	5	1000610 0		6	6	1000611 0		7	7	1005612 0		8	8	1005613 0		9	9	1000614 0		10	10	1000615 0		11	11	995616 0		12	12	1000617 0		13	13	1000618 619From the above turbostat output, both CPU 3 and 4 are very busy and reaching620full guaranteed frequency of 2600 MHz.621 622Intel(R) SST-BF Capabilities623~~~~~~~~~~~~~~~~~~~~~~~~~~~~624 625To get capabilities of Intel(R) SST-BF for the current performance level 0,626execute::627 628 # intel-speed-select base-freq info -l 0629 Intel(R) Speed Select Technology630 Executing on CPU model: X631 package-0632  die-0633    cpu-0634      speed-select-base-freq635        high-priority-base-frequency(MHz):3000636        high-priority-cpu-mask:00000216,00002160637        high-priority-cpu-list:5,6,8,13,33,34,36,41638        low-priority-base-frequency(MHz):2400639        tjunction-temperature(C):125640        thermal-design-power(W):205641 642The above capabilities show that there are some CPUs on this system that can643offer base frequency of 3000 MHz compared to the standard base frequency at this644performance levels. Nevertheless, these CPUs are fixed, and they are presented645via high-priority-cpu-list/high-priority-cpu-mask. But if this Intel(R) SST-BF646feature is selected, the low priorities CPUs (which are not in647high-priority-cpu-list) can only offer up to 2400 MHz. As a result, if this648clipping of low priority CPUs is acceptable, then the user can enable Intel649SST-BF feature particularly for the above "sched pipe" workload since only two650CPUs are used, they can be scheduled on high priority CPUs and can get boost of651400 MHz.652 653Enable Intel(R) SST-BF654~~~~~~~~~~~~~~~~~~~~~~655 656To enable Intel(R) SST-BF feature, execute::657 658 # intel-speed-select base-freq enable -a659 Intel(R) Speed Select Technology660 Executing on CPU model: X661 package-0662  die-0663    cpu-0664      base-freq665        enable:success666 package-1667  die-0668    cpu-14669      base-freq670        enable:success671 672In this case, -a option is optional. This not only enables Intel(R) SST-BF, but it673also adjusts the priority of cores using Intel(R) Speed Select Technology Core674Power (Intel(R) SST-CP) features. This option sets the minimum performance of each675Intel(R) Speed Select Technology - Performance Profile (Intel(R) SST-PP) class to676maximum performance so that the hardware will give maximum performance possible677for each CPU.678 679If -a option is not used, then the following steps are required before enabling680Intel(R) SST-BF:681 682- Discover Intel(R) SST-BF and note low and high priority base frequency683- Note the high priority CPU list684- Enable CLOS using core-power feature set685- Configure CLOS parameters. Use CLOS.min to set to minimum performance686- Subscribe desired CPUs to CLOS groups687 688With this configuration, if the same workload is executed by pinning the689workload to high priority CPUs (CPU 5 and 6 in this case)::690 691 #taskset -c 5,6 perf bench -r 100 sched pipe692 # Running 'sched/pipe' benchmark:693 # Executed 1000000 pipe operations between two processes694     Total time: 5.627 [sec]695       5.627922 usecs/op696         177685 ops/sec697 698This way, by enabling Intel(R) SST-BF, the performance of this benchmark is699improved (latency reduced) by 7.79%. From the turbostat output, it can be700observed that the high priority CPUs reached 3000 MHz compared to 2600 MHz.701The turbostat output::702 703 #turbostat -c 0-13 --show Package,Core,CPU,Bzy_MHz -i 1704 Package	Core	CPU	Bzy_MHz705 0		0	0	2151706 0		1	1	2166707 0		2	2	2175708 0		3	3	2175709 0		4	4	2175710 0		5	5	3000711 0		6	6	3000712 0		7	7	2180713 0		8	8	2662714 0		9	9	2176715 0		10	10	2175716 0		11	11	2176717 0		12	12	2176718 0		13	13	2661719 720Disable Intel(R) SST-BF721~~~~~~~~~~~~~~~~~~~~~~~722 723To disable the Intel(R) SST-BF feature, execute::724 725# intel-speed-select base-freq disable -a726 727 728Intel(R) Speed Select Technology - Turbo Frequency (Intel(R) SST-TF)729--------------------------------------------------------------------730 731This feature enables the ability to set different "All core turbo ratio limits"732to cores based on the priority. By using this feature, some cores can be733configured to get higher turbo frequency by designating them as high priority at734the cost of lower or no turbo frequency on the low priority cores.735 736For this reason, this feature is only useful when system is busy utilizing all737CPUs, but the user wants some configurable option to get high performance on738some CPUs.739 740The support of Intel(R) Speed Select Technology - Turbo Frequency (Intel(R) SST-TF)741depends on the Intel(R) Speed Select Technology - Performance Profile (Intel742SST-PP) performance level configuration. It is possible that only a certain743performance level supports Intel(R) SST-TF. It is also possible that only the base744performance level (level = 0) has the support of Intel(R) SST-TF. Hence, first745select the desired performance level to enable this feature.746 747In the system under test here, Intel(R) SST-TF is supported at the base748performance level 0, but currently disabled::749 750 # intel-speed-select -c 0 perf-profile info -l 0751 Intel(R) Speed Select Technology752 package-0753  die-0754    cpu-0755      perf-profile-level-0756        ...757        ...758        speed-select-turbo-freq:disabled759        ...760        ...761 762 763To check if performance can be improved using Intel(R) SST-TF feature, get the turbo764frequency properties with Intel(R) SST-TF enabled and compare to the base turbo765capability of this system.766 767Get Base turbo capability768~~~~~~~~~~~~~~~~~~~~~~~~~769 770To get the base turbo capability of performance level 0, execute::771 772 # intel-speed-select perf-profile info -l 0773 Intel(R) Speed Select Technology774 Executing on CPU model: X775 package-0776  die-0777    cpu-0778      perf-profile-level-0779        ...780        ...781        turbo-ratio-limits-sse782          bucket-0783            core-count:2784            max-turbo-frequency(MHz):3200785          bucket-1786            core-count:4787            max-turbo-frequency(MHz):3100788          bucket-2789            core-count:6790            max-turbo-frequency(MHz):3100791          bucket-3792            core-count:8793            max-turbo-frequency(MHz):3100794          bucket-4795            core-count:10796            max-turbo-frequency(MHz):3100797          bucket-5798            core-count:12799            max-turbo-frequency(MHz):3100800          bucket-6801            core-count:14802            max-turbo-frequency(MHz):3100803          bucket-7804            core-count:16805            max-turbo-frequency(MHz):3100806 807Based on the data above, when all the CPUS are busy, the max. frequency of 3100808MHz can be achieved. If there is some busy workload on cpu 0 - 11 (e.g. stress)809and on CPU 12 and 13, execute "hackbench pipe" workload::810 811 # taskset -c 12,13 perf bench -r 100 sched pipe812 # Running 'sched/pipe' benchmark:813 # Executed 1000000 pipe operations between two processes814     Total time: 5.705 [sec]815       5.705488 usecs/op816         175269 ops/sec817 818The turbostat output::819 820 #turbostat -c 0-13 --show Package,Core,CPU,Bzy_MHz -i 1821 Package	Core	CPU	Bzy_MHz822 0		0	0	3000823 0		1	1	3000824 0		2	2	3000825 0		3	3	3000826 0		4	4	3000827 0		5	5	3100828 0		6	6	3100829 0		7	7	3000830 0		8	8	3100831 0		9	9	3000832 0		10	10	3000833 0		11	11	3000834 0		12	12	3100835 0		13	13	3100836 837Based on turbostat output, the performance is limited by frequency cap of 3100838MHz. To check if the hackbench performance can be improved for CPU 12 and CPU83913, first check the capability of the Intel(R) SST-TF feature for this performance840level.841 842Get Intel(R) SST-TF Capability843~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~844 845To get the capability, the "turbo-freq info" command can be used::846 847 # intel-speed-select turbo-freq info -l 0848 Intel(R) Speed Select Technology849 Executing on CPU model: X850 package-0851  die-0852    cpu-0853      speed-select-turbo-freq854          bucket-0855            high-priority-cores-count:2856            high-priority-max-frequency(MHz):3200857            high-priority-max-avx2-frequency(MHz):3200858            high-priority-max-avx512-frequency(MHz):3100859          bucket-1860            high-priority-cores-count:4861            high-priority-max-frequency(MHz):3100862            high-priority-max-avx2-frequency(MHz):3000863            high-priority-max-avx512-frequency(MHz):2900864          bucket-2865            high-priority-cores-count:6866            high-priority-max-frequency(MHz):3100867            high-priority-max-avx2-frequency(MHz):3000868            high-priority-max-avx512-frequency(MHz):2900869          speed-select-turbo-freq-clip-frequencies870            low-priority-max-frequency(MHz):2600871            low-priority-max-avx2-frequency(MHz):2400872            low-priority-max-avx512-frequency(MHz):2100873 874Based on the output above, there is an Intel(R) SST-TF bucket for which there are875two high priority cores. If only two high priority cores are set, then max.876turbo frequency on those cores can be increased to 3200 MHz. This is 100 MHz877more than the base turbo capability for all cores.878 879In turn, for the hackbench workload, two CPUs can be set as high priority and880rest as low priority. One side effect is that once enabled, the low priority881cores will be clipped to a lower frequency of 2600 MHz.882 883Enable Intel(R) SST-TF884~~~~~~~~~~~~~~~~~~~~~~885 886To enable Intel(R) SST-TF, execute::887 888 # intel-speed-select -c 12,13 turbo-freq enable -a889 Intel(R) Speed Select Technology890 Executing on CPU model: X891 package-0892  die-0893    cpu-12894      turbo-freq895        enable:success896 package-0897  die-0898    cpu-13899      turbo-freq900        enable:success901 package--1902  die-0903    cpu-63904      turbo-freq --auto905        enable:success906 907In this case, the option "-a" is optional. If set, it enables Intel(R) SST-TF908feature and also sets the CPUs to high and low priority using Intel Speed909Select Technology Core Power (Intel(R) SST-CP) features. The CPU numbers passed910with "-c" arguments are marked as high priority, including its siblings.911 912If -a option is not used, then the following steps are required before enabling913Intel(R) SST-TF:914 915- Discover Intel(R) SST-TF and note buckets of high priority cores and maximum frequency916 917- Enable CLOS using core-power feature set - Configure CLOS parameters918 919- Subscribe desired CPUs to CLOS groups making sure that high priority cores are set to the maximum frequency920 921If the same hackbench workload is executed, schedule hackbench threads on high922priority CPUs::923 924 #taskset -c 12,13 perf bench -r 100 sched pipe925 # Running 'sched/pipe' benchmark:926 # Executed 1000000 pipe operations between two processes927     Total time: 5.510 [sec]928       5.510165 usecs/op929         180826 ops/sec930 931This improved performance by around 3.3% improvement on a busy system. Here the932turbostat output will show that the CPU 12 and CPU 13 are getting 100 MHz boost.933The turbostat output::934 935 #turbostat -c 0-13 --show Package,Core,CPU,Bzy_MHz -i 1936 Package	Core	CPU	Bzy_MHz937 ...938 0		12	12	3200939 0		13	13	3200940