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