目前的cpu使用率,第一个mapper进程(docker运行的),使用率20%左右。
如果你在Linux 上安装了Docker,你就会发现所有子系统的目录下都有一个名为docker 的目录
cpu.cfs_quota_us 文件中的内容能够对CPU 的使用作出限制
通过修改docker配置文件,来对cpu使用率做限额
路径如下:
cd /sys/fs/cgroup/cpu/docker/+dockerid
这里我们把限制改为10000,表示使用百分之十的cpu(总的时间片是100000,也就是100ms)。
echo 10000 > cpu.cfs_quota_us
这时候可以看到第一个mapper进程,cpu的使用率在10%左右,我们设置的配额是一个上限值。
除了修改配置文件,还可以在Docker run 命令 添加CPU 限制相关参数
选项 |
描述 |
---|---|
--cpuset-cpus="" |
允许使用的 CPU 集,值可以为 0-3,0,1 |
-c ,--cpu-shares=0 |
CPU 共享权值(相对权重) |
cpu-period=0 |
限制 CPU CFS 的周期,范围从 100ms~1s,即[1000, 1000000] |
--cpu-quota=0 |
限制 CPU CFS 配额,必须不小于1ms,即 >= 1000 |
--cpuset-mems="" |
允许在上执行的内存节点(MEMs),只对 NUMA 系统有效 |
Linux 通过 CFS(Completely Fair Scheduler,完全公平调度器)来调度各个进程对 CPU 的使用。CFS 默认的调度周期是 100ms。
例如:
将 CFS 调度的周期设为 100000,将容器在每个周期内的 CPU 配额设置为 20000,表示该容器每 100ms 可以得到 20% 的 CPU 运行时间。
docker run -it --cpu-period=100000 --cpu-quota=20000 ubuntu:16.04 /bin/bash
详细的可以使用docker run --help查看。