私のリソース制限が遵守されないのはなぜですか?

私のリソース制限が遵守されないのはなぜですか?

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

関連情報