![設定 CPU 配額時 powersave freq Governor 的行為](https://rvso.com/image/898959/%E8%A8%AD%E5%AE%9A%20CPU%20%E9%85%8D%E9%A1%8D%E6%99%82%20powersave%20freq%20Governor%20%E7%9A%84%E8%A1%8C%E7%82%BA.png)
我試圖了解在 cpu cgroup 子系統中設定 cpu.cpu_quota_us 對應用程式效能的影響。本質上是透過減少 CPU 配額,但增加 CPU 數量,使「有效」CPU 仍然相同,這會影響應用程式嗎?例如,4 CPU 100% 配額配置與 8 CPU 50% 配額配置相同嗎?
我寫了一個簡單的CPU密集型程序 https://github.com/ashu-mehra/cpu-quota-test並在以下 cgroup 配置下運行它:
1)在有4個cpu且沒有配額限制的cgroup中
2) 在有8個cpu和50%配額的cgroup中
當為 32 個執行緒運行該程式時,我注意到該程式報告的兩種配置的吞吐量存在以下差異:
4CPU@100 8CPU@50 176236 87252.5
8CPU@50 的效能還不到 4CPU@100 的一半。
在進一步調試時,我注意到我的系統配置為使用“省電”CPU 頻率調節器。在此模式下,當程式在 4CPU@100 上運作時,核心的 CPU 頻率會達到最大值,但對於 8CPU@50 核心的 CPU 頻率則低得多。
當我將 CPU 頻率調節器變更為「效能」(這是唯一可用的其他頻率調節器)時,隨著核心開始以最大頻率運行,8CPU@50 的效能顯著提高:
4CPU@100 8CPU@50 175804 163831
我的系統詳細資料是:
Ubuntu 16.04.2 LTS
內核 4.4.0-103-通用
我對 CPUFreq 調節器有以下問題:
1)這個鏈接https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt告訴我們,“CPUfreq 調節器‘powersave’將 CPU 靜態設定為scaling_min_freq 和scaling_max_freq 範圍內的最低頻率。”然而,我注意到頻率隨著負載的增加而變化。 「省電」實際上是如何運作的?
2) Wy 是當使用「powersave」CPU 頻率調節器並設定 CPU 配額時,CPU 頻率不會增加到最大。設定 CPU 配額是否會導致「powersave」行為異常?
答案1
您的問題 1 中引用的文件適用於 acpi-cpufreq CPU 頻率縮放驅動程式。我認為,但不確定,您正在使用 intel_pstate CPU 頻率縮放驅動程式。確定的方法是詢問您的系統:
$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_driver
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate 驅動程式中的 powersave 調控器的行為與 acpi-cpufreq 驅動程式中的 ondemand 調控器類似。控制演算法一直在變化,但如果您有足夠新的內核,則應該是基於負載的。
當您將使用限制為 50% 時,CPU 頻率不會上升太多,甚至根本不會上升,因為基於負載的演算法沒有提供足夠的負載來保證提高 CPU 頻率。