要限制用户的可用核心数,我决定使用cgroup。因此,通过创建一个组,我必须为cpu.shares
设置一个数字。假设系统中有32个核心,我想将用户限制为仅4个核心。该参数的正确值是什么?
据我了解,由于总CPU时间为3200,我必须使用400.我是否正确?
答案 0 :(得分:1)
首先,您应该了解gulp-connect
未对核心数量设置硬限制。它是通用参数,用于计算CFS调度程序中消耗的CPU资源。
即。如果系统中有两个应用程序都花费1秒的CPU时间,CFS会将其cpu.shares
设置为10 9 / vruntime
,这样它们都需要更多的CPU时间,他们有平等的机会获得它。
现在,如果您为第一次申请将cpu.shares
调整为较小的值(即cpu.shares
),则会128
= 10 9 / 128 = 7.8 * 10 6 ,而第二个(未经调整的股票价值)将获得vruntime
= 10 9 / 1024 = 0.9 * 10 6 。具有较小vruntime
的进程将被选择在CPU上执行,因此第二个应用程序可以再执行7秒,除非CPU将被提供给第一个应用程序。
请注意,此优先级仅适用于第二个CPU贪婪的应用程序。如果只有"限制的应用程序"用户正在工作,CFS调度程序会将它们放在CPU上,因此它们可以占用所有32个核心。
最后,回答最初的问题,你的任务纯粹是数学的:
vruntime
您应该将 x 4
-------- = ----
1024 + x 32
设置为 146 。