You can use (for free) the Windows Performance Toolki from Windows 8, which also runs on Windows Vista and later. There you can enable system profiling to see what happens in all processes simultaneously. No tools required. To install the secret registry key that runs WPRUI.exe, only one reboot is required.
With XPerf, you can enable the IO Init stack walk so that the call stack is taken for each initial I / O. The only problem is that the stacks will be split into 64-bit processes, which means that you will see only the first method above the BCL methods of your code, because there is a Windows 7 error in the stack capabilities for the OS.
The workaround is Ngen for your builds, or switching to Server 2012 or switching to x86 for profiling to see deeper call stacks.
You will see all the I / O and file activity even without any call stacks and file names along the length of the hard drive. This should give you good information about which part of your application is causing the IO drive. From partial call stacks, you can pinpoint your problem even without full stacks.
The tool will give you much more information than any commercially available profiler due to the fact that you need to learn how to use it. Since call stacks do not end on your code or in user mode, but in the kernel you can also determine, for example, a virus scanner causes significant I / O delays. But you need to know how your processor works. This toolkit was originally aimed at kernel developers, which explains why you see so many useless columns.
In the figure below, you see how the IO and CPU files load. When you select your tall I / O file on the disk I / O graph, it highlights in the CPU consumption all the associated call tables that were made at the same time, while IO was active. This way, you can focus on potentially blocked threads with IO.

source share