dockerdocker容器资源配额控制之cpu
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dockerdocker容器资源配额控制之cpu相关的知识,希望对你有一定的参考价值。
taskset命令
taskset设定cpu亲和力,task能够将一个或多个进程绑定到一个或多个处理器上运行。
参数:
-c,--cpu-list 以列表格式显示和指定 cpu
-p,--pid 在已经存在的 pid 上操作
设置只在1和2号cpu运行sshd进程程序
[[email protected] ~]# taskset -cp 1,2 914
pid 914‘s current affinity list: 0-3
pid 914‘s new affinity list: 1,2
查看id为1的进程在哪个cpu上运行
[[email protected] ~]# taskset -cp 1
pid 1‘s current affinity list: 0-3
设置 nginx cpu亲和力
在 conf/nginx.conf 中,有如下一行:
worker_processes 1;
这里用来配置nginx启动几个工作进程,默认为1.而nginx还支持一个名为worker_cpu_affinity的配置项,也就是说,nginx可以为每个工作进程绑定cpu。如下配置:
worker_processes 3;
worker_cpu_affinity 0010 0100 1000
这里0010 0100 1000是掩码,分别代表第2、3、4颗cpu核心。
重启nginx后,3个工作进程就可以各自用各自的cpu了。
物理机一共用16个核心,创建的容器只能用0、1、2这三个内核
[[email protected] ~]# docker run -itd --name cpu1 --cpuset-cpus 0-2 centos
eefe1ff3e567082c2d2d888911b239cfdc3407230f6c727ead05dfcf13368406
[[email protected] ~]# cat /sys/fs/cgroup/cpuset/docker/eefe1ff3e567082c2d2d888911b239cfdc3407230f6c727ead05dfcf13368406/cpuset.cpu
cpuset.cpu_exclusive cpuset.cpus
[[email protected] ~]# cat /sys/fs/cgroup/cpuset/docker/eefe1ff3e567082c2d2d888911b239cfdc3407230f6c727ead05dfcf13368406/cpuset.cpus
0-2
进入容器测试
通过docker exec <容器id或名字> taskset -c -p 1(容器内部第一个进程编号一般为1),可以看到容器中进程与cpu内核的绑定关系,可以认为达到了绑定cpu内核的目的。
[[email protected] ~]# docker exec cpu1 taskset -cp 1
pid 1‘s current affinity list: 0-2
以上是关于dockerdocker容器资源配额控制之cpu的主要内容,如果未能解决你的问题,请参考以下文章