如何获取应用程序从文件系统读取/写入所花费的总时间?
我现在正在分析一个执行大量磁盘 I/O 的应用程序。
此时,我想知道磁盘 I/O 花费了多少时间。这样,我就可以对I/O和整个执行时间进行比较,以决定下一步的优化目标。
简而言之,我正在寻找工具或方法来:
- 计算和总结我的应用程序的磁盘 I/O 操作的总时间。
- 堆栈跟踪不是强制性的,但很有帮助
- 适用于 Windows 或 OSX。
我无法控制执行磁盘 I/O 操作的组件。所以我无法将分析代码添加到我的应用程序中来手动记录 I/O 时间。
我已经尝试过 Xcode Instruments 的时间分析器
。但它太重了。我只想要 I/O 操作的摘要时间。
谢谢
I am now profiling an application, who does a lot of disk I/O.
At this point, I want to know how much time is spent on disk I/O. So that, I could make a comparison between I/O and the whole execution time, in order to decide the next target of optimization.
In short, I am seeking tools or methods to:
- Calculate and summary the total time of disk I/O operations of my application.
- Stack trace is not mandatory but helpful
- Works on Windows or OSX.
I have no control on the component who does disk I/O operations. So I have no way to add profiling codes into my application to record I/O time manually.
I have tried the time profiler
from Xcode Instruments. But it is too heavy. I just want a summary time of the I/O operations.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在 Windows 上使用 XPerf 告诉您有关文件 I/O 时间的详细信息。您也可以通过此获得堆栈跟踪 - Michael Milrud 有一个关于使用 XPerf 的精彩 PDC09 视频。
Use XPerf on Windows to tell you in excruciating detail about the file I/O times. You can get stack traces with this as well - there's a great PDC09 video on using XPerf by Michael Milrud.
我曾经为 Win32 下的 ReadFile/WriteFile 编写过一些简单的钩子。您只需从主函数调用
init()
函数,整个过程的调用就会被拦截。我只是不知道如何发布它们,因为它们太大了。
I've wrote once some simple hooks for ReadFile/WriteFile under Win32. You just have to call an
init()
function from the main and the calls from the whole process will be intercepted.I just don't know how to post them, because they are quite large.