cpu做為能耗很高的硬件,最近幾年廠商在節能方面做了很多處理,在服務器運行時,基於負載情況可調節成節能模式,節省電能,副作用是cpu的頻率會降低,導致應用程序性能降低。
有第三方統計,服務器規模達到萬台以上時,最大的成本消耗其實是電能
bios 設置
一般服務器的BIOS設置中會有一項來說明是否開啟cpu節能模式
但是我們發現有些服務器即使關閉了cpu節能,還是會有被降頻的情況。
操作系統
操作系統也能對cpu頻率進行調整,主要有兩個工具
X86_ENERGY_PERF_POLICY
x86_energy_perf_policy 是紅帽提供設置intel cpu節能模式的工具,默認我們服務器都是normal模式,我們要想獲取最高性能要開啟性能模式。
x86_energy_perf_policy performance
它是通過msr cpu寄存器來調整cpu頻率,基本就是寫/dev/cpu/*/msr這個設備
服務器上我們已經調整了此參數,但是還是有機器出現降頻情況。最后發現在centos7中還有一個工具可以調節cpu頻率,就是cpupower。
cpupower
cpupower是centos7上(實際上是在3.04內核后)引入的一個工具,用於在用戶態微調cpu頻率。
x86_energy_perf_policy 可理解為“硬調節”,cpupower屬於“微調”
調整cpu頻率無非就是要在“能耗”和“性能”上取得平衡,基本上調整的策略有以下幾種。
而在centos7上有一個kernel-tools的包,提供一些工具來調整和查看cpu的狀態
/etc/sysconfig/cpupower
/usr/bin/centrino-decode
/usr/bin/cpupower
/usr/bin/powernow-k8-decode
/usr/bin/tmon
/usr/bin/turbostat
/usr/bin/x86_energy_perf_policy
/usr/lib/systemd/system/cpupower.service
我們默認的策略是這樣
cpupower frequency-info --policy
analyzing CPU 0: 1200000 3200000 powersave
powersave運行最小頻率,當然cpu也會根據使用繁忙程度來升頻率,有可能它的算法沒有那么智能,導致你要用cpu時候,它還沒來得及升上來。 注意這個文件“/usr/lib/systemd/system/cpupower.service”,說明cpupower已經變成一個服務了,再看下這個文件“/etc/sysconfig/cpupower”
# See "cpupower help" and cpupower(1) for more info CPUPOWER_START_OPTS="frequency-set -g performance" CPUPOWER_STOP_OPTS="frequency-set -g ondemand
說明只要啟動這個服務,默認就調整成performance模式了。
systemctl start cpupower
其它
查看當前cpu策略
cpupower frequency-info --policy
修改策略
cpupower frequency-set -g powersave
實時查看cpu頻率
watch -n 1 "cat /proc/cpuinfo | grep MHz"
內核信息查看
#使用的intel驅動
/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver
#intel_pstate驅動詳細信息
/sys/devices/system/cpu/intel_pstate/
#各種頻率相關
/sys/devices/system/cpu/cpu0/cpufreq/
#查看當前cpu策略
/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor