내 시스템의 Docker 컨테이너에 사용 가능한 CPU 리소스를 제한하고 싶습니다. 단일 컨테이너의 리소스 소비를 제한하고 싶지 않고 모든 컨테이너의 리소스 소비를 제한하고 싶습니다.
먼저 슬라이스를 만들었습니다.
# /etc/systemd/system/limit-docker.slice
[Unit]
Description=Slice that limits docker resources
Before=slices.target
[Slice]
CPUAccounting=true
CPUQuota=300%
그런 다음 슬라이싱을 구성했습니다./etc/docker/daemon.json
{
"cgroup-parent": "/limit-docker.slice"
}
그런 다음 systemctl을 다시 로드하고 docker를 다시 시작합니다.
systemctl daemon-reload
systemctl restart docker
그런 다음 컨테이너를 시작하고 systemd-cgls를 사용하여 컨테이너가 제어 그룹의 일부인지 확인했습니다.
-.slice
├─limit-docker.slice
│ └─49d07f9319edfd727d4e6211d5d41c15daf49bc57174100d1ab80e2352170d7e
│ └─13685 python app.py execute
하지만 내가 지정한 리소스 제한이 준수되지 않았습니다.
Control Group Tasks %CPU Memory
/limit-docker.slice 34 388.3 3.5G
/limit-docker.slice/4…211d5d41c15daf49bc57174100d1ab80e2352170d7e 34 388.3 3.3G
systemd 로그에 cgroup에 대한 몇 가지 경고가 표시됩니다.
level=warning msg="Your kernel does not support swap memory limit"
level=warning msg="Your kernel does not support cgroup rt period"
level=warning msg="Your kernel does not support cgroup rt runtime"
내 이해는 이러한 cgroup이 내가 달성하려는 것과 아무 관련이 없으며 지원되지 않는 것은 중요하지 않다는 것입니다. 맞습니까?
Operating System: Debian GNU/Linux 9 (stretch)
Kernel: Linux 4.4.182-xenomai-2
systemd: 232
Docker: 18.06.1-ce
내 리소스 제한이 무시되는 이유는 무엇입니까? 이 문제를 해결하려면 어떤 옵션이 있어야 합니까?
답변1
이 문제로 어려움을 겪는 사람을 위해 대신
systemctl daemon-reload
systemctl restart docker
이 작업을 수행
systemctl daemon-reload
systemctl start limit-docker.slice
systemctl restart docker