2017-07-18 127 views
1

我在使用qemu-kvm運行並由libvirt管理(主要由virt-manager創建並運行)的虛擬機(guest虛擬機窗口7,x86_64)中遇到了一些問題。問題是,我也不能運行無法獲得libvirt域的所有內存統計信息

virsh -c qemu:///system dommemstat win7 

或致電

virDomainMemoryStats(...) 

C++代碼(這是,據我瞭解,或多或少同樣的事情)得到充分的內存統計。我也從libvirt aplication dev guide測試libvirt第35個例子。這真的讓我擔心,因爲現在我在項目中工作,目的是爲vm自動設置最佳內存大小,因此我需要在我的代碼中使用它們。

我從的virsh得到的唯一輸出是

actual 4194304 
last_update 1500404513 
rss 4161676 

搜索,我發現,這些都是統計數據,其libvirt的可以獲取未向司機膨脹的網絡後。不過,我已經在Windows中安裝了VirtIO氣球驅動程序,並且系統聲稱它正在運行。我真的不知道,如何確定qemu是否意識到這一點(爲您的想法打開)。

另外我發現我需要在系統xml中設置統計週期,我已經做了哪些,哪些沒有給出。我還發現,QEMU使用一些「庫姆,獲得」腳本實際測量統計,但我不能從

virsh # qemu-monitor-command 1 --hmp "qom-get" 

(輸出該命令是未知的)使用它,我不能看到它在我的道路。另外pacman -Fo qom-getpkgfile qom-get什麼也不給。 我的主機系統是Arch Linux。 win7.xml的內容是

