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


Проблема с высокой загрузкой ЦП на сервере SMB

В этой статье описывается, как устранить проблему с высокой загрузкой ЦП на сервере SMB.

Высокая загрузка ЦП из-за проблем с производительностью хранилища

Проблемы с производительностью хранилища могут привести к высокой загрузке ЦП на серверах SMB. Перед устранением неполадок убедитесь, что на сервере SMB установлен последний накопительный пакет обновлений, чтобы устранить все известные проблемы в srv2.sys.

В большинстве случаев вы заметите проблему с высокой загрузкой ЦП в системном процессе. Прежде чем продолжить, используйте Обозреватель обработки, чтобы убедиться, что srv2.sysили ntfs.sys потребляет чрезмерные ресурсы ЦП.

Сценарий сети хранения данных (SAN)

На агрегированных уровнях общая производительность СЕТИ может показаться нормальной. Однако при работе с проблемами SMB больше всего важно время ответа на отдельный запрос.

Как правило, эта проблема может быть вызвана тем или иным способом постановки команд в очередь в san. С помощью Perfmon можно записать трассировку Microsoft-Windows-StorPort и проанализировать ее, чтобы точно определить скорость отклика хранилища.

Задержка операций ввода-вывода на диске

Задержка дискового ввода-вывода — это мера задержки между созданием и выполнением запроса на ввод на диск.

Задержка ввода-вывода, измеряемая в Perfmon, включает все время, затраченное на аппаратных уровнях, а также время, затраченное в очереди драйвера портов Майкрософт (Storport.sys для SCSI). Если выполняемые процессы создают большую очередь StorPort, измеренная задержка увеличивается. Это связано с тем, что операции ввода-вывода должны ожидать отправки на аппаратные уровни.

В Perfmon следующие счетчики показывают задержку физического диска:

  • "Физический объект производительности диска" —> "Среднее значение счетчика дискового диска/чтения" — отображается средняя задержка чтения.
  • "Объект производительности физического диска" —> "Среднее значение счетчика дискового диска/записи" — отображается средняя задержка записи.
  • "Физический объект производительности диска" —> "Среднее значение счетчика дискового диска/передачи" — здесь показаны объединенные средние значения для операций чтения и записи.

Экземпляр "_Total" — это среднее значение задержки для всех физических дисков на компьютере. Каждый из других экземпляров представляет отдельный физический диск.

Примечание.

Не путайте эти счетчики с средой передачи дисков/с. Это совершенно разные счетчики.

Стек хранилища Windows

В этом разделе приводится краткое описание стека хранилища Windows.

Когда приложение создает запрос ввода-вывода, оно отправляет его в подсистему ввода-вывода Windows в верхней части стека. Затем операции ввода-вывода перемещаются вниз по стеку до аппаратной подсистемы "Диск". Затем ответ проходит весь путь обратно. Во время этого процесса каждый слой выполняет свою функцию, а затем передает операции ввода-вывода следующему слою.

Схема, показывающая поток стека хранилища.

Perfmon не создает данные о производительности в секунду. Вместо этого он использует данные, предоставляемые другими подсистемами Windows.

Для "объекта производительности физического диска" данные собираются на уровне диспетчера секций в стеке хранилища.

При измерении счетчиков, упомянутых в предыдущем разделе, мы измеряем все время, затраченное запросом ниже уровня "Диспетчер секций". Когда запрос ввода-вывода отправляется диспетчером секций в стек, мы отметим время. Когда он возвращается, мы снова помечем его и вычисляем разницу во времени. Разница во времени — это задержка.

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

  • Драйвер класса — управляет типом устройства, например дисками, лентами и т. д.
  • Драйвер порта. Он управляет транспортным протоколом, например SCSI, FC, SATA и т. д.
  • Драйвер минипорта устройства — это драйвер устройства для адаптера хранилища. Он поставляется производителем устройств, таких как контроллер raid и контроллер безопасности FC.
  • Подсистема диска— включает в себя все, что находится под драйвером минипорта устройства. Это может быть так же просто, как кабель, подключенный к одному физическому жесткому диску, или таким же сложным, как сеть хранения. Если проблема вызвана этим компонентом, обратитесь к поставщику оборудования для получения дополнительных сведений об устранении неполадок.

Постановка в очередь дисков

Существует ограниченный объем операций ввода-вывода, который подсистема диска может принимать в данный момент времени. Избыточное число операций ввода-вывода помещается в очередь до тех пор, пока диск не сможет снова принять операции ввода-вывода. Время, затраченное операцией ввода-вывода в очередях ниже уровня "Диспетчер секций", учитывается в измерениях задержки физического диска Perfmon. По мере того как очереди увеличиваются и операции ввода-вывода должны ждать дольше, измеренная задержка также увеличивается.

Существует несколько очередей ниже уровня "Диспетчер секций", как показано ниже.

  • Очередь драйвера портов (Майкрософт) — очередь SCSIport или Storport
  • Очередь драйверов устройств, предоставленная производителем, — драйвер oem-устройства
  • Очереди оборудования, такие как очередь контроллера диска, очередь коммутаторов SAN, очередь контроллера массива и очередь жесткого диска

Мы также учитываем время, затраченное жестким диском на активное обслуживание операций ввода-вывода, и время в пути, затраченное на возвращение запроса на уровень "Диспетчер секций", которое помечается как завершенное.

Наконец, мы должны обратить особое внимание на очередь драйверов портов (для SCSI Storport.sys). Драйвер порта является последним компонентом Майкрософт, который касается ввода-вывода, прежде чем мы отдадим его производителю драйверу минипорта устройства.

Если драйвер минипорта устройства не может принимать больше операций ввода-вывода, так как его очередь или очереди оборудования под ним перегружены, мы начнем накапливать операции ввода-вывода в очереди драйверов портов. Размер очереди драйвера портов Майкрософт ограничен только доступной системной памятью (ОЗУ), и она может увеличиться. Это приводит к большой измеряемой задержке.

Высокий уровень ЦП, вызванный перечислением папок

Чтобы устранить эту проблему, отключите функцию перечисления на основе доступа (ABE).

Чтобы определить, в каких общих папках SMB включен ABE, выполните следующий командлет PowerShell:

Get-SmbShare | Select Name, FolderEnumerationMode

Unrestricted = ABE отключен.
AccessBase = ABE включен.

Вы можете включить ABE в диспетчер сервера. Перейдите в разделОбщие папки служб хранилища и файловых служб>, щелкните правой кнопкой мыши общую папку, выберите Свойства, перейдите в раздел Параметры, а затем выберите Включить перечисление на основе доступа.

Снимок экрана: параметр Включить перечисление на основе доступа в разделе Параметры диспетчер сервера.

Кроме того, вы можете уменьшить уровень ABELevel до более низкого уровня (1 или 2), чтобы повысить производительность.

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