背景:
过去,当我的客户虚拟机冻结时,我查看了 Windows 任务管理器,发现内存非常少。这让我得出结论“主机将虚拟机从物理内存中移出并放入虚拟内存(即分页)--> 因此虚拟机冻结,因为它现在耗尽了分页内存而不是物理内存”。
当前的:
最近,我的客户虚拟机冻结了,查看任务管理器发现“可用内存”充足,有 1.2 GB。我附上了我的主机 Windows 机器和客户 Fedora 14 虚拟机的屏幕截图。
我的观察:
- 主机有足够的可用内存(1.2 GB)
- 客人有足够的可用内存
- 客人的截图……之所以可用,是因为它完全是偶然出现在顶部并且可见
- 主机 CPU 固定为 2/4 核
- 客户机 CPU 根本没有被限制
我关闭了虚拟机,主机的任务管理器显示:
- 可用物理内存增加了与分配给客户虚拟机的内存量完全相同的量
- 分页减少了分配给客户虚拟机的内存量
- CPU 使用率从超高降至几乎为零
根据描述,您认为客户虚拟机冻结的原因是什么?我就是想不通这一点,而且我没有任何调试工具来查看问题出在哪里!
- 有什么方法可以表明“virtualbox”进程正在大量使用硬盘(即该进程现在处于分页而不是物理内存中?
- 我怎样才能显示虚拟盒“卡在分页中”?
- (我听说过 perfmon......但无法弄清楚。所以请详细说明而不是“使用 perfmon”,并说明要查看哪种计数器)
答案1
检查 Fedora VM 中的日志,看看是否有任何原因导致冻结。
分页不应该成为问题——没有理由客户不能分页,并且主机上的分页根本不会冻结客户。
请发布您使用的 VirtualBox 版本号。您写的内容对我来说听起来像是 VB 错误,而不是任何操作系统问题。
答案2
现在我可以做所有需要做的事情,而客户操作系统不会出现任何冻结。
以下是不会冻结的配置:
- 主机操作系统:Windows 7 64 位(以前为:Windows XP 32 位)
- 主机操作系统:8 GB 可用内存(以前:Windows XP 32 位为 3GB)
- 客户操作系统:1 CPU/核心(之前为:2 CPU/核心)
- 主机操作系统:VirtualBox 版本 4.0.8
- 主机:关闭超线程
我对“是什么原因导致冻结?”的直觉反应。以下是两个可信的原因:
- 我认为内存不足导致了冻结。
- 主机操作系统将客户操作系统置于分页状态...然后客户操作系统实际上并没有冻结...只是变得非常慢。
- 或者在客户操作系统中使用 2 个核心导致虚拟机出现奇怪的冻结。
- 我认为这种可能性很小。因为我使用的是 2 个核心(少于主机的总数)... 这是 VirtualBox 中支持良好的功能。
不幸的是,我没有学到足够的调试技术来显示真正的原因......这些只是我最好的猜测。