在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
首先需求了解基本的信息 1 宿主机CPU特性查看
复制代码 代码如下: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
复制代码 代码如下:</p>
<p>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> 使用virsh freecell命令查看可以当前空闲内存 复制代码 代码如下:virsh freecell --all 0: 787288 KiB 1: 94192 KiB -------------------- Total: 881480 KiB
综合上面的信息,我们可以得出以下信息: 1) 物理CPU为 E5-2640V2,为8核2颗,开启了超线程,在物理机系统上可以看到32个CPU; 2) 物理机内存为128G
复制代码 代码如下: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 ...
yyyyyyy表示可以使用的物理CPU内部的逻辑核,可以看到这台虚拟机可以在8-15, 24-31这些cpu之间调度,为什么不能使用0-7,16-23这些CPU呢,是因为系统的自动numa平衡服务在发生作用,一个虚拟机默认只能使用同一颗物理CPU内部的逻辑核。
复制代码 代码如下:virsh # emulatorpin 21
emulator: CPU Affinity ---------------------------------- *: 0-31 可以看到0-31我们都可以使用,意味这我们也可以强制将CPU调度到任何CPU上。
复制代码 代码如下:virsh emulatorpin 21 26-31 --live
复制代码 代码如下:virsh emulatorpin 21
emulator: CPU Affinity ---------------------------------- *: 26-31
复制代码 代码如下: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 ...</p> <p> 查看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 0和物理机cpu 28绑定 强制vcpu 1和物理机cpu 29绑定 强制vcpu 2和物理机cpu 30绑定 强制vcpu 3和物理机cpu 31绑定 复制代码 代码如下:virsh vcpupin 21 0 28 virsh vcpupin 21 1 29 virsh vcpupin 21 2 30 virsh vcpupin 21 3 31
复制代码 代码如下: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>
复制代码 代码如下: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-- ...
测试环境 硬件 ntel(R) Xeon(R) CPU X5650 @ 2.67GHz 2颗 软件 centos 7 update到内核 3.10.0-123.8.1.el7.x86_64 虚拟机 centos 7 update到内核 3.10.0-123.8.1.el7.x86_64 虚拟机 cpu 1颗 测试工具 unixbench 5.1.2 测试结果 不做cpu绑定 做了cpu绑定 比较 综合得分 绑定 1464.1 不绑定 1444.7 综合得分 性能提升 1.34% 浮点运算 绑定 3928.7 不绑定 3880.4 浮点运算 性能提升 1.24% |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论