измерять время .net потока, потраченного на ожидание ввода-вывода - PullRequest
2 голосов
/ 25 января 2011

Это продолжение Сколько времени проведено в .NET Thread?

Я знаю, как я могу измерить время процессора в потоке (http://www.codeproject.com/KB/dotnet/ExecutionStopwatch.aspx),, но яЯ не знаю, как измерить IO ожидания потока. Поток ожидает IO, прерывается. Пока другие потоки выполняются, IO-операция нашего потока заканчивается, мы возвращаемся к нашему потоку, мы останавливаем секундомер, но он показывает неправильно большое времяЕсть идеи по этому поводу?

1 Ответ

1 голос
/ 25 января 2011

Вам нужно сделать это специально в коде?Если вы используете WinDbg, вы можете использовать! Runaway для получения времени ЦП каждого потока как для режима ядра, так и для режима пользователя http://blogs.msdn.com/b/debuggingtoolbox/archive/2009/08/20/special-command-cpu-time-for-each-thread-with-runaway.aspx.

В качестве альтернативы вы можете использовать ProcessExplorer.Если вы дважды щелкните по процессу, вы можете получить эту информацию на вкладке темы.http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx.

В качестве альтернативы этот поток на C ++ Как получить информацию об использовании процессора для каждого потока в Windows (win32) содержит информацию о вызовах Win32 API.

...