KVM虚拟机绑定到特定CPU核心的方法 文章转自: http://zk2052041.blog.163.com/blog/static/1377237201282614921473/
先介绍taskset,以后还会介绍cgroup中的方法。
taskset绑定进程到某个CPU是很方便的:
#taskset -pc 0,1 1249
这会绑定1249进程到1号跟1号cpu上。
#cat /proc/1249/status
Cpus_allowed: 3
Cpus_allowed_list: 0-1
重新绑定下:
#taskset -pc 1 1249
#cat /proc/1249/status
Cpus_allowed: 2
Cpus_allowed_list: 1
注意这里的Cpu_allowed用的是二进制掩码,3的二进制是11,2的二进制是10。前一个表示可在两个CPU上运行,第二个表示仅在第二个CPU上运行^_^
绑定进程到某几个核心没什么难度了,然后我开始在htop中设定绑定,但是,一个kvm进程生出了4个小线程,关绑定主进程,其他的子线程还是会漂移到别的CPU上,根本无法限制这个虚拟机,手动绑定?太麻烦!用命令来做:
首先把192.168.12.20这个虚拟机的kvm进程绑定到0-3号CPU:
ps -eLf |grep "kvm" |grep "192.168.12.20"|grep -v grep |awk "{print \$4}" |xargs -n 1 taskset -pc 0-3
首先把其他虚拟机的kvm进程绑定到4-7号CPU:
ps -eLf |grep "kvm" |grep -v "192.168.12.20"|grep -v grep |awk "{print \$4}" |xargs -n 1 taskset -pc 4-7
然后我们在不同的虚拟机上跑sysbench测试来看CPU占用,效果很不错,各个虚拟机都被关在自己的笼子里面了