虚拟机玩法

虚拟机玩法,第1张

KVM虚拟机cpupinning实战

本文包含以下内容:


  • 主机CPU特征视图

  • 虚拟机的CPU特性视图

    如何配置KVM虚拟机cpupinning?

    CPU牵制的应用场景

    cpu锁定简单性能测试


    首先,你需要了解基本信息。

    1主机CPU特征视图


    使用virshnodeinfo查看一些基本信息。

    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功能,您可以查看物理CPU的详细信息,包括物理CPU的数量、每个CPU中的核心数量以及是否启用了超线程。

    virsh capabilities <capabilities>   <host>     <uuid>36353332-3030-3643-5534-3235445a564a</uuid>     <cpu>       <arch>x86_64</arch>       <model>SandyBridge</model>       <vendor>Intel</vendor>       <topology sockets='1' cores='8' threads='2'/>       <feature name='erms'/>       <feature name='smep'/>      ...     </cpu>     <power_management>       <suspend_disk/>     </power_management>     <migration_features>       <live/>       <uri_transports>         <uri_transport>tcp</uri_transport>       </uri_transports>     </migration_features>     <topology>       <cells num='2'>         <cell id='0'>           <cpus num='16'>             <cpu id='0' socket_id='0' core_id='0' siblings='0,16'/>          ...             <cpu id='23' socket_id='0' core_id='7' siblings='7,23'/>           </cpus>         </cell>         <cell id='1'>           <cpus num='16'>             <cpu id='8' socket_id='1' core_id='0' siblings='8,24'/>            ...             <cpu id='31' socket_id='1' core_id='7' siblings='15,31'/>           </cpus>         </cell>       </cells>     </topology>     <secmodel>       <model>none</model>       <doi>0</doi>     </secmodel>     <secmodel>       <model>dac</model>       <doi>0</doi>     </secmodel>   </host> ... </capabilities>


    使用virshfreecell命令检查可用的空闲内存空

    virsh  freecell --all     0:     787288 KiB     1:     94192 KiB -------------------- Total: 881480 KiB


    物理CPU的特性也可以通过/proc/cpuinfo查看。

    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个CPUs

    2)物理机内存128G。


    2虚拟机CPU使用视图


    可以使用virshvcpuinfo命令查看虚拟机vcpu和物理cpu的对应关系。

    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

    CPU Affinity: --------yyyyyyyy--------yyyyyyyy

    Yyyyyyy代表物理cpu内部可以使用的逻辑核心。可以看出,这个虚拟机可以在这些CPU8-15、24-31之间进行调度。为什么这些CPU0-7,16-23不能用?是因为系统的自动numa平衡服务在工作,一个虚拟机默认只能使用同一个物理CPU内部的逻辑核。


    使用emulatorpin查看虚拟机可以使用哪些物理和逻辑CPU。

    virsh # emulatorpin 21 emulator: CPU Affinity ----------------------------------        *: 0-31

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


    3个在线锁定虚拟机的cpu


    强制虚拟机仅在26-31个CPU之间调度。

    virsh  emulatorpin 21 26-31 --live


    查看结果

    virsh  emulatorpin 21 emulator: CPU Affinity ----------------------------------        *: 26-31


    检查vcpu信息

    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文件

    virsh # dumpxml 21 <domain type='kvm' id='21'>   <name>cacti-230</name>   <uuid>23a6455c-5cd1-20cd-ecfe-2ba89be72c41</uuid>   <memory unit='KiB'>4194304</memory>   <currentMemory unit='KiB'>4194304</currentMemory>   <vcpu placement='static'>4</vcpu>   <cputune>     <emulatorpin cpuset='26-31'/>   </cputune>


    我们还可以强制vcpu和物理cpu之间的一对一绑定。

    vcpu0被强制绑定到物理机器cpu28。

    vcpu1被强制绑定到物理cpu29。

    vcpu2被强制绑定到物理cpu30。

    vcpu3被强制绑定到物理cpu31。

    virsh  vcpupin 21 0 28 virsh  vcpupin 21 1 29 virsh  vcpupin 21 2 30 virsh  vcpupin 21 3 31


    检查xml文件,有效。

    virsh # dumpxml 21 <domain type='kvm' id='21'>   <name>cacti-230</name>   <uuid>23a6455c-5cd1-20cd-ecfe-2ba89be72c41</uuid>   <memory unit='KiB'>4194304</memory>   <currentMemory unit='KiB'>4194304</currentMemory>   <vcpu placement='static'>4</vcpu>   <cputune>     <vcpupin vcpu='0' cpuset='28'/>     <vcpupin vcpu='1' cpuset='29'/>     <vcpupin vcpu='2' cpuset='30'/>     <vcpupin vcpu='3' cpuset='31'/>     <emulatorpin cpuset='26-31'/>   </cputune>


    这是vcpuino命令。您可以看到配置生效了。

    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-- ...


    4CPU钉住技术应用场景


    钉扎前后的效果比较

    无cpu固定




    前cpu压力和后cpu压力差别很大。


    cpu固定了吗


    前后CPU性能平衡。

    cpupin的实际libvirt也是通过cgroup实现的,也可以通过cgroup直接限制kvm虚拟机进程,以便以后分享给大家。


    5cpu引脚简单性能测试


    cpu管脚对cpu性能的影响有多大?进行了一个简单的测试。

    测试环境

    硬件
    NTEL(R)至强(R)CPUX5650@2.67GHz2[/brCentOS7更新至内核3.10.0-123.8.1.el7.x86_64

    虚拟机

    CentOS7更新至内核3.10.0

    1 CPU in system; running 1 parallel copy of tests Dhrystone 2 using register variables       28890881.0 lps   (10.0 s, 7 samples) Double-Precision Whetstone                     3880.4 MWIPS (9.0 s, 7 samples) Execl Throughput                               4146.3 lps   (30.0 s, 2 samples) File Copy 1024 bufsize 2000 maxblocks       1051084.3 KBps  (30.0 s, 2 samples) File Copy 256 bufsize 500 maxblocks          286552.2 KBps  (30.0 s, 2 samples) File Copy 4096 bufsize 8000 maxblocks       2142638.4 KBps  (30.0 s, 2 samples) Pipe Throughput                             1726807.0 lps   (10.0 s, 7 samples) Pipe-based Context Switching                 322865.5 lps   (10.0 s, 7 samples) Process Creation                              13662.4 lps   (30.0 s, 2 samples) Shell Scripts (1 concurrent)                   5955.4 lpm   (60.0 s, 2 samples) Shell Scripts (8 concurrent)                    713.1 lpm   (60.0 s, 2 samples) System Call Overhead                        2138318.1 lps   (10.0 s, 7 samples) System Benchmarks Index Values               BASELINE       RESULT    INDEX Dhrystone 2 using register variables         116700.0   28890881.0   2475.7 Double-Precision Whetstone                       55.0       3880.4    705.5 Execl Throughput                                 43.0       4146.3    964.2 File Copy 1024 bufsize 2000 maxblocks          3960.0    1051084.3   2654.3 File Copy 256 bufsize 500 maxblocks            1655.0     286552.2   1731.4 File Copy 4096 bufsize 8000 maxblocks          5800.0    2142638.4   3694.2 Pipe Throughput                               12440.0    1726807.0   1388.1 Pipe-based Context Switching                   4000.0     322865.5    807.2 Process Creation                                126.0      13662.4   1084.3 Shell Scripts (1 concurrent)                     42.4       5955.4   1404.6 Shell Scripts (8 concurrent)                      6.0        713.1   1188.4 System Call Overhead                          15000.0    2138318.1   1425.5                                                                    ======== System Benchmarks Index Score                                        1444.7

    已进行cpu绑定

    1 CPU in system; running 1 parallel copy of tests Dhrystone 2 using register variables       29812559.6 lps   (10.0 s, 7 samples) Double-Precision Whetstone                     3928.7 MWIPS (8.9 s, 7 samples) Execl Throughput                               4314.4 lps   (30.0 s, 2 samples) File Copy 1024 bufsize 2000 maxblocks       1068627.9 KBps  (30.0 s, 2 samples) File Copy 256 bufsize 500 maxblocks          291834.2 KBps  (30.0 s, 2 samples) File Copy 4096 bufsize 8000 maxblocks       2052612.8 KBps  (30.0 s, 2 samples) Pipe Throughput                             1737466.2 lps   (10.0 s, 7 samples) Pipe-based Context Switching                 326839.9 lps   (10.0 s, 7 samples) Process Creation                              14234.5 lps   (30.0 s, 2 samples) Shell Scripts (1 concurrent)                   6040.8 lpm   (60.0 s, 2 samples) Shell Scripts (8 concurrent)                    717.4 lpm   (60.1 s, 2 samples) System Call Overhead                        2149194.4 lps   (10.0 s, 7 samples) System Benchmarks Index Values               BASELINE       RESULT    INDEX Dhrystone 2 using register variables         116700.0   29812559.6   2554.6 Double-Precision Whetstone                       55.0       3928.7    714.3 Execl Throughput                                 43.0       4314.4   1003.4 File Copy 1024 bufsize 2000 maxblocks          3960.0    1068627.9   2698.6 File Copy 256 bufsize 500 maxblocks            1655.0     291834.2   1763.3 File Copy 4096 bufsize 8000 maxblocks          5800.0    2052612.8   3539.0 Pipe Throughput                               12440.0    1737466.2   1396.7 Pipe-based Context Switching                   4000.0     326839.9    817.1 Process Creation                                126.0      14234.5   1129.7 Shell Scripts (1 concurrent)                     42.4       6040.8   1424.7 Shell Scripts (8 concurrent)                      6.0        717.4   1195.7 System Call Overhead                          15000.0    2149194.4   1432.8                                                                    ======== System Benchmarks Index Score                                        1464.1

    相比

    综合评分

    绑定1464.1解绑定1444.7
    综合评分性能提升1.34%
    [/]




    欢迎分享,转载请注明来源:内存溢出

    原文地址: http://outofmemory.cn/zz/784290.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-05-04
    下一篇 2022-05-04

    发表评论

    登录后才能评论

    评论列表(0条)

    保存