как узнать, что вызывает ввод-вывод в моем приложении?

Добрый день,

Я унаследовал код C# много лет назад. Я немного изменил его, чтобы он был асинхронным. Оценивая влияние моих изменений на производительность процессора, я использовал Process Explorer чтобы примерно посмотреть, что делает мое приложение. К моему удивлению, похоже, он делает то, что Process Explorer сообщает как ввод-вывод. Как правило, это связано с дисковым вводом-выводом или сетевым вводом-выводом. Основываясь на том, что я вижу в коде, я не могу понять явный вызов любого из этих двух источников ввода-вывода.

Мой вопрос: как лучше всего определить, какая часть кода вызывает ввод-вывод? Мы используем dotTrace от JetBrains для профилирования нашего приложения, но, насколько я могу судить, он обрабатывает только производительность процессора и памяти.

Заранее спасибо за любые указатели.

С уважением,

Эрик.


person Eric Liprandi    schedule 03.11.2010    source источник


Ответы (4)


Process Monitor может быть вашим ответом. Обратитесь к следующему вопросу StackOverflow для получения дополнительной информации.

Как я могу профилировать файловый ввод-вывод?

Основываясь на этом ответе, вы можете найти в своем решении имя файла любого часто читаемого или записываемого файла, найденного с помощью Process Monitor.

person Thomas Langston    schedule 03.11.2010
comment
+1. Я считаю, что функция Process Activity Summary бесценна для того, чтобы сразу увидеть, к каким файлам обращаются чаще всего. - person the_mandrill; 04.11.2010
comment
Большое спасибо. Хотя это не показывало, какая часть моего кода это делает, как только я увидел, к какому файлу осуществляется доступ, я прибил его. Цените помощь. - person Eric Liprandi; 04.11.2010

метод стека, также называемый случайной паузой, найдет его. , если это занимает значительное время.

person Mike Dunlavey    schedule 03.11.2010

Если код ввода/вывода является управляемым, вы можете загрузить символы для .net framework и установить точки останова в важных функциях (например, конструкторы FileStream и т. д.)

Это требует некоторой догадки, но может быть информативным, если вы преуспеете.

person Community    schedule 03.11.2010

В дополнение к Process Monitor я считаю, что Resource Monitor в Win7 (также доступный в разделе «Производительность и надежность», я думаю, в Vista) очень полезен для диагностики замедлений, связанных с вводом-выводом. Переключитесь на представление диска и выполните сортировку по параметрам «Чтение/запись» или «Всего» (только для Win7). Также следите за списком отображаемых файлов.

person the_mandrill    schedule 03.11.2010