<domain type='kvm'> 
    <name>win7</name> 
    <uuid>438145c1-a2df-4c86-96d6-2bf7b379d70b</uuid> 
    <memory unit='KiB'>4194304</memory> 
    <currentMemory unit='KiB'>4194304</currentMemory> 
    <vcpu placement='static' current='2'>4</vcpu> 
    <os> 
    <type arch='x86_64' machine='pc-i440fx-2.9'>hvm</type> 
    <boot dev='hd'/> 
    </os> 
    <features> 
    <acpi/> 
    <apic/> 
    <hyperv> 
     <relaxed state='on'/> 
     <vapic state='on'/> 
     <spinlocks state='on' retries='8191'/> 
    </hyperv> 
    <vmport state='off'/> 
    </features> 
    <cpu mode='custom' match='exact' check='partial'> 
    <model fallback='allow'>Broadwell-noTSX</model> 
    </cpu> 
    <clock offset='localtime'> 
    <timer name='rtc' tickpolicy='catchup'/> 
    <timer name='pit' tickpolicy='delay'/> 
    <timer name='hpet' present='no'/> 
    <timer name='hypervclock' present='yes'/> 
    </clock> 
    <on_poweroff>destroy</on_poweroff> 
    <on_reboot>restart</on_reboot> 
    <on_crash>destroy</on_crash> 
    <pm> 
    <suspend-to-mem enabled='no'/> 
    <suspend-to-disk enabled='no'/> 
    </pm> 
    <devices> 
    <emulator>/usr/sbin/qemu-system-x86_64</emulator> 
    <disk type='file' device='disk'> 
     <driver name='qemu' type='qcow2'/> 
     <source file='/var/lib/libvirt/images/win7.qcow2'/> 
     <target dev='hda' bus='ide'/> 
     <address type='drive' controller='0' bus='0' target='0' unit='0'/> 
    </disk> 
    <disk type='file' device='cdrom'> 
     <driver name='qemu' type='raw'/> 
     <target dev='hdb' bus='ide'/> 
     <readonly/> 
     <address type='drive' controller='0' bus='0' target='0' unit='1'/> 
    </disk> 
    <disk type='file' device='cdrom'> 
     <driver name='qemu' type='raw'/> 
     <source file='/usr/share/virtio/virtio-win.iso'/> 
     <target dev='hdc' bus='ide'/> 
     <readonly/> 
     <address type='drive' controller='0' bus='1' target='0' unit='0'/> 
    </disk> 
    <controller type='usb' index='0' model='ich9-ehci1'> 
     <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x7'/> 
    </controller> 
    <controller type='usb' index='0' model='ich9-uhci1'> 
     <master startport='0'/> 
     <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' multifunction='on'/> 
    </controller> 
    <controller type='usb' index='0' model='ich9-uhci2'> 
     <master startport='2'/> 
     <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x1'/> 
    </controller> 
    <controller type='usb' index='0' model='ich9-uhci3'> 
     <master startport='4'/> 
     <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x2'/> 
    </controller> 
    <controller type='pci' index='0' model='pci-root'/> 
    <controller type='ide' index='0'> 
     <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> 
    </controller> 
    <controller type='virtio-serial' index='0'> 
     <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> 
    </controller> 
    <interface type='network'> 
     <mac address='52:54:00:9d:4e:85'/> 
     <source network='default'/> 
     <model type='rtl8139'/> 
     <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> 
    </interface> 
    <serial type='pty'> 
     <target port='0'/> 
    </serial> 
    <console type='pty'> 
     <target type='serial' port='0'/> 
    </console> 
    <channel type='spicevmc'> 
     <target type='virtio' name='com.redhat.spice.0'/> 
     <address type='virtio-serial' controller='0' bus='0' port='1'/> 
    </channel> 
    <input type='tablet' bus='usb'> 
     <address type='usb' bus='0' port='1'/> 
    </input> 
    <input type='mouse' bus='ps2'/> 
    <input type='keyboard' bus='ps2'/> 
    <graphics type='spice' autoport='yes'> 
     <listen type='address'/> 
     <image compression='off'/> 
    </graphics> 
    <sound model='ich6'> 
     <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> 
    </sound> 
    <video> 
     <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/> 
     <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> 
    </video> 
    <redirdev bus='usb' type='spicevmc'> 
     <address type='usb' bus='0' port='2'/> 
    </redirdev> 
    <redirdev bus='usb' type='spicevmc'> 
     <address type='usb' bus='0' port='3'/> 
    </redirdev> 
    <memballoon model='virtio'> 
     <stats period='10'/> 
     <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> 
    </memballoon> 
    </devices> 
</domain> 

我絕對錯過了一些東西,但我什麼也看不見。任何人都可以給我任何有用的鏈接或指南嗎?我真的很感激。

這是question on Arch Linux newbie forum的重複。如果有人會給出適當的答案,我會與其他網站分享。

============================================== ==

UPD。氣球的工作:我可以做這樣的事情

virsh # qemu-monitor-command win7 --hmp "info balloon" 
balloon: actual=4096 
virsh # qemu-monitor-command win7 --hmp "balloon 2048" 
virsh # qemu-monitor-command win7 --hmp "info balloon" 
balloon: actual=2048 

但庫姆,獲得不會做:

virsh # qemu-monitor-command windows7 '{ "execute": "qom-get", "arguments": { "path": "/machine/peripheral/balloon0", "property": "guest-stats" } }' 
{"return":{"stats":{"stat-swap-out":-1,"stat-available-memory":-1,"stat-free-memory":-1,"stat-minor-faults":-1,"stat-major-faults":-1,"stat-total-memory":-1,"stat-swap-in":-1},"last-update":1500639136},"id":"libvirt-396"} 

幫助將非常感激。

回答

0

問題在於Balloon服務安裝不正確。如果您遇到同樣的問題,可能的解決方案是打開命令行,使用VirtIO驅動程序轉到CD-ROM,根據您的系統和體系結構轉到Balloon目錄並更深入。當你在AMD64()目錄,鍵入

blnsrv.exe -i 

和服務應自行安裝。之後,問題將會消失(至少,這對我有用)。

相關問題