微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用于在Windows上监视单个文件IO性能的API

我可以使用什么Windows API来监视特定文件文件集的I / O性能指标? 性能计数器似乎只提供更高级别的对象,如Logicaldisk和Physicaldisk。 我正在寻找Windows资源监视器在磁盘 – >磁盘活动下使用的东西,即读取/写入bps和响应时间。

Winsock跟踪无法获得详细的级别事件

如何从Microsoft-Windows-Ndis-PacketCapture提供程序使用实时ETW事件?

如何从nt.sys和w32k.sys中的内存地址parsing符号

如何获取内核模块nt和win32k的地址?

列出ETW提供者的事件类

我做了一个“Perfmon个人文件”的快速搜索,没有看到任何有希望的。

但是我不确定测量单个文件性能是否有意义。 I / O活动在几个地方被合并在I / O堆栈中,结果是在不同的级别操作系统无法区分一个文件与另一个文件文件I / O。

假设应用程序本身没有执行任何缓冲/缓存,则首先可以在“C”(或类似的)运行时库中进行缓冲。 另一个合并发生的地方是在文件系统(我假设NTFS)。 文件目录的I / O可以合并到同一目录中的多个文件中。 I / O可以根据文件系统的块大小进行合并。 因此,如果多个MFT条目共享一个块,则它们都可以一次被读取/写入。 NTFS还实现缓存和其他I / O优化(预读)。 高速缓存的性能可能受到同时运行的其他进程的影响,方法是访问要测量的相同文件(帮助将文件保存在缓存中)或访问其他文件(帮助从您的文件删除文件高速缓存)。

合并也发生在逻辑磁盘级别的文件系统下面。 单个I / O可能服务于多个文件

在磁盘驱动程序级别,单个I / O请求可能再次涉及多个文件。 此外,驱动器(或者更有可能是驱动器固件)可以基于其关于驱动器“几何”的知识来重新排序磁盘I / O,以在可能的(可能的)响应时间的花费下获得额外的吞吐量。 在这种情况下,如果其他进程没有同时执行I / O操作,那么文件的I / O可能会受到影响。

许多磁盘在DRAM中执行缓存。 这个缓存也将受到其他进程的影响,就像Window的缓存一样。 由于其他过程的活动而再次影响测量的性能

如果你仍然想测量,一种绕开Perfmon限制的方法是将文件文件集放在不同的驱动器上。 驱动器不一定必须是不同的物理驱动器,它们可以是VHD或其他类型的虚拟物理磁盘。 我知道卷快照服务(VSS)SDK有一个小工具来创建虚拟驱动器的文件

但是将文件放在自己的物理磁盘上可能会得到更加一致的结果。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