在我的 ESX 盒上,我有一台 Windows XP 低资源机器,我用它来托管我的(虚拟)服务器的一些脚本和管理工具。
每当我的机器闲置 20-30 分钟,CPU 和 IO 使用率几乎都会达到 100%。只要我移动鼠标,使用率就会迅速下降。大约 5 秒钟内,它就变成了一个正常的虚拟机。
此后,就像什么事都没发生过一样,速度又变得非常快。
我读过这里的其他答案,但没有帮助,我发现VMWare 指南这也无济于事 - 虚拟机设置正确(据我所知) - ACPI 单处理器等和 Windows XP 作为模板。
我想知道是否有人知道发生了什么?另外,最让我困惑的是,我让 Process Explorer 一直运行,并设法将其追踪到一个svchost.exe
进程 - 不幸的是,它是一个承载大量服务的大型进程。
我原本以为它是一个空闲进程,会占用整个周期,或者是客户机不显示任何内容,只是在 ESX 框上忙碌......所以这个问题让我很困惑。
无论如何,我读过这里的好答案,如果没有人知道发生了什么,我会尝试实现它(我没有这样做的原因是我真的不想重新启动这台机器——它目前正在执行关键任务)。该服务器是 vanilla XP Pro SP3 安装 + VMWare Tools + Filezilla + 一些管理脚本(这些脚本是我编写的,如果 PC 没有闲置,它们会正常工作)。
这是机器以 100% 运行的一个例子,然后我移动鼠标并断开控制台 - 您可以看到,它只花了 20 多分钟,然后,它又回到 100% 的 CPU 和 IO。
有人知道发生了什么事吗?
答案1
您是否已完全禁用所有电源管理?您是否已禁用休眠?您是否已禁用屏幕保护程序?
答案2
我认为您可以使用 Process Explorer(来自 SysInternals)来尝试深入了解哪个服务正在消耗 CPU。
答案3
看起来像是在执行 SP3/windowsupdates 等之后进行的 .NET 重新编译(参见 IOstats)
答案4
我在非虚拟 XP 工作站上也看到过类似的行为。行为与您描述的一样:高 CPU、高磁盘活动,而且只要我触摸键盘或移动鼠标,它几乎就会立即停止。
这可能是 Windows 更新其预取缓存。它通常在一段时间不活动后在后台运行。有一个很好的描述这里;向下滚动到“预取”部分。该部分的最后一段指出,系统将定期启动碎片整理实用程序,尝试将所有预取文件移动到单个连续区域。它通常只持续几分钟,但如果你习惯清除 XP 的预取目录(你不应该),重建它需要做更多的工作。我不清楚是否可以禁用此过程的碎片整理部分。TweakUI 有一个选项可以禁用后台磁盘优化,但它具体做什么却不清楚。
如果不是这样,另一个可能是 Windows索引服务,默认情况下处于启用状态。如果您不经常使用 Windows 内置搜索,可以将其禁用,但影响不大。由于它正在索引您的(虚拟)磁盘,因此肯定会导致磁盘 I/O 激增,并且 CPU 通常也会上升。