【问题标题】:How to get the total time an application spends on reading/writing from/to the file system?如何获取应用程序从文件系统读取/写入文件所花费的总时间?
【发布时间】:2010-09-29 02:18:09
【问题描述】:

我现在正在分析一个执行大量磁盘 I/O 的应用程序。

此时,我想知道在磁盘 I/O 上花费了多少时间。这样,我就可以将 I/O 和整个执行时间进行比较,以决定下一个优化目标。

简而言之,我正在寻找工具或方法来:

  1. 计算并汇总我的应用程序的磁盘 I/O 操作的总时间。
  2. 堆栈跟踪不是强制性的,但很有帮助
  3. 适用于 Windows 或 OSX。

我无法控制执行磁盘 I/O 操作的组件。所以我无法在我的应用程序中添加分析代码来手动记录 I/O 时间。

我已经尝试过 Xcode Instruments 的 time profiler。但它太重了。我只想要 I/O 操作的摘要时间。

谢谢

【问题讨论】:

    标签: windows macos file optimization profiling


    【解决方案1】:

    在 Windows 上使用 XPerf 可以详细地告诉您有关文件 I/O 时间的详细信息。您也可以使用它来获取堆栈跟踪 - Michael Milrud 有一个关于使用 XPerf 的精彩 PDC09 视频。

    【讨论】:

    • Xperf 还可以让您查看系统上的其他磁盘活动,以了解磁盘 I/O 缓慢的原因。并且,它区分调用花费了多长时间,以及其中有多少是磁盘处理请求而不是请求在队列中等待。这种区别对于负载很重的系统至关重要。
    【解决方案2】:

    我曾经为 Win32 下的 ReadFile/WriteFile 写过一些简单的钩子。您只需从 main 调用 init() 函数,整个过程的调用将被拦截。 我只是不知道如何发布它们,因为它们很大。

    【讨论】:

      猜你喜欢
      • 2016-07-25
      • 2018-11-14
      • 1970-01-01
      • 2016-08-21
      • 2010-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-03
      相关资源
      最近更新 更多