分析磁盘访问

Nav*_*een 5 c++ mfc multithreading profiling disk

目前我正在研究一个读写磁盘的MFC应用程序.有时这个应用程序运行得非常快,有时候它很慢.我猜这是因为涉及磁盘访问,因此我想对其进行分析.这些是这方面的一些问题:

(1).目前我正在使用AQTime分析器来分析应用程序.有没有人试过使用它来分析磁盘访问?或者还有其他可以使用的工具吗?

(2).我应该关注哪些最重要的磁盘参数?

(3).如果我有多个线程试图从磁盘读取和写入数据会影响性能吗?即我最好有一个单独的线程访问磁盘?

Mic*_*ael 2

为此,您可以使用Windows 性能工具包。您可以为磁盘 I/O 事件启用跟踪提供程序,并查看每个事件的 I/O 时间和磁盘服务时间。但它确实有一些学习曲线。这还可以让您确定哪些文件 I/O 实际上导致对磁盘的实际访问,并且不由缓存管理器处理。

最重要的参数是磁盘服务时间和队列长度。磁盘服务时间是磁盘为请求提供服务实际花费的时间。队列长度指示您的磁盘请求是否落后于其他请求。

对于许多带有读取和写入的线程 - 许多磁盘在面对后台写入的读取时性能较差。如果您有多个线程对磁盘上的随机位置执行大量磁盘 I/O,则可能会导致某些请求匮乏。