設定 CPU 配額時 powersave freq Governor 的行為

設定 CPU 配額時 powersave freq Governor 的行為

我試圖了解在 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 頻率。

相關內容