【问题标题】:What could cause the application as well as the system to slowdown?什么可能导致应用程序和系统变慢?
【发布时间】:2010-10-16 08:43:38
【问题描述】:

我正在调试一个应用程序,它严重降低了系统的速度。应用程序从本地硬盘加载大量数据(大约 1000 个文件,每个半 MB)。这些文件作为内存映射文件加载,并且仅在需要时进行映射。这意味着在任何给定时间点,虚拟内存使用量都不会超过 300 MB。

我还使用 sysinternals 中的 handle.exe 检查了句柄计数,发现最多打开了大约 8000 个奇数句柄。卸载数据时,它会下降到 400 左右。每次加载和卸载操作后都没有句柄泄漏。

在 2-3 次加载卸载循环后,在一次加载期间,系统变得非常缓慢。我检查了应用程序的虚拟内存使用情况以及此时的句柄计数,它完全在限制范围内(VM 大约 460MB 也没有太多碎片,句柄计数 3200)。

我想知道应用程序如何使系统响应缓慢?我还可以使用哪些其他工具来调试此场景?

让我更具体地说,当我的意思是系统时,整个窗口都在变慢。任务管理器本身需要 2 分钟才能启动,并且通常需要硬重启

【问题讨论】:

  • 让我更具体地说,当我的意思是系统时,整个窗口都在变慢。任务管理器本身需要 2 分钟才能启动,而且通常需要硬重启。

标签: windows performance debugging winapi profiling


【解决方案1】:

整个系统变慢的事实非常烦人,这意味着您无法轻松附加分析器,这也意味着甚至很难停止分析会话以查看结果(因为您说它需要硬重启)。

在这种情况下最适合这项工作的工具是 ETW(Windows 事件跟踪),这些工具非常棒,可以为您提供您正在寻找的确切答案

在这里查看它们

http://msdn.microsoft.com/en-us/library/cc305210.aspxhttp://msdn.microsoft.com/en-us/library/cc305221.aspxhttp://msdn.microsoft.com/en-us/performance/default.aspx

希望这可行。 谢谢

【讨论】:

    【解决方案2】:

    此时您可以使用的工具:

    • 性能监控
    • 事件查看器

    根据我的经验,当系统发生阻止任务管理器弹出的事情时,它们通常属于硬件种类 - 检查事件查看器的系统事件日志有时只是充满了某些硬件的警告或错误设备超时。

    如果事件查看器未指示任何类型的可记录硬件错误导致速度变慢,请尝试 Perfmon——为系统对象添加计数器以每秒跟踪文件读取、异常、上下文切换等,并查看是否有问题很明显。

    坦率地说,所展示的这种行为意味着用户模式代码不可能(按设计)导致。 WinNT 付出了很多努力来隔离应用程序,并防止恶意应用程序使系统无法使用。所以我怀疑是某种硬件故障是罪魁祸首。您是否有机会在不同的 PC 上简单地运行相同的测试?

    【讨论】:

      【解决方案3】:

      如果您没有分析器,您可能必须手动完成相同的工作...

      您是否尝试过注释掉所有读/写操作,只是为了检查减速是否消失? “分而治之”的策略将帮助您找到问题所在。

      【讨论】:

        【解决方案4】:

        如果您在 IDE 下运行它,请运行它直到它变得非常慢,然后点击“暂停”按钮。你会在做任何需要花费大量时间的事情时发现它。

        【讨论】:

          【解决方案5】:

          您使用“IBM Rational Quantify”或“Intel VTune”等工具来检测性能问题。
          [编辑]
          就像 Benoît 所做的那样,一个好的方法是测量任务时间以确定哪个正在消耗 CPU。
          但请记住,由于您正在处理许多文件,因此可能会丢失导致内存到磁盘交换的文件。

          【讨论】:

            【解决方案6】:

            当任务管理器需要 2 分钟才能启动时,您是否有大量磁盘活动?还是受cpu限制?

            我会尝试 sysinternals 的进程资源管理器。当您的系统处于减速状态,并且您尝试运行记事本等时,请注意页面错误增量。

            【讨论】:

              【解决方案7】:

              Windows 对缓存文件数据非常贪婪。我会尝试按照某人的建议删除文件 I/O,并确保在完成文件后立即关闭文件映射。 I/O 可能导致您的速度变慢,特别是如果您的文件与操作系统位于同一磁盘上。另一种测试方法是将文件移动到另一个磁盘,看看是否可以缓解问题。

              【讨论】:

                猜你喜欢
                • 2014-12-16
                • 1970-01-01
                • 2016-10-26
                • 1970-01-01
                • 2023-03-03
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多