Поделиться через


Руководство по сценарию. Устранение неполадок с производительностью в Windows

В этом руководстве по сценарию объясняется, как использовать Монитор производительности для сбора данных и как использовать данные для уменьшения узких мест, что делает компьютер медленным. Он вводит общие подходы и пытается объяснить основные понятия устранения неполадок.

Использование монитора производительности для записи данных о производительности

Каждая полная версия Windows поставляется с средством "Входящие" с именем Монитор производительности. Это средство можно использовать для отслеживания сведений о различных аспектах системы Windows с помощью счетчиков производительности, встроенных в Windows, которые предоставляют нам дополнительную информацию об использовании центрального модуля обработки (ЦП) или использовании памяти.

Каждый счетчик создается таким же простым способом:
[Performance counter object]\<Instance>\<Counter Name>

Например:
[Processor Information]\<CPU 0\>\% Processor Time

Для хранения данных о производительности, предоставляемых счетчиками, можно использовать наборы сборщиков данных в Монитор производительности. Экран должен выглядеть так:

Снимок экрана: наборы Монитор производительности и сборщика данных.

Чтобы создать эти наборы сборщика данных, можно использовать графические пользовательские интерфейсы (GUI) или logman.exe команду.

Чтобы создать набор сборщиков данных, выполните следующую команду в окне командной строки с повышенными привилегиями:

logman.exe create counter PerfLog-15Sec-Contoso -o "c:\perflogs\Contoso_PerfLog-15sec.blg" -f bincirc -v mmddhhmm -max 800 -c "Hyper-V Dynamic Memory Balancer (*)\*" "Hyper-V Hypervisor Virtual Processor(*)\*" "Hyper-V Hypervisor Logical Processor(*)\*" "\LogicalDisk(*)\*" "\Memory\*" "\Cache\*" "\Network Interface(*)\*" "\Paging File(*)\*" "\PhysicalDisk(*)\*" "\Processor(*)\*" "\Processor Information(*)\*" "\Processor Performance(*)\*" "\Process(*)\*" "\Process V2(*)\*" "\Redirector\*" "\Server\*" "\System\*" "\Server Work Queues(*)\*" "\Terminal Services\*" -si 00:00:15

Чтобы запустить счетчик, выполните следующую команду в окне командной строки с повышенными привилегиями:

logman.exe start PerfLog-15Sec-Contoso

Эта команда создает в системе такой монитор, как "flight box recorder". Монитор регистрирует данные о производительности каждые 15 секунд (см -si 00:00:15 . интервал). При каждом запуске набора сборщиков влияние на систему должно быть меньше 1%, и оно не будет использовать более 800 мегабайт (МБ) места на локальном жестком диске. При перезапуске компьютера необходимо выполнить команду, чтобы снова запустить монитор.

Чтобы остановить счетчик, выполните следующую команду в окне командной строки с повышенными привилегиями:

logman.exe stop PerfLog-15Sec-Contoso

Набор сборщиков данных также следует принципу [Performance counter object]\<Instance>\<Counter Name>. Объект счетчика называется "Память", так как этот объект не имеет экземпляра. Причина в том, что в Windows есть одна память, но может быть несколько жестких дисков или ЦП.

Теперь у вас есть набор сборщика данных, который регистрирует данные каждые 15 секунд. 15 секунд выбирается из-за ограничения средства, используемого для анализа данных: Монитор производительности.

В графе может отображаться не более 1000 точек данных. Если сборщик данных настроен для записи данных каждые секунды, граф может отображать данные только в течение 16 минут и 40 секунд. Если в журнале есть больше данных, он начинает "суммировать и объединять" эти точки данных. Запись называется записью с высокой плотностью.

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

В этом примере просмотрите счетчик % времени простоя экземпляра, _Total для обработчика объектов счетчика. На основе минимального значения граф должен попасть на синюю линию (на 32%), но это не так. Так как число и график не соответствуют, необходимо проверить количество примеров в течение отображаемого периода (22 минут и 01 секунд). При наведении указателя мыши всплывающий элемент показывает, сколько примеров есть в этой точке данных. Как видно, есть 10 примеров, и поэтому средство вынуждено суммировать и объединять их, так как это был захват с одним секундным интервалом.

Снимок экрана: минимальное значение Монитор производительности.

Упрощение Windows

Теперь, когда у вас есть журнал счетчиков производительности, давайте попытаемся упростить Windows таким образом, чтобы помочь анализу. Для этого разбиите систему в логические компоненты: память, хранилище, ЦП и сеть.

Снимок экрана: системные логические компоненты.

Помимо сопоставления некоторых объектов монитора производительности с физическим ресурсом, важно помнить, что Windows разделена на две основные области: режим ядра и пользователя .

