Linux

外部限制使用的 CPU 核心數量

  • August 27, 2015

我需要從外部將程序/會話限制為一定數量的核心。

除了 CPU 親和力(我不喜歡指定實際核心)和 cgroups(難以集成到我們的項目中)之外,還有其他可能性嗎?

我們最終選擇了 cgroups,因為似乎沒有任何其他方法可以實現這一點。

Cgroups 允許通過核心調度程序限制 CPU 使用率,使用cpu.cfs_period_uscpu.cfs_quota_us. 這避免了明確指定 CPU 核心。

好吧,對於 CPU 親和性位,這通常是為了解決與正在執行程序的物理 CPU 相關的一組不同的問題。這就是為什麼您必須使用 CPU 親和性來指定您正在談論的特定 CPU。

從您不關心使用哪個 CPU 的事實來看,我猜您只是想重新塑造時間片。cgroups 實際上完成了你想要的東西,並且是調整 CPU 時間的機制,而與執行 CPU 無關。

決定性的區別基本上可以歸結為:要麼你關心你的程序在哪些物理核心上執行,要麼你不關心。如果您沒有任何需要程序在特定 CPU 上執行的性能要求(某些 CPU 記憶體保持溫暖,確保相關程序不在外部 NUMA 節點上執行,特定中斷由一組特定 CPU 處理等)那麼您可能只是想控制 CPU 時間分配。在這種情況下,當您真正的意思是“CPU 時間”時,用“CPU 核心”來思考是錯誤的。

你很難整合 cgroup 的哪些部分?一旦我知道您遇到了什麼具體問題,我就可以更新我的答案。

引用自:https://unix.stackexchange.com/questions/77740