码迷,mamicode.com
首页 > 其他好文 > 详细

docker(九)docker容器资源配额控制之cpu

时间:2018-04-12 20:51:11      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:docker

taskset命令
taskset设定cpu亲和力,task能够将一个或多个进程绑定到一个或多个处理器上运行。
参数:
-c,--cpu-list 以列表格式显示和指定 cpu
-p,--pid 在已经存在的 pid 上操作

设置只在1和2号cpu运行sshd进程程序
技术分享图片

[root@apenglinux-002 ~]# taskset -cp 1,2 914
pid 914‘s current affinity list: 0-3
pid 914‘s new affinity list: 1,2

查看id为1的进程在哪个cpu上运行

[root@apenglinux-002 ~]# 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这三个内核

[root@apenglinux-002 ~]# docker run -itd --name cpu1 --cpuset-cpus 0-2 centos
eefe1ff3e567082c2d2d888911b239cfdc3407230f6c727ead05dfcf13368406
[root@apenglinux-002 ~]# cat /sys/fs/cgroup/cpuset/docker/eefe1ff3e567082c2d2d888911b239cfdc3407230f6c727ead05dfcf13368406/cpuset.cpu
cpuset.cpu_exclusive  cpuset.cpus           
[root@apenglinux-002 ~]# cat /sys/fs/cgroup/cpuset/docker/eefe1ff3e567082c2d2d888911b239cfdc3407230f6c727ead05dfcf13368406/cpuset.cpus
0-2

进入容器测试

通过docker exec <容器id或名字> taskset -c -p 1(容器内部第一个进程编号一般为1),可以看到容器中进程与cpu内核的绑定关系,可以认为达到了绑定cpu内核的目的。

[root@apenglinux-002 ~]# docker exec cpu1 taskset -cp 1
pid 1‘s current affinity list: 0-2

docker(九)docker容器资源配额控制之cpu

标签:docker

原文地址:http://blog.51cto.com/13480443/2097581

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!