Docker容器资源管理与生命周期操作全解析
1. 容器资源管理
1.1 CPU资源管理
1.1.1 CPU份额限制
与虚拟机不同,Docker基于cgroup的CPU份额限制是相对限制,而非硬限制,类似于 nice 命令。例如,一个容器被限制为使用一半的CPU份额,但如果系统负载不高,这种限制的效果可能不明显。因为在调度池中没有竞争,CPU有空闲资源。但当另一个占用大量CPU的容器部署到同一系统时,第一个容器的CPU限制效果就会显现出来。所以在限制容器资源和分配资源时,需要仔细考虑。
1.1.2 CPU绑定
可以将容器绑定到一个或多个CPU核心,这样该容器的工作将仅在分配给它的核心上调度。示例命令如下:
$ docker run --rm -ti -c 512 --cpuset=0 progrium/stress \
--cpu 2 --io 1 --vm 2 --vm-bytes 128M --timeout 120s
注意: --cpuset 参数是从0开始索引的,即第一个CPU核心是0。如果指定了主机系统不存在的CPU核心,会出现 Cannot start container 错误。例如,在一个双CPU的主机上,使用 --cpuset=0,1,2 就会报错。
绑定CPU后,再次运行 top 命令,会发现用户空间(us)的CPU时间百分比
超级会员免费看
订阅专栏 解锁全文
1231

被折叠的 条评论
为什么被折叠?