Ядро относится к операционной системе (ОС) и драйверам (это также включает драйвер антивирусной фильтрации). Ядро представлено в Windows логическим конструкцией под названием System Process, которая всегда имеет идентификатор 4процесса. По соображениям безопасности эта область строго защищена. Даже при использовании таких инструментов, как Монитор производительности, от него можно получить только небольшую информацию. Например, можно увидеть, сколько непагрегированных пулов используется, но нет сведений о том, кто использует его.

В пользовательском режиме выполняются все приложения (современные приложения, службы и исполняемые файлы). С помощью Монитор производительности вы можете получить сведения о каждом процессе.

Знакомство с 18 наиболее важными счетчиками

Чтобы упростить, в следующих разделах представлены 18 наиболее важных счетчиков и их пороговые значения, разбитые на физические ресурсы, с которыми они связаны.

Хранилище

Первичные счетчики Работоспособно Предупреждение Критически важно
\LogicalDisk(*)\Avg. Диск с/с/чтение < 15 мс > 25 мс > 50 мс
\LogicalDisk(*)\Avg. Диск с/запись < 15 мс > 25 мс > 50 мс
\PhysicalDisk(*)\Avg. Диск с/с/чтение < 15 мс > 25 мс > 50 мс
\PhysicalDisk(*)\Avg. Диск с/запись < 15 мс > 25 мс > 50 мс

Примечание.

Короткие пики можно терпеть. Следует исследовать более длительные периоды задержки (более одной минуты или дольше).

Эти счетчики представляют задержку. Задержка определяется объемом времени, затраченного на получение информации. С точки зрения производительности диска необходимо более подробно ознакомиться с настройкой. Для обычного жесткого диска вместо твердого жесткого диска (SSD) диск обычно имеет скорость вращения 5400 революций в минуту (RPM). Это означает, что диск превращает спиндл (где информация хранится в виде блоков) 5400 раз в минуту. Вы должны иметь возможность вычислить время, необходимое для чтения любого блока с диска:

Один блок / (RPM/ 60) = задержка для одного блока

Один блок / 5400 RPM / 60 = 0,01111 с = 11 мс

Таким образом, в теории диск должен иметь возможность считывать любой блок в пределах 11 мс. Если есть задержка ~100 ms, диск должен иметь возможность считывать блок по крайней мере восемь раз, поэтому почему есть задержка? Перегружен ли диск, и если да, кто использует его?

Чтобы определить, кто использует его, теперь можно проверить объект счетчика process .

Счетчики процессов , связанные с операциями диска:

  • \Process(*)\IO Read Operations/sec (время чтения диска для конкретного процесса)
  • \Process(*)\IO Write Operations/sec (время записи диска для конкретного процесса)

Эти счетчики можно использовать и попытаться сопоставить задержку или использование диска с использованием процесса.

Давайте перейдем к следующему физическому компоненту.

Память

Счетчики виртуальной памяти и физической памяти Работоспособно Предупреждение Критически важно
\Memory\Pool Paged Bytes Pool Nonpaged Bytes | 0–50% 60–80% 80–100%
\Memory\Available MBytes > 10 % или по крайней мере 4 гигабайта (ГБ) бесплатно < 10% < 1% или менее 500 МБ
\Memory\% Committed Bytes in use 0–50% 60–80% 80–100%

В этом разделе описываются следующие счетчики:

  • Байты страниц пула
  • Непагированные байты пула

Эти счетчики представляют ресурсы ядра, совместно используемые всей системой. Несмотря на то, что процессы могут претендовать на страницы и непагаченные пулы, это в основном делается драйверами; Поэтому данные не отображаются для Монитор производительности. Хотя страничный пул можно вывести на страницу в файл страницы, неупакованный пул не может. Помните, что эти ресурсы ядра зависят от размера памяти (объем памяти случайного доступа (ОЗУ)), который у вас есть в системе. Ограничение непагированного пула составляет 75 % ОЗУ, и они напрямую влияют на доступные MBytes. Доступные MBytes — это объем ОЗУ, доступный для всех программ, включая ядро.

Чтобы понять влияние процесса на использование ОЗУ, можно использовать следующий счетчик:

Счетчик процессов Комментарий
\Process(*)\Рабочий набор Попробуйте связаться с доступными MBytes , чтобы определить основного потребителя ОЗУ. Рабочий набор определяется как объем ОЗУ (а не файла страницы) процесса, который используется в любой момент времени.

Помните, что память\% зафиксированных байтов в использовании представляет виртуальную память, которую вы используете в Windows. Это сочетание файла страницы и ОЗУ, которые можно просмотреть на вкладке "Производительность" на вкладке "Производительность" после выбора памяти:

Снимок экрана: память, отображаемая в диспетчере задач.

Эта система имеет 128 ГБ ОЗУ и файл страницы размером 128 ГБ, поэтому память "Зафиксировано" составляет 256 ГБ. Вы также можете взглянуть на пул страниц и память нестраничного пула.

