Ubuntu 12.10 和 VMware Workstation 9:RAM 缓存导致严重的性能下降

Ubuntu 12.10 和 VMware Workstation 9:RAM 缓存导致严重的性能下降

我已经阅读了大量有关内存缓存的帖子,标准回应是“大缓存很好,它不应该影响性能”,“内核最清楚”。

我最近从 12.04 升级到 12.10,并从 VirtualBox 更改为 VMware Workstation,性能差异很大(我怀疑是后者造成的)。

当我运行虚拟机时系统负载监视图通常显示内存使用率低于 50%。 在此处输入图片描述 系统负载指示器显示我的剩余 RAM 一直用于缓存。

简单来说,这是比较:

  • 缓存使用得很少,我的内存使用量几乎都不是缓存
  • Swappiness 为 0(导致我的内存首先被使用,然后仅在需要时进行交换)
  • 表现相当不错,而且合乎逻辑
    1. 首先充分利用了 RAM,缓存很少。我可以运行足够多的软件来充分利用 4GB 的 RAM,而性能丝毫不会下降
    2. 然后根据需要使用交换空间,这显然比较慢(我在 HDD 上),但当当前程序加载到内存中时仍然可用

  • 我的虚拟机一运行,缓存就占满了 4GB
  • Swappiness 为 0(行为与之前相同,但缓存立即使用全部内存)
  • 运行 Ubuntu 软件时性能非常糟糕,无法使用
    1. 更换窗户等基本操作需要 2 分钟以上
    2. 画面逐帧切换,有时需要长达 5 分钟
    3. 无法像以前一样轻松运行 IDE 和 VM

所以基本上,关于如何让我的表现恢复到以前的水平,有什么建议吗?同时保留我当前的设置?

我怀疑问题出在 VMWare 上,但我如何查看与缓存使用相关的内容?在像 VMware 这样完善的软件中,肯定有办法控制这种行为吧?

谢谢

编辑: 还要注意的是,根据 VMware 是打开还是关闭,行为会有所不同。如果 VMware 是打开的,那么 RAM 将在 50% 和 50% 缓存处锁定,并进入上述完全锁定状态。相反,如果 VMware 是关闭的(打开后),那么 RAM 将继续根据需要增加/缓存将保持为完整的剩余内存,并且不会出现明显的性能下降。

编辑2: 我按照建议将 swappiness 换成了 5,没有任何变化(在发布此问题之前,swappiness 为 10 和 60 时也遇到了同样的问题)。仔细检查后,发现确实有些问题。系统监视器(并使用建议的终端命令确认 -免费-m即)显示以下内容:

ben@ben-HPdv6:~$ free -m
         total       used       free     shared    buffers     cached
Mem:          3945       3827        117          0         42       2770
-/+ buffers/cache:       1014       2931
Swap:         1905          0       1905

这表明我的 RAM 中只有约 1GB 被使用,约 3GB 处于磁盘缓存中,但我的 VM 正在运行,并且已分配 1.5GB RAM。加载 VM 时,使用的 RAM 没有增加,但缓存却增加了。系统监视器(已通过ps-aux)确实显示 vmware 具有正确的 1.8GB RAM,但显然免费-m显示的情况并非如此。结果也表明情况并非如此,因为我的系统甚至难以打开此 chrome 页面来发布回复(我只打开了 vmware 工作站和终端)。这就像内存没有被正确声明为 RAM 内存使用量(而不是缓存),然后内核显然没有根据此做出正确响应?就像它试图按要求释放缓存内存,但无法做到,因为它实际上是使用内存而不是缓存。

我现在只是随便想想,真的想寻求一些帮助,以便彻底解决这个问题。有什么办法可以找出到底发生了什么吗?有没有办法确认这是 VMware 的问题,而不是 Ubuntu 的问题?

答案1

swappiness在生产环境中不建议将其设置为 0,尤其是对于运行多个虚拟机的主机。我曾在服务器和我自己的工作站上看到过奇怪的问题,swappiness将其设置为 0 后,将其更改为 5 或更高的值会使其恢复正常,只是不要将其设置为零,除非您 100% 确定自己在做什么以及后果和解决方法。

我不信任 GNOME 系统监视器。通常使用freevmstatdstat

  1. freefree可用系统内存 = 空闲内存 + 缓冲区 + 缓存,或 +输出中的缓冲区/缓存。
  2. vmstat主要用于监控页面(交换)出入,如果出现大量页面出入,则需要进行故障排除。
  3. dstat比 vmstat 更先进

您是否尝试过检查 VMware Workstation 已知问题?确保您运行的是最新版本:9.0.1?

Linux内存管理:

http://www.linuxatemyram.com/

https://serverfault.com/questions/449296/why-is-linux-reporting-free-memory-strangely

答案2

该解决方案最终通过未来的内核更新得到解决。据记录,导致此问题的问题内核是3.5.0-17-generic

相关内容