KVM虚拟机线程机制测试
一、 测试目的
测试为了验证KVM虚拟机的进程、线程和VCPU之间的关系。为1+x,其中x为VCPU的个数。
二、 测试过程
1、重启系统(注意ps参数为-elf 而没有列出相关线程信息)
root@starking-OptiPlex-990:/home/starking#ps -elf | grep -v grep |grep kvm
1 S root 1181 2 0 60 -20 - 0 rescue 19:33 ? 00:00:00[kvm-irqfd-clean]
2、单核VM测试
//单核启动
root@starking-OptiPlex-990:/var/vms#qemu-system-x86_64 -m 1024 -hda./kvm001.img -vnc :0
[QEMU-KVM1.2DEBUG] kvm
//单核查看信息
root@starking-OptiPlex-990:/home/starking#ps -elf | grep -v grep |grep kvm
1 S root 1181 2 0 60 -20 - 0 rescue 19:33 ? 00:00:00[kvm-irqfd-clean]
2 S root 3422 3059 44 80 0 - 319664 poll_s 19:37 pts/2 00:00:08 qemu-system-x86_64 -m 1024 -hda./kvm001.img -vnc :0
1 S root 3425 2 0 80 0- 0 kthrea 19:37 ? 00:00:00 [kvm-pit/3422]
//单核VM关闭
root@starking-OptiPlex-990:/home/starking#ps -elf | grep -v grep |grep kvm
1 S root 1181 2 0 60 -20 - 0 rescue 19:33 ? 00:00:00[kvm-irqfd-clean]
3、双核VM测试(进入虚拟机查看cpuinfo信息确实是2个核心)
//启动smp 2
root@starking-OptiPlex-990:/var/vms#qemu-system-x86_64 -smp 2 -m 1024 -hda./kvm001.img -vnc :0
[QEMU-KVM1.2DEBUG] kvm
//查看信息
root@starking-OptiPlex-990:/home/starking#ps -elf | grep -v grep |grep kvm
1 S root 1181 2 0 60 -20 - 0 rescue 19:33 ? 00:00:00[kvm-irqfd-clean]
2 S root 3481 3059 29 80 0 - 357745 poll_s 19:47 pts/2 00:00:34 qemu-system-x86_64 -smp 2 -m 1024-hda ./kvm001.img -vnc :0
1 S root 3485 2 0 80 0- 0 kthrea 19:47 ? 00:00:00 [kvm-pit/3481]
4、三个核心VM测试
root@starking-OptiPlex-990:/var/vms#qemu-system-x86_64 -smp 3 -m 1024 -hda./kvm001.img -vnc :0
[QEMU-KVM1.2DEBUG] kvm
root@starking-OptiPlex-990:/home/starking#ps -elf | grep -v grep |grep kvm
1 S root 1181 2 0 60 -20 - 0 rescue 19:33 ? 00:00:00[kvm-irqfd-clean]
2 S root 3507 3059 75 80 0 - 377207 poll_s 19:52 pts/2 00:00:14 qemu-system-x86_64 -smp 3 -m 1024-hda ./kvm001.img -vnc :0
1 S root 3512 2 0 80 0- 0 kthrea 19:52 ? 00:00:00 [kvm-pit/3507]
结论:发现虚拟机的进程数不随着smp的数量增加而增加,始终是一个进程(不算[kvm-pit])
下面的测试没有使用命令 –vnc :0 因为这样QEMU会多产生两个线程来处理VNC的操作,使用的是-nographic参数,来表示不用图形输出。
1、 单核VM
root@starking-OptiPlex-990:/home/starking# ps -eLf| grep -v grep |grep kvm
root 1181 2 1181 0 1 19:33 ? 00:00:00 [kvm-irqfd-clean]
root 5093 5076 5093 0 2 21:39 pts/2 00:00:00 qemu-system-x86_64 kvm001.img -smp1 -m 1024 -nographic
root 5093 5076 5095 2 2 21:39 pts/2 00:00:07 qemu-system-x86_64 kvm001.img -smp1 -m 1024 -nographic
三、 测试结果
总结:在KVM虚拟机中,每一个虚拟机都会有一个虚拟机进程,和相应VCPU个数的线程,产生的线程总数为1+X,其中x为VCPU的个数。
一般远程操作时采用了-vnc指示,则此时会额外产生两个线程来处理VNC的操作,去掉VNC操作,则需要在启动时加上-nographic参数(此时终端会死机了),表示用ssh链接,而不进行图形显示。
四、 参考网站
1、 http://smilejay.com/2012/08/kvm-vcpu-binding/
2、 http://smilejay.com/2012/08/kvm-sdl-display/
3、