web-dev-qa-db-ja.com

リソースの制約が尊重されないのはなぜですか?

システムの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 

Cgroupに関するsystemdログにいくつかの警告が表示されます

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

リソース制限が無視されるのはなぜですか?この問題をトラブルシューティングするための私のオプションは何ですか?

2
Semaphor

これに苦労している人のために、代わりに

systemctl daemon-reload
systemctl restart docker

これを行う

systemctl daemon-reload
systemctl start limit-docker.slice
systemctl restart docker
0
Semaphor