本文将测试一下使用cgroup的cpuset组来控制进程对cpu的使用 :
测试环境centos 7.x x64
创建一个继承组
继承组自动创建对应的限制文件
继承组的tasks为空.
查看cpu资源
设置cpuset.mems
否则在将pid添加到这个组的时候, 会报错如下 :
设置cpuset.cpus
将数据库的主进程加入到这个组
现在数据库被限制了只能使用7号cpu 核.
使用top的p选项查看 :
在top界面按 f
选择
查看到所有postgres进程新fork的backend process都用的7号cpu
改为0-7可以使用8个cpu核
再次测试 :
当然性能也有提升
[参考]1. https://www.kernel.org/doc/documentation/cgroups/cgroups.txt
2. http://blog.163.com/digoal@126/blog/static/163877040201411341949278/
3. http://blog.163.com/digoal@126/blog/static/1638770402014102653934376/
4. http://serverfault.com/questions/579555/cgroup-no-space-left-on-device
5. http://www.cnblogs.com/wang_yb/p/3942208.html
6. http://www.bullopensource.org/cpuset/cpuset.html