Windows XP减速,有什么可归咎的?


1

我运行Windows XP,过了一段时间它似乎变得非常缓慢。 我怀疑Firefox的内存消耗很大,但是我注意到其他几个程序在我重新启动时“退出”很慢。

有没有办法衡量 所有 处理内存消耗随时间推移? Process explorer就是我想要的,但是对于每个进程,不仅仅是我打开属性的进程。

在Unix-land中,我会跑 ps 重复快照,看看RSS(并公然忽略共享内存页)计算什么

  • 现在正在养猪
  • 成长最多(而我不看)。

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

有任何想法吗?

Answers:


5

前段时间我写了 Windows Perfmon:十大计数器 在我的旧博客。本文简要介绍如何使用Perfmon来确定硬件瓶颈的位置:处理器,内存,磁盘或网络(其次,确定这些资源的当前操作负载)。我不能强调这一步: 首先确保您知道哪些硬件资源被滥用 然后 去寻找资源猪。

一旦确定哪个资源被过度使用,您就有两个选择:添加更多资源(获得更快的CPU,添加内存,获得更快的磁盘或NIC)......或者追踪该资源的最高用户,以及要么杀死他们,要么采取措施减少他们的贪婪。

追踪热门资源的最简单方法是 Process Explorer 。请务必从具有Admin privs的帐户运行它。这里有一个快速而又脏的列表:

  • 对于 内存瓶颈 (最常见的瓶颈),使用 工作集 虚拟大小 ,和 私人字节历史 来自的列 进程记忆 标签。逐列排序,降序(列顶部的最大值)。这些, 工作集 通常是最有价值的。
  • 对于 CPU瓶颈 ,显然你想要的 CPU使用率 柱。 CPU历史记录 也方便。这些是关于 流程绩效 标签。再次排序下降。这个值往往比内存使用值更多地跳跃,所以不要做出快速判断。观察它一段时间,看看你的主要嫌疑人是否停留在顶部超过几秒钟。
  • 对于 磁盘瓶颈 (通常是这样的 其实 系统被迫的内存瓶颈 来自磁盘的页面内容 太经常了)你真的没有很好的选择,因为Windows没有每进程磁盘I / O perfmon计数器。但是,您可以查看可以使用的每个进程的总I / O(包括磁盘,网络和设备I / O) I / O读字节 I / O写字节 计数器作为粗略估计。这些是关于 流程绩效 标签。
  • 网络瓶颈 不太可能是您的问题,但由于每个进程的网络计数器被集中到I / O中,您可以按照我上面描述的磁盘瓶颈方式获得一个粗略的想法。由您决定在这些列中看到的I / O是否更可能是磁盘或网络I / O.如果你在Vista / 2008/7上,你可以从这里获得一些帮助 Windows性能工具 讨论 在我的新博客上。

祝好运!



1

您可能希望从使用任务管理器开始,它将为您提供相当多的信息。


1

内置任务管理器的强大替代方案( taskmgr.exe )是 Process Explorer procexp.exe )。 Process Explorer由SysInternals创建,现在由Microsoft拥有和分发。

至于定期采集正常健康系统的样本以建立基线编号,您可以创建使用PowerShell Cmdlet的计划任务 Get-Process,或使用普通DOS的批处理文件 tasklist.exe


1

你可以使用来自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();
}

没有充分的理由代码不能出现在SF上。

0

我一直都有这个问题。 Firefox通常是我的主要冒犯者,但偶尔我会运行内存泄漏。

我知道之前已经说过但我会再说一遍...... Process Explorer实际上有一个非常方便的功能,您可以自定义它以提供一些额外的信息列。具体来说,您感兴趣的额外列是“CPU历史记录”和“私有字节历史记录”我认为这是您试图从系统中收集的信息。它显示了每个进程的滚动图。

alt text

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.