2014-10-13 4 views
3

Docker 컨테이너 CPU 사용에 절대 제한을 설정하려고합니다. CPU 공유 개념 (docker run -c <shares>)은 상대적이지만, "이 컨테이너가 100ms마다 최대 20ms의 CPU 시간을 사용하도록합니다. 가장 가까운 대답은 및 cpu.cfs_period_us을 사용하는 경우 hint from the mailing list입니다. docker run을 사용할 때이 설정을 사용 하시겠습니까?Docker 컨테이너의 CPU 절대 한계 설정

LXC 지원 Docker (예 : pre0.9) 또는 이후 버전에 대한 엄격한 요구 사항이 없으므로 사용되는 설정 예를 참조하십시오. 관련 문서 나 유용한 블로그에 대해서도 환영합니다. 현재 우분투 12.04를 사용 중이며 /sys/fs/cgroup/cpu/docker 아래에 다음과 같은 옵션이 있습니다 :

$ ls /sys/fs/cgroup/cpu/docker 
cgroup.clone_children cpu.cfs_quota_us cpu.stat 
cgroup.event_control cpu.rt_period_us notify_on_release 
cgroup.procs   cpu.rt_runtime_us tasks 
cpu.cfs_period_us  cpu.shares 

답변

5

나는 이것이 효과가 있다고 믿는다. 이 cgroup 인수를 libcontainer으로 전달할 수있는 방법을 찾지 못했기 때문에 --exec-driver=lxc으로 Docker 데몬을 다시 시작해야했습니다. 이 방법은 나를 위해 일한 : 대역폭 제한에

# Run with absolute limit 
sudo docker run --lxc-conf="lxc.cgroup.cpu.cfs_quota_us=50000" -it ubuntu bash 

필요한 CFS의 문서는 here이다.

나는 간단히 다음과 같이이 절대 제한을 소개하는 것 않습니다 sysbench으로 확인 :

$ sudo docker run --lxc-conf="lxc.cgroup.cpu.cfs_quota_us=10000" --lxc-conf="lxc.cgroup.cpu.cfs_period_us=50000" -it ubuntu bash 
[email protected]:/# sysbench --test=cpu --num-threads=1 run 
    <snip> 
    total time:       90.5450s 
$ sudo docker run --lxc-conf="lxc.cgroup.cpu.cfs_quota_us=20000" --lxc-conf="lxc.cgroup.cpu.cfs_period_us=50000" -it ubuntu bash 
[email protected]:/# sysbench --test=cpu --num-threads=1 run 
    <snip> 
    total time:       45.0423s