目錄
- linux CPU模式批量由cpupower轉performance
- cpu模式說明
- ubuntu18.04 CPU更改為performance模式之后,重啟自動恢復為powersave模式的解決
- performance重啟自動恢復為powersave模式的解決
- 總結
linux CPU模式批量由cpupower轉performance
CPU動態節能技術用于降低服務器功耗,通過選擇系統空閑狀態不同的電源管理策略,可以實現不同程度降低服務器功耗,更低的功耗策略意味著CPU喚醒更慢對性能影響更大。
對于對時延和性能要求高的應用,建議關閉CPU的動態調節功能,禁止 CPU休眠,并把CPU頻率固定到最高。
通常建議在服務器BIOS中修改電源管理為Performance,如果發現CPU模式為conservative或者powersave,可以使用cpupower設置CPU Performance模式。
cpufreq是一個動態調整cpu頻率的模塊,系統啟動時生成一個文件夾/sys/devices/system/cpu/cpu0/cpufreq/,里面有幾個文件,其中scaling_min_freq代表最低頻率,scaling_max_freq代表最高頻率,scalin_governor代表cpu頻率調整模式,用它來控制CPU頻率。
cpu的個數可查詢路徑為:/sys/devices/system/cpu/。
wm@wm-MS-7A70:~/LMHWork$ cd /sys/devices/system/cpu wm@wm-MS-7A70:/sys/devices/system/cpu$ ls cpu0 ?cpu2 ?cpu4 ?cpu6 ?cpufreq ?hotplug ? ? ? isolated ? ?microcode ?offline ?possible ?present ?uevent cpu1 ?cpu3 ?cpu5 ?cpu7 ?cpuidle ?intel_pstate ?kernel_max ?modalias ? online ? power ? ? smt ? ? ?vulnerabilities wm@wm-MS-7A70:/sys/devices/system/cpu$?
打開cpu0/cpufreq/scaling_governor默認是powersave模式,可以批量更改為performance模式,這樣當測試時候,cpu都能保持高效運行,使測試更加精確。
批量修改方法:
建立一個cpu_set_performance.sh文件,里面代碼如下, 如果你的cpu是8個,就在for循環里面寫7,否則修改為你的cpu個數。
for i in `seq 0 7` do ? echo performance > /sys/devices/system/cpu/cpu${i}/cpufreq/scaling_governor done
cpu模式說明
performance
: 顧名思義只注重效率,將CPU頻率固定工作在其支持的最高運行頻率上,而不動態調節。Userspace
:最早的cpufreq子系統通過userspace governor為用戶提供了這種靈活性。系統將變頻策略的決策權交給了用戶態應用程序,并提供了相應的接口供用戶態應用程序調節CPU 運行頻率使用。也就是長期以來都在用的那個模式。可以通過手動編輯配置文件進行配置powersave
: 將CPU頻率設置為最低的所謂“省電”模式,CPU會固定工作在其支持的最低運行頻率上。因此這兩種governors 都屬于靜態governor,即在使用它們時CPU 的運行頻率不會根據系統運行時負載的變化動態作出調整。這兩種governors 對應的是兩種極端的應用場景,使用performance governor 是對系統高性能的最大追求,而使用powersave governor 則是對系統低功耗的最大追求。ondemand
: 按需快速動態調整CPU頻率, 一有cpu計算量的任務,就會立即達到最大頻率運行,等執行完畢就立即回到最低頻率;ondemand:userspace是內核態的檢測,用戶態調整,效率低。而ondemand正是人們長期以來希望看到的一個完全在內核態下工作并且能夠以更加細粒度的時間間隔對系統負載情況進行采樣分析的governor。 在 ondemand governor 監測到系統負載超過 up_threshold 所設定的百分比時,說明用戶當前需要 CPU 提供更強大的處理能力,因此 ondemand governor 會將CPU設置在最高頻率上運行。但是當 ondemand governor 監測到系統負載下降,可以降低 CPU 的運行頻率時,到底應該降低到哪個頻率呢? ondemand governor 的最初實現是在可選的頻率范圍內調低至下一個可用頻率,例如 CPU 支持三個可選頻率,分別為 1.67GHz、1.33GHz 和 1GHz ,如果 CPU 運行在 1.67GHz 時 ondemand governor 發現可以降低運行頻率,那么 1.33GHz 將被選作降頻的目標頻率。conservative
: 與ondemand不同,平滑地調整CPU頻率,頻率的升降是漸變式的,會自動在頻率上下限調整,和ondemand的區別在于它會按需分配頻率,而不是一味追求最高頻率;
ubuntu18.04 CPU更改為performance模式之后,重啟自動恢復為powersave模式的解決
performance重啟自動恢復為powersave模式的解決
1.安裝sysfsutils
?sudo apt-get install sysfsutils
2.查看當前調節器
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
3.關閉ondemand服務
systemctl stop ondemand systemctl disable ondemand
4.然后更改sysfutils啟動文件/etc/sysfs.conf
vim /etc/sysfs.conf
有多少個CPU,就添加對應數量的代碼,并更改*為對應的CPU編號
devices/system/cpu/cpu*/cpufreq/scaling_governor = performance
例如,有4個CPU,在sysfs.conf文件中添加如下代碼:
devices/system/cpu/cpu0/cpufreq/scaling_governor = performance devices/system/cpu/cpu1/cpufreq/scaling_governor = performance devices/system/cpu/cpu2/cpufreq/scaling_governor = performance devices/system/cpu/cpu3/cpufreq/scaling_governor = performance
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持。