Merge pull request 'Add readme for cpupower' (#8) from cpupower-readme into main
Reviewed-on: #8
This commit is contained in:
commit
015c6ee3dc
171
cpupower/readme.md
Normal file
171
cpupower/readme.md
Normal file
@ -0,0 +1,171 @@
|
||||
# CPU Power and C-State configuration
|
||||
|
||||
|
||||
## Introduction
|
||||
During a investigation of performance related issues, it turned out that
|
||||
|
||||
- setting the governor to performance (default: powersave)
|
||||
- limit the CPU to enter at maximum C1 or C1E C-State, depening on power savings needed, cooling situation and/or CPU temperature headroom
|
||||
|
||||
brings huge performance benefits.
|
||||
|
||||
This mainly concentrates on GlusterFS based installations and we did not recognize any pro or con in MinIO setups so far.
|
||||
|
||||
### C1 vs C1E
|
||||
- C1E still allows CPU frerquency scaling where C1 would run at 100% all the time. So C1E still gives some power savings over C1.
|
||||
- The Intel Xeon Silver series CPUs provide a bitger temperature headroom which makes it a better candidate for using C1
|
||||
- The Intel Xeon Gold series CPU do not provide as much temperature headroom and may run into temperature throttling, which depends on cooling environment
|
||||
- If temperature issues arise at C1, a counter measure would be to configure the fans in iLO
|
||||
- look in *dmesg*
|
||||
- iLO: *Power & Thermal → Temperatures:* Here are temperatures and thresholds
|
||||
- *ipmitool sensor* gives also information about temperatures and thresholds
|
||||
- *Power & Thermal → Fans → Thermal Configuration: Enhanced CPU Cooling,* to provide a better CPU cooling
|
||||
|
||||
## How To Activate
|
||||
Basically one can activate/change these settings during runtime or via a grub option. Setting it via runtime using scripts is more flexible and does not need a reboot.
|
||||
|
||||
### Via Script
|
||||
To make these settings reboot persistent and activate/change them on a running, a systemd service is configured to run the script at boot or can be restarted to change settings.
|
||||
|
||||
Copy the three files as follows to the system you want to activate the CPU power settings. E.g. to */home/l3support/cpupower*
|
||||
|
||||
- cpupower
|
||||
- configuration file for the *cpupower.sh* scipt
|
||||
- cpupower.sh
|
||||
- script that uses *cpupower* command to set governor and cstates
|
||||
- cpupower.service
|
||||
- systemd service that starts *cpupower.sh* at bootup
|
||||
|
||||
Once the files are available at the server, one can use the *l3support* user to distribute the files to the servers and copy them into the correct location.
|
||||
|
||||
```
|
||||
ansible -b storage\_nodes -m copy -a "src=cpupower dest=/etc/default/cpupower"
|
||||
ansible -b storage\_nodes -m copy -a "src=cpupower.service dest=/etc/systemd/system/cpupower.service"
|
||||
ansible -b storage\_nodes -m copy -a "src=cpupower.sh dest=/usr/local/sbin/cpupower.sh mode=0755"
|
||||
```
|
||||
|
||||
Then activate the sytsemd service
|
||||
|
||||
```
|
||||
ansible -b storage\_nodes -m shell -a "systemctl daemon-reload"
|
||||
ansible -b storage\_nodes -m shell -a "systemctl enable --now cpupower.service"
|
||||
```
|
||||
|
||||
#### Sidenotes
|
||||
|
||||
##### cpupower.sh
|
||||
The script uses *cpupower idle-set --disable-by-latency*, which is out of convenience since this option allows to disable all C-States that take more time than specified at once. While just using disable just disables a single C-States but does not disable deeper one. E.g. (based on the example from [cpupower idle-info](#cpupowerandc-stateconfiguration-cpupowe)) *cpupower idle-set --disable 4* would disable C1E status but would leave C6 status active...
|
||||
|
||||
## How To Check the actual status
|
||||
To check the actual status of the CPU power settings it is recommended to query it directly with *cpupower*.
|
||||
|
||||
ansible -b storage\_nodes -m shell -a "cpupower frequency-info | grep governor; cpupower idle-info | egrep '^C|POLL'"
|
||||
|
||||
Here is an example output of the desired status and one can see that
|
||||
|
||||
- the governor is set to performance
|
||||
- only C-States Poll (C0), C1 are enabled, all others are disabled
|
||||
|
||||
```
|
||||
myserver| CHANGED | rc=0 >>
|
||||
available cpufreq governors: performance powersave
|
||||
The governor "performance" may decide which speed to use
|
||||
CPUidle driver: intel\_idle
|
||||
CPUidle governor: menu
|
||||
POLL:
|
||||
C1:
|
||||
C1E (DISABLED) :
|
||||
C6 (DISABLED) :
|
||||
```
|
||||
|
||||
## Full output examples
|
||||
|
||||
### cpupower frequency-info
|
||||
Some CPUs do not allow to set the governor which is OK then. One can try to set the *Power Regulator* to *Static High Performance Mode* in iLO and test performance.
|
||||
|
||||
|
||||
```
|
||||
# cpupower frequency-info
|
||||
analyzing CPU 0:
|
||||
driver: intel_pstate
|
||||
CPUs which run at the same hardware frequency: 0
|
||||
CPUs which need to have their frequency coordinated by software: 0
|
||||
maximum transition latency: Cannot determine or is not supported.
|
||||
hardware limits: 800 MHz - 3.60 GHz
|
||||
available cpufreq governors: performance powersave
|
||||
current policy: frequency should be within 800 MHz and 3.60 GHz.
|
||||
The governor "performance" may decide which speed to use
|
||||
within this range.
|
||||
current CPU frequency: Unable to call hardware
|
||||
current CPU frequency: 3.40 GHz (asserted by call to kernel)
|
||||
boost state support:
|
||||
Supported: yes
|
||||
Active: yes
|
||||
```
|
||||
|
||||
### cpupower idle-info
|
||||
|
||||
```
|
||||
# cpupower idle-info
|
||||
CPUidle driver: intel_idle
|
||||
CPUidle governor: menu
|
||||
analyzing CPU 0:
|
||||
|
||||
Number of idle states: 4
|
||||
Available idle states: POLL C1 C1E C6
|
||||
POLL:
|
||||
Flags/Description: CPUIDLE CORE POLL IDLE
|
||||
Latency: 0
|
||||
Usage: 69491797
|
||||
Duration: 6844908294
|
||||
C1:
|
||||
Flags/Description: MWAIT 0x00
|
||||
Latency: 1
|
||||
Usage: 472669351
|
||||
Duration: 381352246947
|
||||
C1E (DISABLED) :
|
||||
Flags/Description: MWAIT 0x01
|
||||
Latency: 4
|
||||
Usage: 1957301007
|
||||
Duration: 899230612315
|
||||
C6 (DISABLED) :
|
||||
Flags/Description: MWAIT 0x20
|
||||
Latency: 170
|
||||
Usage: 878016383
|
||||
Duration: 1773269582945
|
||||
```
|
||||
|
||||
### Related tools
|
||||
|
||||
#### turbostat
|
||||
With *turbostat* one can gather CPU metrics like time spend in different C-States, power consumption, temperatures... Output is very large, so prepare to have a maximized terminal.
|
||||
|
||||
```
|
||||
Core CPU Avg_MHz Busy% Bzy_MHz TSC_MHz IPC IRQ SMI POLL C1 C1E C6 POLL% C1% C1E% C6% CPU%c1 CPU%c6 CoreTmp PkgTmp Pkg%pc2 Pkg%pc6 PkgWatt RAMWatt PKG_% RAM_%
|
||||
- - 213 7.89 2700 2195 0.49 95450 0 45223 95525 0 0 4.02 92.43 0.00 0.00 92.11 0.00 45 45 0.00 0.00 34.25 0.00 0.00 0.00
|
||||
0 0 197 7.30 2700 2195 0.50 3890 0 1813 4514 0 0 3.48 93.00 0.00 0.00 92.70 0.00 45 45 0.00 0.00 34.25 0.00 0.00 0.00
|
||||
0 10 242 9.00 2700 2195 0.48 5433 0 2741 5167 0 0 4.90 91.33 0.00 0.00 91.00
|
||||
1 1 246 9.14 2700 2195 0.42 6491 0 3014 5437 0 0 5.30 91.29 0.00 0.00 90.86 0.00 45
|
||||
1 11 264 9.80 2700 2195 0.38 6865 0 3240 5883 0 0 5.88 90.62 0.00 0.00 90.20
|
||||
2 2 194 7.21 2700 2195 0.50 3874 0 1540 4683 0 0 3.15 93.12 0.00 0.00 92.79 0.00 43
|
||||
2 12 235 8.71 2700 2195 0.43 5153 0 2900 4718 0 0 4.95 91.60 0.00 0.00 91.29
|
||||
3 3 196 7.29 2700 2195 0.52 4027 0 1987 4194 0 0 3.56 92.99 0.00 0.00 92.71 0.00 43
|
||||
3 13 218 8.11 2700 2195 0.43 5521 0 2528 5168 0 0 4.46 92.24 0.00 0.00 91.89
|
||||
4 4 183 6.80 2700 2195 0.56 3568 0 1512 4035 0 0 2.89 93.50 0.00 0.00 93.20 0.00 44
|
||||
4 14 209 7.77 2700 2195 0.49 4807 0 2311 4751 0 0 3.99 92.54 0.00 0.00 92.23
|
||||
8 5 188 6.96 2700 2195 0.50 4443 0 1524 5291 0 0 2.96 93.40 0.00 0.00 93.04 0.00 44
|
||||
8 15 232 8.63 2700 2195 0.50 5317 0 2811 4410 0 0 4.61 91.69 0.00 0.00 91.37
|
||||
9 6 226 8.41 2700 2195 0.49 4864 0 2735 4246 0 0 4.58 91.90 0.00 0.00 91.59 0.00 45
|
||||
9 16 190 7.07 2700 2195 0.55 4149 0 1669 4992 0 0 3.23 93.24 0.00 0.00 92.93
|
||||
10 7 220 8.15 2700 2195 0.43 4415 0 2429 4617 0 0 4.47 92.17 0.00 0.00 91.85 0.00 44
|
||||
10 17 187 6.95 2700 2195 0.50 4063 0 1738 4735 0 0 3.24 93.38 0.00 0.00 93.05
|
||||
11 8 178 6.59 2700 2195 0.54 4269 0 1444 4982 0 0 2.71 93.73 0.00 0.00 93.41 0.00 43
|
||||
11 18 252 9.34 2700 2195 0.59 5751 0 3163 4867 0 0 5.12 90.96 0.00 0.00 90.66
|
||||
12 9 241 8.96 2700 2195 0.44 5364 0 3254 4389 0 0 5.15 91.34 0.00 0.00 91.04 0.00 43
|
||||
12 19 154 5.70 2700 2195 0.72 3186 0 870 4446 0 0 1.75 94.60 0.00 0.00 94.30
|
||||
```
|
||||
|
||||
Helpful options are
|
||||
|
||||
- *-l* and *-H* to list and to hide colums
|
||||
- *-S* to get a summary of processor instead of single cores
|
||||
Loading…
Reference in New Issue
Block a user