Выбор запуска системного монитора локально или удаленно
Пока я готовился к написанию этой статьи, мои мысли перенеслись на один из уроков физики в колледже. Во время одной из лекций профессор объяснял, что абсолютный ноль — это температура, при которой в объекте абсолютно не остается тепла. Кто-то в классе спросил, существует ли что-нибудь настолько холодное. Профессор объяснил, что ученые вплотную подошли к созданию абсолютного нуля температур, но на самом деле добиться абсолютного нуля было невозможно. Причина, которую он назвал, заключалась в том, что в механизме, используемом для измерения температуры объекта, есть тепло. Далее он объяснил, что один из фундаментальных законов физики заключается в том, что вы не можете измерить объект (температуру или что-то еще), не воздействуя на объект хотя бы в небольшой степени.
Причина, по которой я поднимаю этот вопрос, заключается в том, что в последнее время я заметил, что на различных веб-сайтах ведутся довольно горячие споры о том, что более целесообразно запускать Windows Performance Monitor локально или удаленно. У обеих сторон есть хорошие аргументы, но причина спора связана с небольшим уроком физики, который я только что преподал вам. Монитор производительности предназначен для измерения того, что происходит внутри компьютера. Как диктуют законы физики, вы не можете измерить производительность вашего компьютера, не повлияв на нее в той или иной степени.
Обе стороны локальных/удаленных дебатов согласны с тем, что результаты монитора производительности искажены. Дебаты сосредоточены не вокруг предотвращения перекосов, а скорее о том, будут ли результаты меньше искажены, когда вы запускаете системный монитор локально или удаленно.
Прежде чем я начну
Лично я думаю, что с моей стороны было бы недальновидно говорить вам, что вы всегда должны запускать монитор производительности локально или всегда запускать его удаленно. Причина, по которой я говорю это, заключается в том, что монитор производительности — это сложный инструмент, который может выполнять множество различных задач. Вместо того, чтобы говорить вам всегда запускать системный монитор локально или всегда запускать системный монитор удаленно, я думаю, что имеет смысл рассматривать дебаты на уровне задач, а не на уровне инструментов. Конечно, монитор производительности включает в себя сотни, если не тысячи счетчиков. Нет возможности написать обо всех. Поэтому я сосредоточу свое внимание на некоторых наиболее распространенных задачах мониторинга производительности. В следующих разделах основное внимание уделяется конкретным аспектам мониторинга производительности системы.
Мониторинг ЦП
Одна из наиболее распространенных задач мониторинга производительности включает в себя наблюдение за использованием ЦП компьютера. Как вы, наверное, знаете, Windows рассматривает каждое приложение или службу как независимый процесс. Каждый процесс состоит из одного или нескольких потоков. Потоки — это то, что на самом деле выполняет центральный процессор компьютера.
Если вы остановитесь и подумаете об этом, Performance Monitor — это приложение. Как и любое другое приложение, оно должно выполнять потоки при запуске. Нравится вам это или нет, но рисование всех этих классных графиков потребляет некоторую вычислительную мощность, из-за чего создается впечатление, что процессор работает больше, чем на самом деле.
Однако, как я сказал в начале, никто не обсуждает тот факт, что монитор производительности дает искаженные результаты. Вопрос в том, являются ли результаты более точными, когда вы запускаете системный монитор локально или удаленно. Приступая к этой статье, я подозревал, что результаты, вероятно, будут более точными, когда вы запускаете монитор производительности удаленно, потому что вы не потребляете циклы ЦП, рисуя диаграммы монитора производительности. Вместо того, чтобы просто сказать вам, чтобы вы запускали монитор производительности удаленно при измерении загрузки ЦП, я решил проверить его.
Я решил запустить Performance Monitor на одну минуту и сорок секунд на одном из моих серверов. Я провел тесты в период минимальной активности в 10:30 в воскресенье вечером. На рис. A показан результат теста, когда он был запущен локально. На рис. B показан результат того же удаленного запуска теста.
Рисунок A. Это был тест загрузки ЦП, который выполнялся локально.
Рисунок B: Это результат удаленного запуска теста загрузки ЦП.
Конечно, этот тест не совсем научный, потому что для получения действительно точных результатов тест должен проводиться в течение длительного времени. Однако за период тестирования оба теста дали примерно одинаковое количество всплесков активности. Однако всплески были намного ниже, когда тесты проводились удаленно. Таким образом, средняя загрузка ЦП также была ниже. Увидев это, я склонен согласиться с моим прогнозом о том, что тесты загрузки ЦП, вероятно, более точны при удаленном запуске.
Мониторинг диска
Существует множество счетчиков, которые можно использовать для измерения использования жесткого диска. Я решил использовать счетчик %Disk Time для этого теста, так как он отражает количество времени, в течение которого жесткий диск фактически должен работать. Моя теория заключалась в том, что, запускаете ли вы монитор производительности локально или удаленно, вероятно, не имеет большого значения, поскольку монитор производительности фактически не сохраняет данные, когда вы пассивно контролируете использование диска.
Я тестировал активность жесткого диска примерно так же, как тестировал загрузку процессора. Тесты проводились в период минимальной активности, поздно ночью. На рис. C показаны результаты локального запуска теста. На рисунке D показаны результаты удаленного запуска теста.
Рисунок C. Это счетчик %Disk Time при локальном запуске.
Рисунок D. Это счетчик %Disk Time при удаленном мониторинге.
В конце концов, было несколько всплесков активности диска при удаленном запуске теста, но я не думаю, что эти всплески были связаны с удаленным запуском Performance Monitor. Было слишком много времени, когда процент использования диска был равен нулю, чтобы я мог поверить, что удаленный запуск теста действительно имеет значение. Конечно, единственный способ убедиться в этом — провести тест в течение длительного времени в контролируемых условиях.
Мониторинг памяти
При тестировании памяти системы я изначально был склонен смотреть на счетчик Pages/Sec. Этот счетчик отслеживает частоту, с которой страницы памяти считываются или записываются на диск. Однако последний тест показал, что активность диска невелика. Поэтому я решил вместо этого отслеживать доступные байты памяти.
Обычно доступные байты должны оставаться довольно постоянными, если только вы не запускаете приложение, требующее много памяти, или вы не открываете или не закрываете приложения. Приступая к работе, я ожидал, что при локальном запуске теста будет немного меньше доступной памяти, поскольку приложению Performance Monitor требуется некоторая память. На рис. E показаны результаты тестирования, когда тест выполнялся локально, а на рис. F — результаты, когда тест выполнялся удаленно.
Рисунок E. Доступные байты памяти, показанные монитором производительности при локальном запуске.
Рисунок F. Доступные байты памяти, показанные монитором производительности при удаленном запуске.
Когда я на самом деле провел тесты, результаты были именно такими, как я ожидал. При удаленном запуске системного монитора системе доступно больше памяти.
Мониторинг использования сети
Последний тест, который я решил выполнить, заключался в том, чтобы увидеть, есть ли разница в том, как Performance Monitor сообщает об использовании сетевого трафика в зависимости от того, запущен ли Performance Monitor локально или удаленно. Вступая, я предполагаю, что монитор производительности будет показывать гораздо больше сетевого трафика при удаленном запуске. Для тестов я буду измерять счетчик Bytes Total/Sec объекта производительности сетевого интерфейса. Результаты показаны на рисунках G и H.
Рисунок G. Это общий объем сетевого трафика сервера, согласно отчету с системным монитором, запущенным локально.
Рисунок H. Это общий объем сетевого трафика сервера, согласно отчетам с запущенным удаленно монитором производительности.
Если вы посмотрите на графики, показанные на рисунках G и H, на первый взгляд может показаться, что оба теста измеряют одинаковый объем сетевого трафика. Однако, если вы посмотрите на среднее, минимальное и максимальное значения, вы увидите, что при удаленном запуске трафика было значительно больше трафика.
Вывод
Монитор производительности не идеален. Независимо от того, решите ли вы запускать монитор производительности локально или удаленно, результаты будут в некоторой степени искажены. Однако, на мой взгляд, искаженные результаты обычно не имеют большого значения, если вы не работаете над чем-то, что требует высокой степени точности. Причина, по которой я говорю это, заключается в том, что ваша копия монитора производительности дает такие же достоверные результаты, как и любая другая. Мы все работаем с одинаковыми ограничениями. Поэтому, когда вы видите документацию от Microsoft, в которой вам предлагается искать определенные значения счетчика системного монитора, чтобы определить, работает ли этот аспект системы нормально или нет, вы должны помнить, что результаты тестирования Microsoft так же искажены, как и ваши. Я хочу сказать, что на самом деле даже не имеет значения, если результаты искажены, пока результаты всех искажены примерно одинаково. Конечно, компьютеры у всех настроены по-разному, поэтому результаты монитора производительности не у всех будут искажены точно в одинаковой степени, но именно в этом и состоит суть мониторинга производительности; определение того, какие значения являются нормальными для вашей системы и при каком пороге счетчики представляют проблему.
Однако, если бы меня заставили дать рекомендацию, я бы предложил удаленно запустить монитор производительности для измерения использования ЦП, жесткого диска и памяти. Тем не менее, я бы рекомендовал запускать монитор производительности локально, если вы измеряете что-либо, связанное с сетью.