gpt4 book ai didi

.net - Windows Xperf diskio 操作不显示程序在性能跟踪 session 期间读取的文件

转载 作者:可可西里 更新时间:2023-11-01 11:38:37 26 4
gpt4 key购买 nike

我运行 xperf 是为了在运行程序时获取程序的跟踪信息。程序读取一个文件。它是一个用 F# 编写的 .NET 程序,文件在这里读取:

System.IO.File.ReadAllLines("MyReadFile.txt")

嗯。我运行 xperf:

xperf -on DiagEasy

我停止 xperf 并合并到一个文件中:

xperf -d myfile.etl

好的。

现在我写:

xperf -i myfile.etl -o myfile_stat.txt -a diskio -detail

我这样做是为了获得一个包含所有文件信息的文件。显示的文件是格式化的文本文件,以便让我按文件查看磁盘统计信息。在跟踪 session 期间被操作的每个文件都显示有很多关于读/写文件的过程的数据等等......

但是 MyReadFile.txt 没有出现在那里。

为什么????是不是因为cpu采样频率太低?我该如何改变它?...

但是,我的程序读取文件,我确定,程序启动并打印出内容...

谢谢

最佳答案

DiagEasy 为进/出磁盘的 IO 打开 ETW 检测。如果文件已经在内存中,则不会有IO。您需要打开 FILE_IO 和 FILE_IO_INIT 事件,如上面 Gary 所述,以捕获所有文件访问,甚至是当前内存中的文件。

您可能会问为什么文件在内存中。收集数据时,文件可以通过两种方式存储在内存中。

自从您启动系统后,您之前访问过该文件,要么读取它,要么写入它。文件将保留在内存中,直到内存需求足够大,这些文件页才会从 RAM 中推出。由于这些是文件支持的页面,任何已修改的内容都将在页面被 xero 处理之前写入文件 (MyReadFile.txt),然后提供给进程使用。

文件可能在内存中的第二种方式是 SuperFetch 看到对该文件的重复访问,并在磁盘空闲时主动将其加载到内存中。这样做是为了消除从磁盘读取数据时对文件的延迟访问。

关于.net - Windows Xperf diskio 操作不显示程序在性能跟踪 session 期间读取的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5261585/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com