我需要在不同的VM上运行docker容器,cpu处理时间限制为80%。同时,我不知道目标虚拟机将有多少cpu/内核/线程。Docker提供了一些控制cpu限制的参数。最适合我的是cpu-quota
。但看起来是每个cpu。例如,我有以下配置的VM:
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
当我将cpu-quota
设置为80000(即10K的80%(时,它只使用一个cpu,而不是两个可用的cpu。
有没有办法以一种常见的方式设置80%的cpu限制,而不对每个VM进行调整?从字面上讲,我需要说";嘿,不管你有多少cpu/内核/线程等,请让这个容器只使用80%"?有可能吗?如果没有,该怎么办,分别为每个虚拟机设置限制?
正如网站所说:控制cpu限制
--cpu周期表示
指定CPU CFS调度程序周期
--cpu配额表示
对容器强制执行CPU CFS配额。在抑制之前,容器被限制为每个cpu周期的微秒数
如果使用--cpu-quota
,则必须首先使用--cpu-period
--cpus
是一种更方便的替代
--cpus 1.6
这相当于设置--cpu-period="100000" and --cpu-quota="160000"
如果你想使用所有2个cpu,它使用80%:
可以使用设置:--cpu-period="80000" and --cpu-quota="200000"
如果您想在每个虚拟机中运行相同的命令:
--cpu-period="80000" --cpu-quota="$(cat /proc/cpuinfo | grep processor | wc -l)0000"