我正在寻找一种可能性,可以测量完成向 NTFS 驱动程序发出的文件操作(打开文件、关闭文件、删除文件、写入、读取等)所需的时间,并能够记录它。我无法更改应用程序来测量应用程序内部的时间。我感兴趣的是从发出调用到返回应用程序执行之间经过了多少时间。
应用程序不断向 iSCSI 存储上的 NTFS 卷写入数据。它还会定期删除最旧的文件。文件大小在 100 到 200 MB 之间。卷上始终有大约 10% 的可用空间。在某些时候,应用程序无法以正常速度写入数据,因此它开始在内存中缓冲。然后发生了一些事情,缓冲区开始清空,一切恢复正常。
我测试了物理卷和逻辑卷的 I/O 操作 - 在“中断”期间没有发现任何异常
现在我想找出问题出在应用程序中还是操作系统的某个地方。因此,我在想,如果我能够记录所有文件操作的时间,我就能找出是系统比平时花费了更多的时间,还是操作太快,应用程序内部有东西阻塞了。
平台是 64 位 Windows Server 2008R2。我尝试了 sysinternals 进程监视器,但它没有记录执行时间。问题可能需要几个小时才会出现。
您能建议适合这项工作的工具吗?
答案1
雇人为文件系统编写单片或微型过滤驱动程序。您将能够拦截来自特定应用的所有调用,并将它们直接追踪到 NTFS 或任何其他 FS 驱动程序入口点。OSR 有一些数据拦截(?)工具包或其他东西,也可以派上用场。