- Руководство по обеспечению высокой производительности Windows Server 2016 Performance Tuning Guidelines for Windows Server 2016
- В данном руководстве In this guide
- Мониторинг производительности Windows Server, настройка оповещений счетчиков PerfMon
- Мониторинг производительности процессора с Perfomance Monitor
- Группы сборщиков данных в PerfMon
- Создание Alert для мониторинга загрузки CPU
- Низкая производительность Windows Server при использовании сбалансированного плана питания
- Симптомы
- Причина
- Решение
- Дополнительные сведения
Руководство по обеспечению высокой производительности Windows Server 2016 Performance Tuning Guidelines for Windows Server 2016
Если в организации выполняется серверная система, параметры сервера по умолчанию могут не соответствовать потребностям бизнеса. When you run a server system in your organization, you might have business needs not met using default server settings. Например, может потребоваться наименьшее потребление электроэнергии, минимальная задержка или максимальная пропускная способность сервера. For example, you might need the lowest possible energy consumption, or the lowest possible latency, or the maximum possible throughput on your server. Это руководство содержит ряд рекомендаций, которые можно использовать для настройки параметров сервера в Windows Server 2016 и повышения производительности или экономии электроэнергии, особенно учитывая изменение характера рабочих нагрузки со временем. This guide provides a set of guidelines that you can use to tune the server settings in Windows Server 2016 and obtain incremental performance or energy efficiency gains, especially when the nature of the workload varies little over time.
Очень важно, чтобы при настройке учитывалось оборудование, рабочая нагрузка, бюджет питания и целевые показатели производительности сервера. It is important that your tuning changes consider the hardware, the workload, the power budgets, and the performance goals of your server. В этом руководстве описывается каждый параметр и его возможное влияние. Это поможет вам принять обоснованное решение о его влиянии на систему, рабочую нагрузку, производительность и целевые показатели энергопотребления. This guide describes each setting and its potential effect to help you make an informed decision about its relevance to your system, workload, performance, and energy usage goals.
Параметры реестра и параметры настройки в разных версиях Windows Server существенно различаются. Registry settings and tuning parameters changed significantly between versions of Windows Server. Обязательно применяйте последние рекомендации по настройке, чтобы избежать непредвиденных результатов. Be sure to use the latest tuning guidelines to avoid unexpected results.
В данном руководстве In this guide
В этом руководстве рекомендации по обеспечению высокой производительности Windows Server 2016 разделены на три категории: This guide organizes performance and tuning guidance for Windows Server 2016 across three tuning categories:
Мониторинг производительности Windows Server, настройка оповещений счетчиков PerfMon
В этой статье мы рассмотрим особенности использования встроенных счетчиков производительности Performance Monitor для мониторинга состояния Windows Server. Счетчики PerfMon можно использовать для отслеживания изменений определенных параметров производительности сервера (алертов) и оповещать администратора в случае возникновения высокой загрузки или других нештатных состояниях.
Чаще всего для мониторинга работоспособности, доступности, загруженности серверов используются сторонние продукты. Если вам нужно получать информацию о производительности приложений либо железа только с одного-двух Windows-серверов, либо когда это нужно на непостоянной основе, либо возник более сложный случай, требующий глубокого траблшутинга производительности, то можно воспользоваться встроенным функционалом Windows Performance Monitor.
Основные возможности Performance Monitor, которые можно использовать отдельно или совместно с другими сторонними системами мониторинга (типа Zabbix, Nagios, Cacti и другие):
- cистема мониторинга при выводе информации о производительности сначала обращается к Performance Monitor;
- главной задачей системы мониторинга является оповещение о наступлении тревожного момента, аварии, а у Performance Monitor – собрать и предоставить диагностические данные.
Текущие значения производительности Windows можно получить из Task Manager, но Performance Monitor умеет несколько больше:
- Task Manager работает только в реальном времени и только на конкретном (локальном) хосте;
- в Performance Monitor можно подключать счётчики с разных серверов, вести наблюдение длительное время и собранную информацию сохранять в файл;
- в Task Manager очень мало показателей производительности.
Мониторинг производительности процессора с Perfomance Monitor
Для снятия данных о производительности процессора воспользуемся несколькими основными счётчиками:
- \Processor\% Processor Time— определяет уровень загрузки ЦП, и отслеживает время, которое ЦП затрачивает на работу процесса. Уровень загрузки ЦП в диапазоне в пределах 80-90 % может указывать на необходимость добавления процессорной мощности.
- \Processor\%Privileged Time — соответствует проценту процессорного времени, затраченного на выполнение команд ядра операционной системы Windows, таких как обработка запросов ввода-вывода SQL Server. Если значение этого счетчика постоянно высокое, и счетчики для объекта Физический диск также имеют высокие значения, то необходимо рассмотреть вопрос об установке более быстрой и более эффективной дисковой подсистемы (см. более подробную статью об анализе производительности дисков с помощью PerfMon).
- \Processor\%User Time — соответствует проценту времени работы CPU, которое он затрачивает на выполнение пользовательских приложений.
Запустите Performance Monitor с помощью команды perfmon. В разделе Performance Monitor отображается загрузкой CPU в реальном времени с помощью графика (параметр Line), с помощью цифр (параметр Report), с помощью столбчатой гистограммы (параметр Histogram bar) (вид выбирается в панели инструментов). Чтобы добавить счетчики, нажмите кнопку “+” (Add Counters).
Слева направо двигается линия в реальном времени и отображает график загрузки процессора, на котором можно увидеть, как всплески, так и постоянную нагрузку.
Например, вам нужно посмотреть загрузку процессора виртуальными машинами и самим Hyper-V. Выберите группу счетчиков Hyper-V Hypervisor Logical Processor, выберите счетчик % Total Run Time. Вы можете показывать нагрузку по всем ядрам CPU (Total), либо по конкретным (HV LP №), либо всё сразу (All Instances). Выберем Total и All Instances.
Группы сборщиков данных в PerfMon
Чтобы не сидеть целый за наблюдением движения линии, создаются группы сбор данных (Data Collector Set), задаются для них параметры и периодически просматриваются.
Чтобы создать группу сбора данных, нужно нажать на разделе User Defined правой кнопкой мыши, в меню выбрать New -> Data Collector Set. Выберите Create manually (Advanced) -> Create Data Logs и включите опцию Performance Counter. Нажмите Add и добавите счётчики. В нашем примере % Total Run Time из группы Hyper-V Hypervisor Logical Processor и Available MBytes из Memory. Установите интервал опроса счётчиков в 3 секунды.
Далее вручную запустите созданный Data Collector Set, нажав на нём правой кнопкой мыши и выбрав в меню пункт Start.
Через некоторое время можно просмотреть отчёт. Для этого в контекстном меню группы сбора данных нужно выбрать пункт Latest Report. Вы можете посмотреть и проанализировать отчёт производительности в виде графика. Отчёт можно скопировать и переслать. Он хранится в C:\PerfLogs\Admin\CPU_Mon и имеет расширение .blg.
Если нужно на другом сервере запустить такой же набор счётчиков, как на первом, то их можно переносить экспортом. Для этого в контекстном меню группы сбора данных выберите пункт Save Template, укажите имя файла (расширение .xml). Скопируйте xml файл на другой сервер, создайте новую группу сбора данных, выберите пункт Create from a template и укажите готовый шаблон.
Создание Alert для мониторинга загрузки CPU
В определённый критический момент в Performance Monitor могут срабатывать алерты, которые помогают ИТ-специалисту прояснить суть проблемы. В первом случае алерт может отправить оповещение, а во втором – запустить другую группу сбора данных.
Чтобы создать алерт в PerfMon, нужно создать ещё один Data Collector Set. Укажите его имя CPU_Alert, выберите опцию Create manually (Advanced), а затем — Performance Counter Alert. Добавьте счётчик % Total Run Time из Hyper-V Hypervisor Logical Processor, укажите границу загрузки 50 %, при превышении которой будет срабатывать алерт, установите интервал опроса счётчика в 3 секунды.
Далее нужно зайти в свойства данной группы сбора информации, перейти на вкладку Alert Action, включить опцию Log an entry in the application event log и запустить группу сбора данных. Когда сработает алерт, в журнале (в консоли Event Viewer в разделе Applications and Services Logs\Microsoft\Windows\Diagnosis-PLA\Operational) появится запись:
“Performance counter \Processor(_Total)\% Processor Time has tripped its alert threshold. The counter value of 100.000000 is over the limit value of 50.000000. 50.000000 is the alert threshold value”.
Здесь же рассмотрим и второй случай, когда нужно запустить другую группу сбора данных. Например, алерт срабатывает при достижении высокой загрузки CPU, делает запись в лог, но вы хотите включить сбор данных с других счётчиков для получения дополнительной информации. Для этого необходимо в свойствах алерта в меню Alert Action в выпадающем списке Start a data collector set выбрать ранее созданную группу сбора, например, CPU_Mon. Рядом находится вкладка Alert Task, в которой можно указать разные аргументы либо подключить готовую задачу из консоли Task Scheduler, указав её имя в поле Run this task when an alert is triggered. Будем использовать второй вариант.
С помощью Task Scheduler можно выполнить какие-то действия: выполнить команду, отправить письмо или вывести сообщение на экран (сейчас последниед ве функции не поддерживаются, считаются устаревшими (deprecated)). Для вывода на уведомления на экран можно использовать скриптом PowerShell. Для этого в консоли Task Scheduler создайте новую задачу, на вкладке Triggers выберите One time, на вкладке Actions в выпадающем поле Action выбирите параметр Start a program, в поле Program/Script укажите powershell.exe, а в поле Add arguments (optional) следующий код:
-WindowStyle hidden -Command «& <[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Внимание, CPU загружен', 'Посмотреть')>«
Для отправки письма вы можете воспользоваться командлетом PowerShell Send-MailMessage или стороннюю утилиту mailsend.exe.. Для этого создайте аналогичное задание в Task Scheduler, в поле Program/Script укажите полный путь к утилите (у нас C:\Scripts\Mail\mailsend.exe), а в поле Add arguments (optional) через параметры нужно передать значения: электронный адрес, адрес и номер порта SMTP-сервера, текст письма и заголовка, пароль:
-to dep.it@ddd.com -from dep.it@ddd.com -ssl -port 465 -auth -smtp smtp.ddd.com -sub Alarm -v -user dep.it@ddd.com +cc +bc -M «Alarm, CPU, Alarm» -pass «it12345»
где +cc означает не запрашивать копию письма, +bc — не запрашивать скрытую копию письма.
Низкая производительность Windows Server при использовании сбалансированного плана питания
В этой статье приводится решение проблемы, из-за которой низкая производительность Windows Server при использовании сбалансированного плана питания.
Исходная версия продукта: Windows Server 2008 R2 Пакет обновления 1
Исходный номер КБ: 2207548
Симптомы
В некоторых случаях может ухудшиться общая производительность на компьютере Windows Server 2008 R2 или более поздней машине при работе с планом питания по умолчанию (сбалансированный). Проблема может возникать независимо от платформы и может возникать как в нативных, так и в виртуальных средах. Ухудшенная производительность может увеличить среднее время отклика для некоторых задач и вызвать проблемы с производительностью приложений с интенсивным ЦП.
При выполнении простых операций могут не заметить проблем с производительностью. Однако проблемы могут возникнуть в приложениях или сценариях, которые интенсивно используют ресурсы (в основном процессор и память). Дополнительные сведения см. в разделе дополнительных сведений.
Причина
Эта проблема может возникнуть, если для параметров Power Options заданы параметры «Сбалансированная». По умолчанию Windows Server 2008 R2 или более поздней, устанавливает сбалансированный (рекомендуемый) план питания, который обеспечивает энергосбережение за счет масштабирования производительности процессора в зависимости от текущего использования ЦП.
Решение
Вариант 1. Рекомендуется
This issue is tied to interaction between the processors and the operating system not adjusting P-States and turning off Core Parking as needed. Для решения этой проблемы требуются обновления оборудования и операционной системы.
- Обновите BIOS системы до текущей версии. Справочные рекомендации для изготовителя оборудования.
- Примените соответствующее решение для операционной системы:
- Для Windows Server 2008 R2 и Windows Server 2008 R2 Пакет обновления 1
- Для Windows Server 2008, ссылка на вариант 2.
- Применение соответствующих обновлений ЦП для AMD FX, AMD Opteron 4200/4300, AMD Opteron 6200/6300 и AMD Opteron Bulldozer
Чтобы обойти проблему с снижением производительности, можно переключиться на план высокой производительности питания. Однако это отключит динамическое масштабирование производительности на платформе. В зависимости от среды, если платформа всегда находится под сильной нагрузкой, это можно сделать. Однако в большинстве случаев рабочая нагрузка зависит от дня, поэтому рекомендуется оставить план питания сбалансированным и оценить соответствующие параметры в плане сбалансированной мощности для управления питанием процессора.
Современные процессоры обеспечивают масштабирование производительности и мощности на основе текущих действий в системе. Различные состояния производительности динамически управляются Windows в сочетании с оборудованием и программным обеспечением платформы в ответ на различные требования к рабочей нагрузке. 3 стандартных плана питания, которые предоставляет Windows, обеспечивают различные компромиссы производительности и энергопотребления. Например, если выбран план высокой производительности питания, Windows помещает систему в состояние наивысшей производительности и отключает динамическое масштабирование производительности в ответ на различные уровни рабочей нагрузки. Поэтому перед установкой плана питания на высокий уровень производительности следует особое внимание, так как это может привести к излишнему увеличению энергопотребления при неиспотребления системы.
Если принято решение изменить план энергопотребления по умолчанию, Windows Server 2008 R2 или более поздней 2013 г. предоставляет три плана питания для повышения производительности и экономии энергии: сбалансированная (рекомендуется), высокая производительность и режим энергосбереки.
Чтобы изменить план питания, спланируйте:
- Выберите «Начните», а затем панель управления.
- В списке отображаемого элемента на панели управления выберите«Параметры питания», чтобы выбрать страницу «План питания». Если вы не видите параметры питания, введите слово питания в поле панели управления поиском и выберите «Выбрать план питания».
- По умолчанию возможность изменения планов питания отключена. Чтобы включить его, выберите параметры изменения, которые в настоящее время недоступны по ссылке.
- Выберите параметр «Высокая производительность».
- Закроем окно «Параметр питания».
Дополнительные сведения
Процессоры быстро меняются между состояниями производительности («P-states»), чтобы соответствовать требованиям, что обеспечивает производительность там, где это необходимо, и по возможности экономит мощность. Если на сервере предъявляются особые требования к высокой производительности или минимальному энергопотреблю, можно настроить параметр «Минимальное или максимальное состояние производительности процессора». Значения параметров «Минимальная» и «Максимальная производительность процессора» выражаются в процентах от максимальной частоты процессора в диапазоне от 0 до 100. Если серверу требуется низкая задержка, а также невариантная частота или высокая производительность, может не потребоваться переключение процессоров в состояния низкой производительности.