Как выяснить, связан ли мой процесс с ЦП, привязка ввода/вывода, привязка к памяти или
Я пытаюсь ускорить время, затраченное на компиляцию моего приложения, и одна вещь, которую я изучаю, - проверить, какие ресурсы, если таковые имеются, я могу добавить к машине сборки, чтобы ускорить процесс. С этой целью, как я могу понять, буду ли я инвестировать в большее количество процессоров, больше оперативной памяти, лучший жесткий диск или связан ли процесс с каким-то другим ресурсом? Я уже видел это (Как проверить, связано ли приложение cpu-bound или связанное с памятью?), и я ищу больше советов и указателей.
Что я пробовал до сих пор:
-
Время процесса на машине сборки и на моей локальной машине. Я обнаружил, что машина для сборки занимает в два раза больше времени, чем моя машина.
-
Запустите "Монитор ресурсов" и посмотрите на использование ЦП, использование памяти и использование диска во время процесса - при этом у меня проблемы с интерпретацией чисел, главным образом потому, что я не понимаю, что каждый столбец означает, и как это переводится в виртуальную машину по сравнению с физическим полем и что это означает с многопроцессорными ящиками.
Ответы
Ответ 1
Пуск > Выполнить > perfmon.exe
Монитор производительности может отображать множество системных показателей, которые вы можете использовать, чтобы вывести, где узкие места включают загрузку процессора, операции io, образы профайлов и т.д.
Кроме того, Platform SDK теперь включает инструмент под названием XPerf, который может предоставить информацию, более релевантную разработчикам.
Ответ 2
Random-pausing расскажет вам, какой у вас процент разделения между CPU и временем ввода-вывода.
В принципе, если вы захватите 10 случайных стеков, а если 80% (например) времени находится в I/O, то на 8 +/- 1.3 образцах стек достигнет системной процедуры, которая читает или записывает буфер.
Если вам нужна более высокая точность, возьмите больше образцов.