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、