我需要帮助解决 libvirt(?) 问题。
服务器规格:
- ProLiant DL165 G7
- 2 个 AMD Opteron(tm) 处理器 6128
系统:
- Debian GNU/Linux 测试(wheezy)
- 3.2.0-3-amd64
- libvirt 0.9.12-5
- kvm 1:1.1.2+dfsg-2
$ grep 处理器 /proc/cpuinfo | wc -l
16
$ virsh 节点信息
setlocale: No such file or directory
CPU model: x86_64
CPU(s): 16
CPU frequency: 800 MHz
CPU socket(s): 2
Core(s) per socket: 4
Thread(s) per core: 1
NUMA cell(s): 1
Memory size: 66114200 KiB
$ virsh 功能
..
<topology>
<cells num='4'>
<cell id='0'>
<cpus num='4'>
<cpu id='0'/>
<cpu id='1'/>
<cpu id='2'/>
<cpu id='3'/>
</cpus>
</cell>
<cell id='1'>
<cpus num='4'>
<cpu id='4'/>
<cpu id='5'/>
<cpu id='6'/>
<cpu id='7'/>
</cpus>
</cell>
<cell id='2'>
<cpus num='4'>
<cpu id='12'/>
<cpu id='13'/>
<cpu id='14'/>
<cpu id='15'/>
</cpus>
</cell>
<cell id='3'>
<cpus num='4'>
<cpu id='8'/>
<cpu id='9'/>
<cpu id='10'/>
<cpu id='11'/>
</cpus>
</cell>
</cells>
</topology>
..
$ virsh vcpupin vm 0 13,12,11,10,9,8,7,6,5
error: Physical CPU 13 doesn't exist.
error: cpulist: Invalid format.
问题?
为什么我的 VM 客户机仅使用前 8 个 CPU,而接下来的 8 个处于空闲状态?
$ for host in virsh list | awk '{print $2}'
; do virsh vcpuinfo $host; done | grep ^CPU: | sort | uniq
CPU: 0
CPU: 1
CPU: 2
CPU: 3
CPU: 4
CPU: 5
CPU: 6
CPU: 7
有什么想法可以改变它吗?
答案1
这是解决此问题的快速方法:
for pid in `ps aux | grep '/usr/bin/kvm' | grep -v grep | awk '{print $2}'`; do taskset -p -c 0-15 $pid; done
但我决定将操作系统改为 Ubuntu,而且它运行得很好。