kvm cpu的亲和性绑定配置

简介:

1.CPU的绑定配置


进程的处理器亲和性(process affinity):指将进程绑定到特定的一个或多个cpu上去执行,而不允许将进程调度到其他cpu上。

物理cpu:表示真实的cpu个数

逻辑cpu:表示所有拥有一个完整真实cpu功能的单元,一般等于所有真实cpu的核心或超线程数(ht技术)之和

例子:一个主板有cpu1,cpu2,cpu1双核不开超线程,cpu2四核其中某个核心开两个超线程,那么它有2个真实cpu,和2+(2*1+3)=7个逻辑cpu


实现:

(1)在grub.conf上使用”isolcpus=[num1],[num2]... “参数,进行cpu的隔离,使得系统启动后普通进程默认不会调度到被隔离的cpu上执行。(注:num表示逻辑cpu号码)

例子:

title CentOS (3.2.84)

        root (hd0,0)        kernel /vmlinuz-3.2.84 ro root=/dev/mapper/VolGroup-lv_root isolcups=4,5 rd_NO_LUKS rd_NO_MD rd_LVM_LV=VolGroup/lv_swap crashkernel=auto LANG=en rd_LVM_LV=VolGroup/lv_root  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet 

        initrd /initramfs-3.2.84.img

注:isolcups要紧跟在root后面,放在最后不行(个人测试,具体原因有待查明)


(2)查看是否隔离成功:

[root@localhost ~]# ps -eLo psr,args|awk '{if ($1==3) print $0}'

  3 [kworker/u:0]

  3 [migration/3]

  3 [kworker/3:0]

  3 [ksoftirqd/3]

  3 [watchdog/3]

  3 [kworker/3:1]

  3 auditd

  3 rpcbind

  3 [flush-253:0]

  3 /usr/sbin/modem-manager

  3 hald-runner

  3 /usr/libexec/postfix/master

[root@localhost ~]# ps -eLo psr,args|awk '{if ($1==4) print $0}'

  4 [migration/4]

  4 [kworker/4:0]

  4 [ksoftirqd/4]

  4 [watchdog/4]

  4 [kworker/4:1]

[root@localhost ~]# ps -eLo psr,args|awk '{if ($1==5) print $0}'

  5 [migration/5]

  5 [kworker/5:0]

  5 [ksoftirqd/5]

  5 [watchdog/5]

  5 [kworker/5:1]

[root@localhost ~]# ps -eLo psr,args|awk '{if ($1==2) print $0}'

  2 [kthreadd]

  2 [migration/2]

  2 [kworker/2:0]

  2 [ksoftirqd/2]

  2 [watchdog/2]

  2 [khubd]

  2 [kworker/2:1]

  2 [kworker/2:2]

  2 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5

  2 pcscd

  2 /sbin/mingetty /dev/tty6


ps(process status):

-e:显示所有进程

-L:用于将线程(LWP,lightweight process)也显示出来,(这里我忽略这个结果了)

-o:以用户自定义格式输出(可选参数有psr、pid、ppid等)

-o参数里面: 

psr:当前分配给进程运行的处理器编号

args:表示运行进程的命令和参数


这里我们看到进程编号2、3都有很多进程,而4、5都只有5个带[]号的系统进程,所以隔离成功。


(3)启动客户机

 qemu-system-x86_64 -m  2048 -smp 2 rhel6u5.img  &


(4)查看vcpu线程

[root@localhost kvm_vhost]# ps -eLo pid,lwp,psr,args|grep qemu|grep  -v grep

 1612  1612   6 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img

 1612  1614   1 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img

 1612  1615   6 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img

 1612  1617  11 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img


(5)绑定代表整个客户机的进程,使其运行在cpu4上

[root@localhost kvm_vhost]# taskset -p 0x10 1612

pid 1612's current affinity mask: ffcf

pid 1612's new affinity mask: 10

[root@localhost kvm_vhost]# ps -eLo pid,lwp,psr,args|grep qemu|grep  -v grep

 1612  1612   4 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img

 1612  1614   3 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img

 1612  1615   6 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img

 1612  1617  11 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img

(6)绑定第一个vcpu线程,使其运行在cpu5上

[root@localhost kvm_vhost]# taskset -p 0x20 1614

pid 1614's current affinity mask: ffcf

pid 1614's new affinity mask: 10

[root@localhost kvm_vhost]# ps -eLo pid,lwp,psr,args|grep qemu|grep  -v grep

 1612  1612   4 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img

 1612  1614   5 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img

 1612  1615   6 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img

 1612  1617  11 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img

 

 同理绑定另外一个vcpu,这里taskset的语法是taskset -p [mask] pid 

