I am profiling a highly parallel project with dotTrace and noticed that the CLR is spending almost 50% of its time waiting for ntdll.dll. I am having a hard time figuring out what to attribute this to.
Is there a way I can determine what is causing the CLR to spend so much time with calls to the kernel? I have developed this project to be as low-allocation as possible, and garbage collection usage is negligible compared to the time spent running. The only thing I can think of attributing this to is memory latency or CPU cache misses, as some of the CPU-intensive calculations utilize random memory accesses.
