设为首页 收藏本站
查看: 4036|回复: 0

[经验分享] KVM虚拟机cpu pinning实战

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-11-11 08:51:40 | 显示全部楼层 |阅读模式
本文包含以下内容:

  • 宿主机CPU特性查看
  • 虚拟机CPU特性查看
  • KVM虚拟机cpu pinning如何配置
  • cpu pinning的应用场景

首先需求了解基本的信息
1 宿主机CPU特性查看

使用virsh nodeinfo可以看到一些基本信息
1
2
3
4
5
6
7
8
9
virsh nodeinfo
CPU model: x86_64
CPU(s): 32
CPU frequency: 1200 MHz
CPU socket(s): 1
Core(s) per socket: 8
Thread(s) per core: 2
NUMA cell(s): 2
Memory size: 132119080 KiB




使用virsh capabilities可以查看物理机CPU的详细信息,包括物理CPU个数,每个CPU的核数,是否开了超线程。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
virsh capabilities

  
    36353332-3030-3643-5534-3235445a564a
   
      x86_64
      SandyBridge
      Intel
      
      
      
     ...
   
   
      
   
   
      
      
        tcp
      
   
   
      
        
         
            
         ...
            
         
        
        
         
            
           ...
            
         
        
      
   
   
      none
      0
   
   
      dac
      0
   
  
...





使用virsh freecell命令查看可以当前空闲内存
1
2
3
4
5
virsh  freecell --all
    0:     787288 KiB
    1:     94192 KiB
--------------------
Total: 881480 KiB




物理CPU的特性也可以通过/proc/cpuinfo查看
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
cat /proc/cpuinfo
rocessor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 62
model name : Intel(R) Xeon(R) CPU E5-2640 v2 @ 2.00GHz
stepping : 4
cpu MHz : 1200.000
cache size : 20480 KB
physical id : 0
siblings : 16
core id : 0
cpu cores : 8
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms
bogomips : 3990.67
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:
...



综合上面的信息,我们可以得出以下信息:
1) 物理CPU为 E5-2640V2,为8核2颗,开启了超线程,在物理机系统上可以看到32个CPU;
2) 物理机内存为128G  

2 虚拟机CPU使用情况查看

可以使用virsh vcpuinfo命令查看虚拟机vcpu和物理CPU的对应关系
1
2
3
4
5
6
7
8
9
10
11
12
virsh  vcpuinfo 21
VCPU: 0
CPU: 25
State: running
CPU time: 10393.0s
CPU Affinity: --------yyyyyyyy--------yyyyyyyy
VCPU: 1
CPU: 8
State: running
CPU time: 7221.2s
CPU Affinity: --------yyyyyyyy--------yyyyyyyy
...




可以看到vcpu0被调度到物理机CPU25上,目前是使用状态,使用时间是10393.0s
1
CPU Affinity: --------yyyyyyyy--------yyyyyyyy



yyyyyyy表示可以使用的物理CPU内部的逻辑核,可以看到这台虚拟机可以在8-15, 24-31这些cpu之间调度,为什么不能使用0-7,16-23这些CPU呢,是因为系统的自动numa平衡服务在发生作用,一个虚拟机默认只能使用同一颗物理CPU内部的逻辑核。

使用emulatorpin可以查看虚拟机可以使用那些物理逻辑CPU
1
2
3
4
virsh # emulatorpin 21
emulator: CPU Affinity
----------------------------------
       *: 0-31



可以看到0-31我们都可以使用,意味这我们也可以强制将CPU调度到任何CPU上。

3 在线pinning虚拟机的cpu

强制让虚拟机只能在26-31这些cpu之间调度
1
virsh  emulatorpin 21 26-31 --live




查看结果
1
2
3
4
virsh  emulatorpin 21
emulator: CPU Affinity
----------------------------------
       *: 26-31




查看vcpu info
1
2
3
4
5
6
7
8
9
10
11
12
virsh  vcpuinfo 21
VCPU: 0
CPU: 28
State: running
CPU time: 10510.5s
CPU Affinity: --------------------------yyyyyy
VCPU: 1
CPU: 28
State: running
CPU time: 7289.7s
CPU Affinity: --------------------------yyyyyy
...




查看xml文件
1
2
3
4
5
6
7
8
9
10
virsh # dumpxml 21

  cacti-230
  23a6455c-5cd1-20cd-ecfe-2ba89be72c41
  4194304
  4194304
  4
  
   
  




我们也可以强制vcpu和物理机cpu一对一的绑定
强制vcpu 0和物理机cpu 28绑定
强制vcpu 1和物理机cpu 29绑定
强制vcpu 2和物理机cpu 30绑定
强制vcpu 3和物理机cpu 31绑定
1
2
3
4
virsh  vcpupin 21 0 28
virsh  vcpupin 21 1 29
virsh  vcpupin 21 2 30
virsh  vcpupin 21 3 31




查看xml文件,生效了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
virsh # dumpxml 21

  cacti-230
  23a6455c-5cd1-20cd-ecfe-2ba89be72c41
  4194304
  4194304
  4
  
   
   
   
   
   
  




是vcpuino命令查看,可以看到配置生效了
1
2
3
4
5
6
7
8
9
10
11
12
virsh  vcpuinfo 22
VCPU: 0
CPU: 28
State: running
CPU time: 1.8s
CPU Affinity: ----------------------------y---
VCPU: 1
CPU: 29
State: running
CPU time: 0.0s
CPU Affinity: -----------------------------y--
...




4 CPU pinning技术应用场景

pinning前后效果比较
没有做cpu pinning
wKioL1RgDHbQ6tNAAAEcEGmkrRo434.jpg

wKiom1RgDBjjUEzsAAEg2UZvkdE575.jpg


前面的cpu压力和后面的cpu压力相差很大

做了cpu pinning
wKioL1RgDI-QZ9BXAAEO3cJTFgs805.jpg
前后CPU性能比较平衡了
wKioL1RgDJvg9bMRAAEJ5k1elz0536.jpg
cpupin实际libvirt也是通过cgroup来实现的,通过cgroup直接去限制kvm虚拟机进程也可以,以后分享给大家。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-27600-1-1.html 上篇帖子: rhel5 搭建KVM 下篇帖子: KVM guest磁盘扩容 虚拟机
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表