mask是代表处理器亲和性的掩码数字,转化为二进制,其值从最低位到最高位分别代表第一个逻辑cpu到最后一个逻辑cpu

0001 0000=0x10

0010 0000=0x20

0011 0000=0x30

所以如果使用taskset -p 0x30 1614则表示把vcpu线程运行在cpu4和cpu5上

pid表示线程的id,这里我们有三个线程怎么知道哪个是vcpu的id呢?答案是按ctrl+alt+2 到qemu monitor中使用info cpus进行查看

wKiom1g2tdeCkj_CAAAQlf4_uzk411.png-wh_50


(7)绑定后查看在cpu4上运行的线程

[root@localhost kvm_vhost]# ps -eLo psr,args|awk '{if ($1==4) print $0}'

  4 [migration/4]

  4 [kworker/4:0]

  4 [ksoftirqd/4]

  4 [watchdog/4]

  4 [kworker/4:1]

  4 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img


我们看到多了一个且仅有一个用户空间qemu进程,绑定成功。














本文转自biao007h51CTO博客,原文链接: http://blog.51cto.com/linzb/1876316,如需转载请自行联系原作者




相关文章
|
1月前
|
开发框架 .NET PHP
网站应用项目如何选择阿里云服务器实例规格+内存+CPU+带宽+操作系统等配置
对于使用阿里云服务器的搭建网站的用户来说,面对众多可选的实例规格和配置选项,我们应该如何做出最佳选择,以最大化业务效益并控制成本,成为大家比较关注的问题,如果实例、内存、CPU、带宽等配置选择不合适,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文将详细解析企业在搭建网站应用项目时选购阿里云服务器应考虑的一些因素,以供参考。
|
4月前
|
KVM 虚拟化
KVM的热添加技术之CPU
这篇文章介绍了如何在KVM虚拟机中热添加CPU资源,包括查看当前CPU配置、修改CPU核心数、永久性修改CPU配置以及注意事项等操作步骤。
119 1
KVM的热添加技术之CPU
|
5月前
|
弹性计算 固态存储 ice
阿里云服务器2核16G、4核32G、8核64G配置不同ECS实例规格收费标准和CPU性能差异
2024年阿里云提供2核16G、4核32G及8核64G等多种服务器配置,用户可根据需求选择不同实例规格如内存型r8i、通用算力型u1等。以华北2(北京)为例,2核16G月费从286.2至385.99元不等;4核32G为572.4至771.97元;8核64G则在1144.8至1543.94元区间。公网带宽与系统盘(如ESSD云盘)亦有多样化选择与价格方案。长期租赁可享折扣,具体价格请访问阿里云官网确认。
175 7
|
5月前
|
KVM 虚拟化
[kvm]cpu内存硬盘配置
[kvm]cpu内存硬盘配置
|
6月前
|
Linux
查看服务器的配置,系统,cpu等信息
查看服务器的配置,系统,cpu等信息
1282 8
|
6月前
|
缓存 Linux 虚拟化
linux 查看服务器cpu 与内存配置
linux 查看服务器cpu 与内存配置
751 4
|
6月前
|
存储 弹性计算 固态存储
阿里云服务器CPU内存配置怎么选?ECS实例规格有啥区别?
阿里云服务器配置选择需考虑ECS实例规格、CPU内存、公网带宽与系统盘。个人开发者或中小企业推荐轻量应用服务器或ECS经济型e实例(2核2G3M带宽,99元/年),适合搭建低流量网站。企业用户应选择企业级独享型如通用算力型u1、计算型c7或通用型g7实例,至少2核4G内存起,推荐5M公网带宽以平衡成本与性能。系统盘推荐ESSD云盘以获得更好的性能。更多详情及链接参见原文。
138 3
|
6月前
|
存储 弹性计算 程序员
新手程序员如何阿里云服务器配置?新人开发者CPU内存带宽存储怎么选?
对于新手开发者、个人或学生选择阿里云服务器,推荐ECS经济型e实例(ecs.e-c1m1.large),适用于小型网站或轻量应用。配置2核2G内存、3M固定带宽、40G ESSD系统盘,仅99元/年且续费同价。
|
6月前
|
监控 Java 中间件
FGC频繁导致CPU 飙升定位及JVM配置优化总结
FGC频繁导致CPU 飙升定位及JVM配置优化总结
210 0
|
1月前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
121 7
下一篇
开通oss服务