Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1.. SPDX-License-Identifier: GPL-2.0
2
3============================================================
4Intel(R) Speed Select Technology User Guide
5============================================================
6
7The Intel(R) Speed Select Technology (Intel(R) SST) provides a powerful new
8collection of features that give more granular control over CPU performance.
9With Intel(R) SST, one server can be configured for power and performance for a
10variety 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.html
15- https://builders.intel.com/docs/networkbuilders/intel-speed-select-technology-base-frequency-enhancing-performance.pdf
16
17These capabilities are further enhanced in some of the newer generations of
18server platforms where these features can be enumerated and controlled
19dynamically without pre-configuring via BIOS setup options. This dynamic
20configuration is done via mailbox commands to the hardware. One way to enumerate
21and 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 and
24control Intel(R) SST features. This document gives example commands and explains
25how these commands change the power and performance profile of the system under
26test. Using this tool as an example, customers can replicate the messaging
27implemented in the tool in their production software.
28
29intel-speed-select configuration tool
30======================================
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. Once
34downloaded, 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# make
40# make install
41
42Getting Help
43------------
44
45To get help with the tool, execute the command below::
46
47# intel-speed-select --help
48
49The top-level help describes arguments and features. Notice that there is a
50multi-level help structure in the tool. For example, to get help for the feature "perf-profile"::
51
52# intel-speed-select perf-profile --help
53
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 --help
57
58Summary of platform capability
59------------------------------
60To check the current platform and driver capabilities, execute::
61
62#intel-speed-select --info
63
64For example on a test system::
65
66 # intel-speed-select --info
67 Intel(R) Speed Select Technology
68 Executing on CPU model: X
69 Platform: API version : 1
70 Platform: Driver version : 1
71 Platform: mbox supported : 1
72 Platform: mmio supported : 1
73 Intel(R) SST-PP (feature perf-profile) is supported
74 TDP level change control is unlocked, max level: 4
75 Intel(R) SST-TF (feature turbo-freq) is supported
76 Intel(R) SST-BF (feature base-freq) is not supported
77 Intel(R) SST-CP (feature core-power) is supported
78
79Intel(R) Speed Select Technology - Performance Profile (Intel(R) SST-PP)
80------------------------------------------------------------------------
81
82This feature allows configuration of a server dynamically based on workload
83performance requirements. This helps users during deployment as they do not have
84to choose a specific server configuration statically. This Intel(R) Speed Select
85Technology - Performance Profile (Intel(R) SST-PP) feature introduces a mechanism
86that allows multiple optimized performance profiles per system. Each profile
87defines a set of CPUs that need to be online and rest offline to sustain a
88guaranteed base frequency. Once the user issues a command to use a specific
89performance profile and meet CPU online/offline requirement, the user can expect
90a change in the base frequency dynamically. This feature is called
91"perf-profile" when using the Intel Speed Select tool.
92
93Number or performance levels
94~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
95
96There can be multiple performance profiles on a system. To get the number of
97profiles, execute the command below::
98
99 # intel-speed-select perf-profile get-config-levels
100 Intel(R) Speed Select Technology
101 Executing on CPU model: X
102 package-0
103 die-0
104 cpu-0
105 get-config-levels:4
106 package-1
107 die-0
108 cpu-14
109 get-config-levels:4
110
111On this system under test, there are 4 performance profiles in addition to the
112base performance profile (which is performance level 0).
113
114Lock/Unlock status
115~~~~~~~~~~~~~~~~~~
116
117Even if there are multiple performance profiles, it is possible that they
118are locked. If they are locked, users cannot issue a command to change the
119performance state. It is possible that there is a BIOS setup to unlock or check
120with your system vendor.
121
122To check if the system is locked, execute the following command::
123
124 # intel-speed-select perf-profile get-lock-status
125 Intel(R) Speed Select Technology
126 Executing on CPU model: X
127 package-0
128 die-0
129 cpu-0
130 get-lock-status:0
131 package-1
132 die-0
133 cpu-14
134 get-lock-status:0
135
136In this case, lock status is 0, which means that the system is unlocked.
137
138Properties of a performance level
139~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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 0
144 Intel(R) Speed Select Technology
145 Executing on CPU model: X
146 package-0
147 die-0
148 cpu-0
149 perf-profile-level-0
150 cpu-count:28
151 enable-cpu-mask:000003ff,f0003fff
152 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
153 thermal-design-power-ratio:26
154 base-frequency(MHz):2600
155 speed-select-turbo-freq:disabled
156 speed-select-base-freq:disabled
157 ...
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 all
163the performance levels. The above command is printing properties of the
164performance level 0.
165
166For this performance profile, the list of CPUs displayed by the
167"enable-cpu-mask/enable-cpu-list" at the max can be "online." When that
168condition is met, then base frequency of 2600 MHz can be maintained. To
169understand more, execute "intel-speed-select perf-profile info" for performance
170level 4::
171
172 # intel-speed-select perf-profile info -l 4
173 Intel(R) Speed Select Technology
174 Executing on CPU model: X
175 package-0
176 die-0
177 cpu-0
178 perf-profile-level-4
179 cpu-count:28
180 enable-cpu-mask:000000fa,f0000faf
181 enable-cpu-list:0,1,2,3,5,7,8,9,10,11,28,29,30,31,33,35,36,37,38,39
182 thermal-design-power-ratio:28
183 base-frequency(MHz):2800
184 speed-select-turbo-freq:disabled
185 speed-select-base-freq:unsupported
186 ...
187 ...
188
189There are fewer CPUs in the "enable-cpu-mask/enable-cpu-list". Consequently, if
190the user only keeps these CPUs online and the rest "offline," then the base
191frequency is increased to 2.8 GHz compared to 2.6 GHz at performance level 0.
192
193Get current performance level
194~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
195
196To get the current performance level, execute::
197
198 # intel-speed-select perf-profile get-config-current-level
199 Intel(R) Speed Select Technology
200 Executing on CPU model: X
201 package-0
202 die-0
203 cpu-0
204 get-config-current_level:0
205
206First verify that the base_frequency displayed by the cpufreq sysfs is correct::
207
208 # cat /sys/devices/system/cpu/cpu0/cpufreq/base_frequency
209 2600000
210
211This matches the base-frequency (MHz) field value displayed from the
212"perf-profile info" command for performance level 0(cpufreq frequency is in
213KHz).
214
215To check if the average frequency is equal to the base frequency for a 100% busy
216workload, disable turbo::
217
218# echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo
219
220Then runs a busy workload on all CPUs, for example::
221
222#stress -c 64
223
224To verify the base frequency, run turbostat::
225
226 #turbostat -c 0-13 --show Package,Core,CPU,Bzy_MHz -i 1
227
228 Package Core CPU Bzy_MHz
229 - - 2600
230 0 0 0 2600
231 0 1 1 2600
232 0 2 2 2600
233 0 3 3 2600
234 0 4 4 2600
235 . . . .
236
237
238Changing performance level
239~~~~~~~~~~~~~~~~~~~~~~~~~~~~
240
241To the change the performance level to 4, execute::
242
243 # intel-speed-select -d perf-profile set-config-level -l 4 -o
244 Intel(R) Speed Select Technology
245 Executing on CPU model: X
246 package-0
247 die-0
248 cpu-0
249 perf-profile
250 set_tdp_level:success
251
252In the command above, "-o" is optional. If it is specified, then it will also
253offline CPUs which are not present in the enable_cpu_mask for this performance
254level.
255
256Now if the base_frequency is checked::
257
258 #cat /sys/devices/system/cpu/cpu0/cpufreq/base_frequency
259 2800000
260
261Which shows that the base frequency now increased from 2600 MHz at performance
262level 0 to 2800 MHz at performance level 4. As a result, any workload, which can
263use fewer CPUs, can see a boost of 200 MHz compared to performance level 0.
264
265Check presence of other Intel(R) SST features
266---------------------------------------------
267
268Each of the performance profiles also specifies weather there is support of
269other two Intel(R) SST features (Intel(R) Speed Select Technology - Base Frequency
270(Intel(R) SST-BF) and Intel(R) Speed Select Technology - Turbo Frequency (Intel
271SST-TF)).
272
273For example, from the output of "perf-profile info" above, for level 0 and level
2744:
275
276For level 0::
277 speed-select-turbo-freq:disabled
278 speed-select-base-freq:disabled
279
280For level 4::
281 speed-select-turbo-freq:disabled
282 speed-select-base-freq:unsupported
283
284Given these results, the "speed-select-base-freq" (Intel(R) SST-BF) in level 4
285changed from "disabled" to "unsupported" compared to performance level 0.
286
287This means that at performance level 4, the "speed-select-base-freq" feature is
288not supported. However, at performance level 0, this feature is "supported", but
289currently "disabled", meaning the user has not activated this feature. Whereas
290"speed-select-turbo-freq" (Intel(R) SST-TF) is supported at both performance
291levels, but currently not activated by the user.
292
293The Intel(R) SST-BF and the Intel(R) SST-TF features are built on a foundation
294technology called Intel(R) Speed Select Technology - Core Power (Intel(R) SST-CP).
295The platform firmware enables this feature when Intel(R) SST-BF or Intel(R) SST-TF
296is supported on a platform.
297
298Intel(R) Speed Select Technology Core Power (Intel(R) SST-CP)
299---------------------------------------------------------------
300
301Intel(R) Speed Select Technology Core Power (Intel(R) SST-CP) is an interface that
302allows users to define per core priority. This defines a mechanism to distribute
303power among cores when there is a power constrained scenario. This defines a
304class of service (CLOS) configuration.
305
306The user can configure up to 4 class of service configurations. Each CLOS group
307configuration allows definitions of parameters, which affects how the frequency
308can be limited and power is distributed. Each CPU core can be tied to a class of
309service and hence an associated priority. The granularity is at core level not
310at per CPU level.
311
312Enable CLOS based prioritization
313~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
314
315To use CLOS based prioritization feature, firmware must be informed to enable
316and use a priority type. There is a default per platform priority type, which
317can be changed with optional command line parameter.
318
319To enable and check the options, execute::
320
321 # intel-speed-select core-power enable --help
322 Intel(R) Speed Select Technology
323 Executing on CPU model: X
324 Enable core-power for a package/die
325 Clos Enable: Specify priority type with [--priority|-p]
326 0: Proportional, 1: Ordered
327
328There are two types of priority types:
329
330- Ordered
331
332Priority for ordered throttling is defined based on the index of the assigned
333CLOS group. Where CLOS0 gets highest priority (throttled last).
334
335Priority order is:
336CLOS0 > CLOS1 > CLOS2 > CLOS3.
337
338- Proportional
339
340When proportional priority is used, there is an additional parameter called
341frequency_weight, which can be specified per CLOS group. The goal of
342proportional priority is to provide each core with the requested min., then
343distribute all remaining (excess/deficit) budgets in proportion to a defined
344weight. This proportional priority can be configured using "core-power config"
345command.
346
347To enable with the platform default priority type, execute::
348
349 # intel-speed-select core-power enable
350 Intel(R) Speed Select Technology
351 Executing on CPU model: X
352 package-0
353 die-0
354 cpu-0
355 core-power
356 enable:success
357 package-1
358 die-0
359 cpu-6
360 core-power
361 enable:success
362
363The scope of this enable is per package or die scoped when a package contains
364multiple dies. To check if CLOS is enabled and get priority type, "core-power
365info" command can be used. For example to check the status of core-power feature
366on CPU 0, execute::
367
368 # intel-speed-select -c 0 core-power info
369 Intel(R) Speed Select Technology
370 Executing on CPU model: X
371 package-0
372 die-0
373 cpu-0
374 core-power
375 support-status:supported
376 enable-status:enabled
377 clos-enable-status:enabled
378 priority-type:proportional
379 package-1
380 die-0
381 cpu-24
382 core-power
383 support-status:supported
384 enable-status:enabled
385 clos-enable-status:enabled
386 priority-type:proportional
387
388Configuring CLOS groups
389~~~~~~~~~~~~~~~~~~~~~~~
390
391Each CLOS group has its own attributes including min, max, freq_weight and
392desired. These parameters can be configured with "core-power config" command.
393Defaults will be used if user skips setting a parameter except clos id, which is
394mandatory. To check core-power config options, execute::
395
396 # intel-speed-select core-power config --help
397 Intel(R) Speed Select Technology
398 Executing on CPU model: X
399 Set core-power configuration for one of the four clos ids
400 Specify targeted clos id with [--clos|-c]
401 Specify clos Proportional Priority [--weight|-w]
402 Specify clos min in MHz with [--min|-n]
403 Specify clos max in MHz with [--max|-m]
404
405For example::
406
407 # intel-speed-select core-power config -c 0
408 Intel(R) Speed Select Technology
409 Executing on CPU model: X
410 clos epp is not specified, default: 0
411 clos frequency weight is not specified, default: 0
412 clos min is not specified, default: 0 MHz
413 clos max is not specified, default: 25500 MHz
414 clos desired is not specified, default: 0
415 package-0
416 die-0
417 cpu-0
418 core-power
419 config:success
420 package-1
421 die-0
422 cpu-6
423 core-power
424 config:success
425
426The user has the option to change defaults. For example, the user can change the
427"min" and set the base frequency to always get guaranteed base frequency.
428
429Get the current CLOS configuration
430~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
431
432To check the current configuration, "core-power get-config" can be used. For
433example, to get the configuration of CLOS 0::
434
435 # intel-speed-select core-power get-config -c 0
436 Intel(R) Speed Select Technology
437 Executing on CPU model: X
438 package-0
439 die-0
440 cpu-0
441 core-power
442 clos:0
443 epp:0
444 clos-proportional-priority:0
445 clos-min:0 MHz
446 clos-max:Max Turbo frequency
447 clos-desired:0 MHz
448 package-1
449 die-0
450 cpu-24
451 core-power
452 clos:0
453 epp:0
454 clos-proportional-priority:0
455 clos-min:0 MHz
456 clos-max:Max Turbo frequency
457 clos-desired:0 MHz
458
459Associating a CPU with a CLOS group
460~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
461
462To associate a CPU to a CLOS group "core-power assoc" command can be used::
463
464 # intel-speed-select core-power assoc --help
465 Intel(R) Speed Select Technology
466 Executing on CPU model: X
467 Associate a clos id to a CPU
468 Specify targeted clos id with [--clos|-c]
469
470
471For example to associate CPU 10 to CLOS group 3, execute::
472
473 # intel-speed-select -c 10 core-power assoc -c 3
474 Intel(R) Speed Select Technology
475 Executing on CPU model: X
476 package-0
477 die-0
478 cpu-10
479 core-power
480 assoc:success
481
482Once a CPU is associated, its sibling CPUs are also associated to a CLOS group.
483Once associated, avoid changing Linux "cpufreq" subsystem scaling frequency
484limits.
485
486To check the existing association for a CPU, "core-power get-assoc" command can
487be used. For example, to get association of CPU 10, execute::
488
489 # intel-speed-select -c 10 core-power get-assoc
490 Intel(R) Speed Select Technology
491 Executing on CPU model: X
492 package-1
493 die-0
494 cpu-10
495 get-assoc
496 clos:3
497
498This shows that CPU 10 is part of a CLOS group 3.
499
500
501Disable CLOS based prioritization
502~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
503
504To disable, execute::
505
506# intel-speed-select core-power disable
507
508Some features like Intel(R) SST-TF can only be enabled when CLOS based prioritization
509is enabled. For this reason, disabling while Intel(R) SST-TF is enabled can cause
510Intel(R) SST-TF to fail. This will cause the "disable" command to display an error
511if Intel(R) SST-TF is already enabled. In turn, to disable, the Intel(R) SST-TF
512feature must be disabled first.
513
514Intel(R) Speed Select Technology - Base Frequency (Intel(R) SST-BF)
515-------------------------------------------------------------------
516
517The Intel(R) Speed Select Technology - Base Frequency (Intel(R) SST-BF) feature lets
518the user control base frequency. If some critical workload threads demand
519constant high guaranteed performance, then this feature can be used to execute
520the thread at higher base frequency on specific sets of CPUs (high priority
521CPUs) at the cost of lower base frequency (low priority CPUs) on other CPUs.
522This feature does not require offline of the low priority CPUs.
523
524The support of Intel(R) SST-BF depends on the Intel(R) Speed Select Technology -
525Performance Profile (Intel(R) SST-PP) performance level configuration. It is
526possible that only certain performance levels support Intel(R) SST-BF. It is also
527possible that only base performance level (level = 0) has support of Intel
528SST-BF. Consequently, first select the desired performance level to enable this
529feature.
530
531In the system under test here, Intel(R) SST-BF is supported at the base
532performance level 0, but currently disabled. For example for the level 0::
533
534 # intel-speed-select -c 0 perf-profile info -l 0
535 Intel(R) Speed Select Technology
536 Executing on CPU model: X
537 package-0
538 die-0
539 cpu-0
540 perf-profile-level-0
541 ...
542
543 speed-select-base-freq:disabled
544 ...
545
546Before enabling Intel(R) SST-BF and measuring its impact on a workload
547performance, execute some workload and measure performance and get a baseline
548performance to compare against.
549
550Here the user wants more guaranteed performance. For this reason, it is likely
551that turbo is disabled. To disable turbo, execute::
552
553#echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo
554
555Based on the output of the "intel-speed-select perf-profile info -l 0" base
556frequency of guaranteed frequency 2600 MHz.
557
558
559Measure baseline performance for comparison
560~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
561
562To compare, pick a multi-threaded workload where each thread can be scheduled on
563separate CPUs. "Hackbench pipe" test is a good example on how to improve
564performance using Intel(R) SST-BF.
565
566Below, the workload is measuring average scheduler wakeup latency, so a lower
567number means better performance::
568
569 # taskset -c 3,4 perf bench -r 100 sched pipe
570 # Running 'sched/pipe' benchmark:
571 # Executed 1000000 pipe operations between two processes
572 Total time: 6.102 [sec]
573 6.102445 usecs/op
574 163868 ops/sec
575
576While running the above test, if we take turbostat output, it will show us that
5772 of the CPUs are busy and reaching max. frequency (which would be the base
578frequency as the turbo is disabled). The turbostat output::
579
580 #turbostat -c 0-13 --show Package,Core,CPU,Bzy_MHz -i 1
581 Package Core CPU Bzy_MHz
582 0 0 0 1000
583 0 1 1 1005
584 0 2 2 1000
585 0 3 3 2600
586 0 4 4 2600
587 0 5 5 1000
588 0 6 6 1000
589 0 7 7 1005
590 0 8 8 1005
591 0 9 9 1000
592 0 10 10 1000
593 0 11 11 995
594 0 12 12 1000
595 0 13 13 1000
596
597From the above turbostat output, both CPU 3 and 4 are very busy and reaching
598full guaranteed frequency of 2600 MHz.
599
600Intel(R) SST-BF Capabilities
601~~~~~~~~~~~~~~~~~~~~~~~~~~~~
602
603To get capabilities of Intel(R) SST-BF for the current performance level 0,
604execute::
605
606 # intel-speed-select base-freq info -l 0
607 Intel(R) Speed Select Technology
608 Executing on CPU model: X
609 package-0
610 die-0
611 cpu-0
612 speed-select-base-freq
613 high-priority-base-frequency(MHz):3000
614 high-priority-cpu-mask:00000216,00002160
615 high-priority-cpu-list:5,6,8,13,33,34,36,41
616 low-priority-base-frequency(MHz):2400
617 tjunction-temperature(C):125
618 thermal-design-power(W):205
619
620The above capabilities show that there are some CPUs on this system that can
621offer base frequency of 3000 MHz compared to the standard base frequency at this
622performance levels. Nevertheless, these CPUs are fixed, and they are presented
623via high-priority-cpu-list/high-priority-cpu-mask. But if this Intel(R) SST-BF
624feature is selected, the low priorities CPUs (which are not in
625high-priority-cpu-list) can only offer up to 2400 MHz. As a result, if this
626clipping of low priority CPUs is acceptable, then the user can enable Intel
627SST-BF feature particularly for the above "sched pipe" workload since only two
628CPUs are used, they can be scheduled on high priority CPUs and can get boost of
629400 MHz.
630
631Enable Intel(R) SST-BF
632~~~~~~~~~~~~~~~~~~~~~~
633
634To enable Intel(R) SST-BF feature, execute::
635
636 # intel-speed-select base-freq enable -a
637 Intel(R) Speed Select Technology
638 Executing on CPU model: X
639 package-0
640 die-0
641 cpu-0
642 base-freq
643 enable:success
644 package-1
645 die-0
646 cpu-14
647 base-freq
648 enable:success
649
650In this case, -a option is optional. This not only enables Intel(R) SST-BF, but it
651also adjusts the priority of cores using Intel(R) Speed Select Technology Core
652Power (Intel(R) SST-CP) features. This option sets the minimum performance of each
653Intel(R) Speed Select Technology - Performance Profile (Intel(R) SST-PP) class to
654maximum performance so that the hardware will give maximum performance possible
655for each CPU.
656
657If -a option is not used, then the following steps are required before enabling
658Intel(R) SST-BF:
659
660- Discover Intel(R) SST-BF and note low and high priority base frequency
661- Note the high priority CPU list
662- Enable CLOS using core-power feature set
663- Configure CLOS parameters. Use CLOS.min to set to minimum performance
664- Subscribe desired CPUs to CLOS groups
665
666With this configuration, if the same workload is executed by pinning the
667workload to high priority CPUs (CPU 5 and 6 in this case)::
668
669 #taskset -c 5,6 perf bench -r 100 sched pipe
670 # Running 'sched/pipe' benchmark:
671 # Executed 1000000 pipe operations between two processes
672 Total time: 5.627 [sec]
673 5.627922 usecs/op
674 177685 ops/sec
675
676This way, by enabling Intel(R) SST-BF, the performance of this benchmark is
677improved (latency reduced) by 7.79%. From the turbostat output, it can be
678observed that the high priority CPUs reached 3000 MHz compared to 2600 MHz.
679The turbostat output::
680
681 #turbostat -c 0-13 --show Package,Core,CPU,Bzy_MHz -i 1
682 Package Core CPU Bzy_MHz
683 0 0 0 2151
684 0 1 1 2166
685 0 2 2 2175
686 0 3 3 2175
687 0 4 4 2175
688 0 5 5 3000
689 0 6 6 3000
690 0 7 7 2180
691 0 8 8 2662
692 0 9 9 2176
693 0 10 10 2175
694 0 11 11 2176
695 0 12 12 2176
696 0 13 13 2661
697
698Disable Intel(R) SST-BF
699~~~~~~~~~~~~~~~~~~~~~~~
700
701To disable the Intel(R) SST-BF feature, execute::
702
703# intel-speed-select base-freq disable -a
704
705
706Intel(R) Speed Select Technology - Turbo Frequency (Intel(R) SST-TF)
707--------------------------------------------------------------------
708
709This feature enables the ability to set different "All core turbo ratio limits"
710to cores based on the priority. By using this feature, some cores can be
711configured to get higher turbo frequency by designating them as high priority at
712the cost of lower or no turbo frequency on the low priority cores.
713
714For this reason, this feature is only useful when system is busy utilizing all
715CPUs, but the user wants some configurable option to get high performance on
716some CPUs.
717
718The support of Intel(R) Speed Select Technology - Turbo Frequency (Intel(R) SST-TF)
719depends on the Intel(R) Speed Select Technology - Performance Profile (Intel
720SST-PP) performance level configuration. It is possible that only a certain
721performance level supports Intel(R) SST-TF. It is also possible that only the base
722performance level (level = 0) has the support of Intel(R) SST-TF. Hence, first
723select the desired performance level to enable this feature.
724
725In the system under test here, Intel(R) SST-TF is supported at the base
726performance level 0, but currently disabled::
727
728 # intel-speed-select -c 0 perf-profile info -l 0
729 Intel(R) Speed Select Technology
730 package-0
731 die-0
732 cpu-0
733 perf-profile-level-0
734 ...
735 ...
736 speed-select-turbo-freq:disabled
737 ...
738 ...
739
740
741To check if performance can be improved using Intel(R) SST-TF feature, get the turbo
742frequency properties with Intel(R) SST-TF enabled and compare to the base turbo
743capability of this system.
744
745Get Base turbo capability
746~~~~~~~~~~~~~~~~~~~~~~~~~
747
748To get the base turbo capability of performance level 0, execute::
749
750 # intel-speed-select perf-profile info -l 0
751 Intel(R) Speed Select Technology
752 Executing on CPU model: X
753 package-0
754 die-0
755 cpu-0
756 perf-profile-level-0
757 ...
758 ...
759 turbo-ratio-limits-sse
760 bucket-0
761 core-count:2
762 max-turbo-frequency(MHz):3200
763 bucket-1
764 core-count:4
765 max-turbo-frequency(MHz):3100
766 bucket-2
767 core-count:6
768 max-turbo-frequency(MHz):3100
769 bucket-3
770 core-count:8
771 max-turbo-frequency(MHz):3100
772 bucket-4
773 core-count:10
774 max-turbo-frequency(MHz):3100
775 bucket-5
776 core-count:12
777 max-turbo-frequency(MHz):3100
778 bucket-6
779 core-count:14
780 max-turbo-frequency(MHz):3100
781 bucket-7
782 core-count:16
783 max-turbo-frequency(MHz):3100
784
785Based on the data above, when all the CPUS are busy, the max. frequency of 3100
786MHz can be achieved. If there is some busy workload on cpu 0 - 11 (e.g. stress)
787and on CPU 12 and 13, execute "hackbench pipe" workload::
788
789 # taskset -c 12,13 perf bench -r 100 sched pipe
790 # Running 'sched/pipe' benchmark:
791 # Executed 1000000 pipe operations between two processes
792 Total time: 5.705 [sec]
793 5.705488 usecs/op
794 175269 ops/sec
795
796The turbostat output::
797
798 #turbostat -c 0-13 --show Package,Core,CPU,Bzy_MHz -i 1
799 Package Core CPU Bzy_MHz
800 0 0 0 3000
801 0 1 1 3000
802 0 2 2 3000
803 0 3 3 3000
804 0 4 4 3000
805 0 5 5 3100
806 0 6 6 3100
807 0 7 7 3000
808 0 8 8 3100
809 0 9 9 3000
810 0 10 10 3000
811 0 11 11 3000
812 0 12 12 3100
813 0 13 13 3100
814
815Based on turbostat output, the performance is limited by frequency cap of 3100
816MHz. To check if the hackbench performance can be improved for CPU 12 and CPU
81713, first check the capability of the Intel(R) SST-TF feature for this performance
818level.
819
820Get Intel(R) SST-TF Capability
821~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
822
823To get the capability, the "turbo-freq info" command can be used::
824
825 # intel-speed-select turbo-freq info -l 0
826 Intel(R) Speed Select Technology
827 Executing on CPU model: X
828 package-0
829 die-0
830 cpu-0
831 speed-select-turbo-freq
832 bucket-0
833 high-priority-cores-count:2
834 high-priority-max-frequency(MHz):3200
835 high-priority-max-avx2-frequency(MHz):3200
836 high-priority-max-avx512-frequency(MHz):3100
837 bucket-1
838 high-priority-cores-count:4
839 high-priority-max-frequency(MHz):3100
840 high-priority-max-avx2-frequency(MHz):3000
841 high-priority-max-avx512-frequency(MHz):2900
842 bucket-2
843 high-priority-cores-count:6
844 high-priority-max-frequency(MHz):3100
845 high-priority-max-avx2-frequency(MHz):3000
846 high-priority-max-avx512-frequency(MHz):2900
847 speed-select-turbo-freq-clip-frequencies
848 low-priority-max-frequency(MHz):2600
849 low-priority-max-avx2-frequency(MHz):2400
850 low-priority-max-avx512-frequency(MHz):2100
851
852Based on the output above, there is an Intel(R) SST-TF bucket for which there are
853two high priority cores. If only two high priority cores are set, then max.
854turbo frequency on those cores can be increased to 3200 MHz. This is 100 MHz
855more than the base turbo capability for all cores.
856
857In turn, for the hackbench workload, two CPUs can be set as high priority and
858rest as low priority. One side effect is that once enabled, the low priority
859cores will be clipped to a lower frequency of 2600 MHz.
860
861Enable Intel(R) SST-TF
862~~~~~~~~~~~~~~~~~~~~~~
863
864To enable Intel(R) SST-TF, execute::
865
866 # intel-speed-select -c 12,13 turbo-freq enable -a
867 Intel(R) Speed Select Technology
868 Executing on CPU model: X
869 package-0
870 die-0
871 cpu-12
872 turbo-freq
873 enable:success
874 package-0
875 die-0
876 cpu-13
877 turbo-freq
878 enable:success
879 package--1
880 die-0
881 cpu-63
882 turbo-freq --auto
883 enable:success
884
885In this case, the option "-a" is optional. If set, it enables Intel(R) SST-TF
886feature and also sets the CPUs to high and low priority using Intel Speed
887Select Technology Core Power (Intel(R) SST-CP) features. The CPU numbers passed
888with "-c" arguments are marked as high priority, including its siblings.
889
890If -a option is not used, then the following steps are required before enabling
891Intel(R) SST-TF:
892
893- Discover Intel(R) SST-TF and note buckets of high priority cores and maximum frequency
894
895- Enable CLOS using core-power feature set - Configure CLOS parameters
896
897- Subscribe desired CPUs to CLOS groups making sure that high priority cores are set to the maximum frequency
898
899If the same hackbench workload is executed, schedule hackbench threads on high
900priority CPUs::
901
902 #taskset -c 12,13 perf bench -r 100 sched pipe
903 # Running 'sched/pipe' benchmark:
904 # Executed 1000000 pipe operations between two processes
905 Total time: 5.510 [sec]
906 5.510165 usecs/op
907 180826 ops/sec
908
909This improved performance by around 3.3% improvement on a busy system. Here the
910turbostat output will show that the CPU 12 and CPU 13 are getting 100 MHz boost.
911The turbostat output::
912
913 #turbostat -c 0-13 --show Package,Core,CPU,Bzy_MHz -i 1
914 Package Core CPU Bzy_MHz
915 ...
916 0 12 12 3200
917 0 13 13 3200