Группирование узлов службы в Windows 10

Узел службы (svchost.exe) — это процесс общей службы, который служит оболочкой для загрузки служб из DLL-файлов. Службы организованы по связанным группам узлов, и каждая из них выполняется в разных экземплярах процесса узла службы. Таким образом, проблема в одном экземпляре не влияет на другие экземпляры. Группы узлов служб определяются путем объединения служб с соответствующими требованиями к безопасности. Пример:

  • Локальная служба
  • Локальная служба без сети
  • Локальная сеть служб ограничена
  • Локальная система
  • Локальная сеть ограничена
  • Сетевая служба

Разделение служб SvcHost

Начиная с Windows 10 Creators Update (версия 1703), службы, которые были сгруппированы ранее, будут разделены— каждый из них будет выполняться в своем собственном процессе SvcHost. Это изменение выполняется автоматически для систем с более чем 3,5 ГБ ОЗУ под управлением номера SKU клиентского рабочего стола. В системах с 3,5 ГБ или менее ОЗУ мы продолжим группировать службы в общий процесс SvcHost.

Это изменение структуры имеет следующие преимущества:

  • Повышение надежности за счет изоляции критически важных сетевых служб от сбоя другой несети на узле и добавления возможности восстановления сетевых подключений при сбое сетевых компонентов.
  • Снижение затрат на поддержку за счет устранения неполадок, связанных с изоляцией служб с неправильным поведением на общем узле.
  • Повышение безопасности за счет большей изоляции между службами
  • Повышение масштабируемости за счет предоставления параметров и привилегий для каждой службы
  • Улучшено управление ресурсами за счет ЦП для каждой службы, операций ввода-вывода и управления памятью, а также увеличение четкого объема диагностических данных (отчеты о ЦП, использовании операций ввода-вывода и сети для каждой службы).

Попробуйте это

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

  1. Чтобы просмотреть сгруппированные процессы, задайте для ОЗУ значение 3484 МБ или меньше. Перезапустите виртуальную машину, а затем откройте диспетчер задач.
  2. Чтобы увидеть разделенные процессы, задайте для ОЗУ значение 3486 МБ или больше. Перезапустите виртуальную машину, а затем откройте диспетчер задач.

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

Например, ниже приведены выполняемые процессы, отображаемые в диспетчере задач в Windows 10 версии 1607:

Выполнение процессов в диспетчере задач версии 1607.

Сравните это с тем же представлением запущенных процессов в Windows 10 версии 1703:

Выполнение процессов в диспетчере задач версии 1703.

Исключения

Некоторые службы будут по-прежнему группироваться на компьютерах с объемом ОЗУ 3,5 ГБ или более. Например, базовая подсистема фильтрации (BFE) и брандмауэр Windows (Mpssvc) будут сгруппированы в одну группу узлов, как и службы сопоставления конечных точек RPC и удаленных вызовов процедур.

Если вам нужно определить службы, которые будут по-прежнему группироваться, помимо просмотра их в диспетчере задач и использования средств командной строки, вы можете найти значение SvcHostSplitDisable в соответствующих ключах служб в разделе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services.

Значение по умолчанию 1 предотвращает разделение службы.

Например, конфигурация раздела реестра для BFE: Пример службы, которую нельзя разделить.

Объем памяти

Разделение служб увеличивает общее число экземпляров SvcHost, что увеличивает использование памяти. (Группирование служб обеспечило незначительное сокращение общего объема ресурсов для задействованных служб.)

Рассмотрим следующий пример:

Сгруппированные службы (< 3,5 ГБ) Разделенные службы (3,5 ГБ+)
Использование памяти для сгруппированных служб. Использование памяти для разделенных служб

Примечание.

Выше представлены пиковые наблюдаемые значения.

Общее количество экземпляров службы и результирующее использование памяти зависит от действия. Число экземпляров обычно может варьироваться от 17 до 21 для сгруппированных служб и 67–74 для разделенных служб.

Попробуйте это

Чтобы определить влияние разделения размещенных служб на компьютере с Windows 10 версии 1703, выполните следующий командлет Windows PowerShell до и после переключения параметров памяти:

Get-Process SvcHost | Group-Object -Property ProcessName | Format-Table Name, Count, @{n='Mem (KB)';e={'{0:N0}' -f (($_.Group|Measure-Object WorkingSet -Sum).Sum / 1KB)};a='right'} -AutoSize