Windows XP 速度变慢,原因何在?

Windows XP 速度变慢,原因何在?

我运行 Windows XP,过了一段时间后,它似乎变得非常迟缓。我怀疑这是因为 Firefox 占用了大量内存,但我注意到,当我重新启动时,其他几个程序退出也很慢。

有没有办法测量全部进程内存随时间推移的消耗?我想要的是进程资源管理器,但针对的是每个进程,而不仅仅是我为其打开属性的进程。

在 Unix 领域,我会ps反复运行快照,并查看 RSS(并公然忽略共享内存页面)计算什么

  • 现在是一头猪
  • 增长最多(当我没注意的时候)。

我需要每个过程大约 8-24 小时的历史记录,而不仅仅是屏幕上可以显示的内容。

有任何想法吗?

答案1

前段时间我写道Windows Perfmon:十大计数器在我的旧博客上。本文简要介绍了如何使用 Perfmon 来确定硬件瓶颈:处理器、内存、磁盘或网络(其次,确定这些资源上的当前操作负载)。我再怎么强调这一步也不为过:首先确保你知道哪些硬件资源被过度使用然后去猎捕资源消耗大户。

一旦确定了哪种资源被过度使用,您就有两个选择:添加更多该资源(获得更快的 CPU、添加内存、获得更快的磁盘或 NIC)...或追踪该资源的顶级用户,然后杀死它们或采取措施使它们不那么耗费资源。

追踪资源占用最高的应用程序的最简单方法是进程探索器。务必从具有管理员权限的帐户运行它。以下是要查找的内容的简要列表:

  • 为了内存瓶颈(最常见的瓶颈),使用工作集虚拟尺寸, 和私人字节历史记录来自的列进程内存选项卡。按降序逐列排序(最大值位于列顶部)。其中,工作集通常是最有价值的。
  • 为了CPU 瓶颈,显然你想要CPU使用率柱子。CPU历史也非常方便。这些都在工艺性能tab。再次按降序排序。此值往往比内存使用值跳动得更多,因此不要仓促判断。观察一段时间,看看您的主要嫌疑人是否在顶部停留了几秒钟以上。
  • 为了磁盘瓶颈(通常实际上内存瓶颈,因为系统被迫从磁盘分页内容(太频繁了)你真的没有很好的选择,因为 Windows 没有每个进程的磁盘 I/O 性能计数器。但是你可以查看每个进程的总 I/O(包括磁盘、网络和设备 I/O),你可以使用I/O 读取字节数I/O 写入字节数计数器作为粗略估计。这些是在工艺性能标签。
  • 网络瓶颈不太可能是你的问题,但由于每个进程的网络计数器都归入 I/O,因此你可以用我上面描述的磁盘瓶颈的相同方法大致了解一下。由你来决定在这些列中看到的 I/O 更可能是磁盘还是网络 I/O。如果你使用的是 Vista/2008/7,你可以从Windows 性能工具讨论在我的新博客上。

祝你好运!

答案2

perfmon.msc还有 sysInternals'进程监控,记录。

答案3

您可能希望先使用任务管理器,它将为您提供大量信息。

答案4

您可以使用 sysinternals 的 ps 或 cygwin 的 ps,或者如果您认识开发人员,那么编写一个程序来运行每个进程并提取某些统计数据也是很简单的。

这段代码应该真的在 stackoverflow 上,而且领主们可能会说些什么,但它让你知道这个任务有多么容易:

public static string ListAllApplications()
{
    StringBuilder sb = new StringBuilder();

    foreach (Process p in Process.GetProcesses("."))
    {
        try
        {
            if (p.MainWindowTitle.Length > 0)
            {
                sb.Append("Window Title:\t" +
                    p.MainWindowTitle.ToString()
                    + Environment.NewLine);

                sb.Append("Process Name:\t" +
                    p.ProcessName.ToString()
                    + Environment.NewLine);

                sb.Append("Window Handle:\t" +
                    p.MainWindowHandle.ToString()
                    + Environment.NewLine);

                sb.Append("Memory Allocation:\t" +
                    p.PrivateMemorySize64.ToString()
                    + Environment.NewLine);

                sb.Append(Environment.NewLine);
            }
        }
        catch { }
    }

    return sb.ToString();
}

相关内容