При изучении проблем с памятью помните, что обе области (ядро и пользователь) фактически используют один и тот же физический ресурс. Таким образом, если компьютер имеет низкую память, попробуйте выяснить, кто использует его.

Давайте перейдем к следующему физическому ресурсу.

ЦП

При устранении неполадок с производительностью ЦП необходимо снова разделить ОС на ядро и режим пользователя . Однако разделение проще понять. Режим пользователя представлен любым приложением или службой, включая приложения, выполняемые в пользовательском режиме, который потребляет циклы ЦП и не включает оборудование, отличное от ЦП. Если вам нужно получить доступ к оборудованию, это приводит к режиму ядра, так как средство должно взаимодействовать с драйверами для доступа к GPU, хранилищу или сети.

Далее приводятся некоторые примеры.

  • SQL Server выполняет вычисление = режим пользователя
  • SQL Server для записи файлов журналов на диск = режим ядра
  • Доступ к сетевым ресурсам файлового сервера = режим ядра

Затем рассмотрим основные счетчики:

Первичные счетчики Работоспособно Предупреждение Критически важно
\Processor Information(*)\% User Time (user mode) < 50% 50–80% > 80%
\Processor Information(*)\% Privileged Time (режим ядра) < 30% 30–50% > 50%
\Processor Information(*)\% время простоя >20% >10% <10%

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

Каждый раз при использовании ЦП ЦП использует % времени пользователя (режим пользователя) или % привилегированного времени (режим ядра). Если возникает высокая ситуация ЦП (= низкое время простоя), необходимо выяснить, кто использует его, глядя на следующие вторичные счетчики:

Вторичные счетчики Комментарий
\Process(*)\% пользовательского времени Помните, что у вас может быть несколько активных процессов.
*\Process()\% Privileged Time** Помните, что в системном процессе есть только ограниченная информация. Системный процесс обычно является главным драйвером для % привилегированного времени , так как процесс размещает диски внутри этой логической конструкции. Тем не менее, это не ограничивается этим.

100 % Process\% User Time = один ЦП. Если у вас 16 ЦП, максимальное использование процесса может достигать 1600 %. Экран должен выглядеть так:

Снимок экрана: граф монитора процессов для четырех ЦП.

В этом примере вы использовали средство для имитации использования ЦП (% времени пользователя). Средство ограничено только на четырех ЦП (ЦП 12, 13, 14 и 15). После того как четыре потока активны, становится ясно, как все ЦП достигают 100 % в то время как само приложение (ЦП стресс) достигает 400 %. В этом примере демонстрируется связь между загрузкой ЦП нагрузки ЦП и нагрузкой ЦП на ЦП, к которым приложение было ограничено. Создание такого рода отношений помогает полностью понять базовые процессы.

Это приводит нас к последнему физическому объекту.

Network

Так как Монитор производительности является локальным инструментом, вы можете получить только основные сведения из сети. Тем не менее, следующие счетчики по-прежнему полезны:

Первичные счетчики Работоспособно Предупреждение Критически важно
\Network Interface(*)\Bytes Total/sec < 50% 50–80% > 80%
\Network Interface(*)\Bytes Sent/sec * * *
\Network Interface(*)\Bytes Received/sec * * *

Примечание.

Дополнительные сведения о ячейках, помеченных звездочкой (*): рабочая нагрузка \Network Interface(*)\Bytes Sent/sec и \Network Interface(*)\Bytes Received/sec должна зависеть от роли сервера. Например, число байтов, отправленных в секунду, обычно выше, чем количество байтов, полученных в секунду на сервере потоковой передачи. В отличие от этого, число полученных байтов в секунду обычно выше, чем байты, отправляемые в секунду на резервном сервере резервного копирования.

Значения связаны со скоростью сетевой карты, и необходимо выполнить вычисление. При этом помните, что скорость сети измеряется в битах и 8 битов = 1 байт. Таким образом, если у вас есть сетевая карта размером 1 ГБ, пропускная способность может достигать 125 МБ/с.

Хотя счетчик "Всего байтов в секунду" помогает понять общее использование сетевой карты, другие два счетчика помогут вам узнать, получает ли вы или отправляете больше данных. Если у вас есть эти сведения, вы можете сравнить его с ожидаемым поведением. Если вы хотите исследовать сеть, требуется другой набор инструментов, так как требуется сквозные трассировки с обеих сторон, чтобы полностью понять поведение сети.

Заключение

В этом руководстве описывается разбивка и физические компоненты системы Windows. При возникновении узких мест на уровне любых физических компонентов, у вашей системы возникают проблемы. Это также влияет на приложение.

Мы надеемся, что это руководство по сценарию поможет вам получить базовое представление о Монитор производительности и о том, как подготовить систему к захвату "черного ящика", как рекордер полетов. Если вам нужна дополнительная помощь по анализу данных, обратитесь к нам, открыв запрос в службу поддержки.