发现虚拟机状态模块 无法获取Windows虚拟机当前使用内存的比较准确的数值
查看内存信息的输出参看:https://www.wikieduonline.com/wiki/Virsh_dommemstat 通常应有如下项目:
# virsh dommemstat YOUR_VM_NAME
actual 1048576
swap_in 0
swap_out 0
major_fault 913
minor_fault 247449
unused 694704
available 1014852
usable 732936
last_update 1514452854
rss 537524
然而在开发机上运行只输出以下两项:
# virsh dommemstat win7_64
actual 4194304
rss 4150260
所以在java程序里用:
MemoryStatistic[] memoryStatistics = domain.memoryStats(10);
for(MemoryStatistic mem:memoryStatistics){
System.out.println(mem.getTag()+":"+mem.getValue());
}
也同样只能输出两项actual和rss,不能获得 unused即未使用内存大小的数据。
经研究, 在[libvirt] cannot get all memory stats for domain / Newbie Corner / Arch Linux Forums "[libvirt] cannot get all memory stats for domain" 查到别人提出一样的问题, 答案是因为Windows虚拟机内未安装 virtio-balloon驱动,
virtio-balloon驱动的安装可参考这篇文章:使用virtio-balloon驱动监控windows虚机内存-sak0-ChinaUnix博客