我管理着一个相当强大的工作站,但不知为何,机器运行非常缓慢。查看任务管理器,我发现几乎没有内存是空闲的,很多内存都用作缓存(在我看来,这应该与空闲内存非常相似)——但是机器正在大量交换。有相当多的大型进程打开(Lotus Notes、Word、两个 Visual Studio 副本),但在我看来,这不应该使像这样的机器崩溃到无法使用的地步(切换任务需要几分钟,在活动窗口中输入会让操作系统注意到应用程序没有响应,等等)。
操作系统是 Win7 64 位,我有一个普通硬盘和一个 32 GB 的 SSD,用于安装 ReadyBoost。是否有一些模糊的设置可以让我调整,以允许系统使用更多内存进行私有映射而不是磁盘缓存,还是我误读了这些数字?我还可以尝试其他什么方法让系统性能更好?
答案1
呃。任务管理器是一个相当糟糕的性能测量工具。
例如,当我评估一个运动队的表现时,我应该看他们一场比赛的统计数据,还是多场比赛的统计数据?
最重要的是,与更重要但较远的数据点相比,人类大脑更加重视最近的数据点,因此也更加重视这些数据点。
自由记忆的神话
据我所知,系统应该始终保留一些“空闲”(即清零)的页面,以便在进程请求时可以快速映射这些页面(这样就可以从另一个 CPU 清除页面,同时请求进程可以继续进行)。
在今天的机器上,将内存页面清零是一个相当简单的过程。即使是使用顶级 SSD,磁盘访问也是性能下降的主要原因。空闲内存和磁盘访问在性能上相互关联是有原因的,因为对于应用程序来说,它们是同一件事:二级存储。虽然内存不足会导致操作系统访问磁盘,但从我对 perfmon 图表的观察来看,磁盘访问和网络延迟(呃,我讨厌我们的 ISP)是当今性能问题的主要因素。
也无法读取空闲内存(清零页面)对机器的影响。我们不知道峰值提交、峰值页面错误数、页面数等。我建议不要妄下结论实际上是快照。
我的建议
获取多个数据点。
如果你有机器的本地管理员访问权限,请启动perfmon
并使用默认系统性能数据集收集器。让它每 10 到 15 秒收集一次数据点,并运行几天。
另外,看看您的工作流程中更快的机器能帮上什么忙。更快的机器可能帮不上什么忙。例如,VS2010 在构建期间可能会占用大量内存,因为它必须加载项目的所有依赖项。我知道有几个地方会拿几台旧的 Pentium 4 并将构建工作“外包”给他们。
“缓慢”也可能归咎于应用程序本身。并非所有程序都旨在利用大量可用内存。有些应用程序非常积极地保持低内存配置,但宁愿将数据保留在磁盘上,因为磁盘空间并不重要。