2016-03-19 79 views
0

要限制用戶的可用內核數,我決定使用cgroup。所以,通過創建一個組,我必須爲cpu.shares設置一個數字。假設系統中有32個內核,我想限制用戶只有4個內核。什麼是該參數的正確值?限制用戶的CPU數

據我所知,我必須使用400,因爲總CPU時間是3200.我是否正確?

+0

你有看過這個問題:http://serverfault.com/questions/603861/limit-user-to-n-cpu-cores – SMohan

+0

我在看http://unix.stackexchange.com/ questions/5106那麼nice和cgroup有什麼區別? – mahmood

回答

1

首先你應該知道cpu.shares沒有設置限制爲內核數量。它是用於計算CFS調度程序中消耗的CPU資源的通用參數。

I.e.如果系統中有兩個應用程序都花費了1秒的CPU時間,CFS會將它們的vruntime設置爲10 /cpu.shares,所以它們都需要更多的CPU時間,他們有相同的機會獲得它。現在

,如果調整cpu.shares到更小的值(即128),用於第一應用,它會得到vruntime = 10 /128 = 7.8 * 10 ,而第二個(與股未調整值)將得到vruntime = 10 /1024 = 0.9 * 10 。與較小的vruntime進程將被選中在CPU上執行第一,所以第二個應用程序可以執行7秒鐘,除非CPU將提供給第一個應用程序。

請注意,此優先級僅適用於存在第二個CPU貪婪應用程序。如果只有「有限」用戶的應用程序正在工作,CFS調度程序將把它們放在CPU上,這樣它們可以佔用32個核心中的全部。

最後,回答最初的問題,你的任務是純粹的數學:

 x  4 
-------- = ---- 
1024 + x 32 

您應該設置cpu.shares到。

+0

這並沒有限制CPU數量。請在http://unix.stackexchange.com/questions/270938查看我的新主題 – mahmood