如何在 Debian/Ubuntu 中启用 CFS cgroup 支持

kry*_*ode 5 ubuntu cgroups docker

我需要在主机上使用最新的 Debian (9) 或 Ubuntu (17.0.4) 来限制 Docker 容器中的 CPU。

\n\n
$ docker info\n  Containers: 0\n  Running: 0\n  Paused: 0\n  Stopped: 0\n  Images: 1\n  Server Version: 17.06.0-ce\n  Storage Driver: overlay2\n  Backing Filesystem: extfs\n  Supports d_type: true\n  Native Overlay Diff: true\n  Logging Driver: json-file\n  Cgroup Driver: cgroupfs\n  Plugins: \n    Volume: local\n    Network: bridge host macvlan null overlay\n  Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog\n  Swarm: inactive\n  Runtimes: runc\n  Default Runtime: runc\n  Init Binary: docker-init\n  containerd version: cfb82a876ecc11b5ca0977d1733adbe58599088a\n  runc version: 2d41c047c83e09a6d61d464906feb2a2f3c52aa4\n  init version: 949e6fa\n  Security Options:\n    seccomp\n  Profile: default\n  Kernel Version: 4.9.20-std-1\n  Operating System: Ubuntu 17.04\n  OSType: linux\n  Architecture: x86_64\n  CPUs: 4\n  Total Memory: 7.753GiB\n  ID: 2JJV:EM37:VCY5:HVKQ:MUNV:VV5N:H247:XE5Q:VBFD:6VES:P62H:YXPJ\n  Docker Root Dir: /var/lib/docker\n  Debug Mode (client): false\n  Debug Mode (server): false\n  Registry: https://index.docker.io/v1/\n  Experimental: false\n  Insecure Registries:\n    127.0.0.0/8\n  Live Restore Enabled: false\n\n  WARNING: No cpu cfs quota support\n  WARNING: No cpu cfs period support\n
Run Code Online (Sandbox Code Playgroud)\n\n

我环顾四周,但我还没有弄清楚如何在 Debian/Ubuntu 上实际启用 CFS 报价/句点支持。每当我尝试使用 --cpus 或 --cpu-shares 时,我都会收到错误:

\n\n
NanoCPUs can not be set, as your kernel does not support CPU cfs period/quota or the cgroup is not mounted.\n
Run Code Online (Sandbox Code Playgroud)\n\n

主机运行最新的 Ubuntu,内核为 4.9.20,因此应该有支持。在 Debian 9 上也是如此。\n有关于如何挂载提到的 cgroup 的说明或好的教程吗?

\n

小智 2

请参阅有关CFS 带宽控制的内核文档

要在内核中启用:

General setup --->
    -*- Control Group support ---> 
        -*- CPU controller --->
            -*- Group scheduling for SCHED_OTHER
               [*] CPU bandwidth provisioning for FAIR_GROUP_SCHED
Run Code Online (Sandbox Code Playgroud)

买者自负:在重新编译和安装发行版未提供的内核之前,请确保您知道自己在做什么。考虑 UEFI 安全启动,并从当前的.config.