Agrupación de hosts de servicio en Windows 10

El host de servicio (svchost.exe) es un proceso de servicio compartido que actúa como shell para cargar servicios desde archivos DLL. Los servicios se organizan en grupos host relacionados y cada grupo se ejecuta dentro de una instancia diferente del proceso de host de servicio. De este modo, un problema en una instancia no afecta a otras instancias. Los grupos host de servicio se determinan mediante la combinación de los servicios con los requisitos de seguridad coincidentes. Por ejemplo:

  • Servicio local
  • Servicio local sin red
  • Red de servicio local restringida
  • Sistema local
  • Red del sistema local restringida
  • Servicio de red

Separación de servicios SvcHost

A partir de Windows 10 Creators Update (versión 1703), los servicios que se agruparon anteriormente se separarán en su lugar: cada uno se ejecutará en su propio proceso SvcHost. Este cambio es automático para sistemas con más de 3,5 GB de RAM que ejecutan la SKU de Escritorio cliente. En sistemas con 3,5 GB o menos de RAM, seguiremos agrupando servicios en un proceso svchost compartido.

Entre las ventajas de este cambio de diseño se incluyen:

  • Mayor confiabilidad al aislar los servicios de red críticos del error de otro servicio que no es de red en el host y agregar la capacidad de restaurar la conectividad de red sin problemas cuando los componentes de red se bloquean.
  • Se han reducido los costos de soporte técnico al eliminar la sobrecarga de solución de problemas asociada con el aislamiento de servicios de comportamiento erróneo en el host compartido.
  • Mayor seguridad al proporcionar más aislamiento entre servicios
  • Mayor escalabilidad al permitir la configuración y los privilegios por servicio
  • Se ha mejorado la administración de recursos a través de la CPU por servicio, la E/S y la administración de memoria, y se aumentan los datos de diagnóstico claros (CPU, E/S y uso de red por servicio).

Pruebe esto.

Para ver el comportamiento de refactorización, cree una máquina virtual de Windows 10 versión 1703 y configure los valores de memoria de la siguiente manera:

  1. Para ver los procesos agrupados, establezca la RAM en 3484 MB o menos. Reinicie la máquina virtual y, a continuación, abra el Administrador de tareas.
  2. Para ver los procesos separados, establezca la RAM en 3486 MB o superior. Reinicie la máquina virtual y, a continuación, abra el Administrador de tareas.

La refactorización también facilita la visualización de los procesos en ejecución en el Administrador de tareas. Puede ver el Administrador de tareas y saber exactamente qué servicio usa qué recursos, sin tener que expandir muchos grupos host independientes.

Por ejemplo, estos son los procesos en ejecución que se muestran en el Administrador de tareas en Windows 10 versión 1607:

Ejecución de procesos en el Administrador de tareas, versión 1607.

Compárelo con la misma vista de procesos en ejecución en Windows 10 versión 1703:

Ejecución de procesos en el Administrador de tareas, versión 1703.

Excepciones

Algunos servicios se seguirán agrupando en equipos que se ejecutan con 3,5 GB de RAM o superior. Por ejemplo, el Motor de filtrado base (BFE) y el Firewall de Windows (Mpssvc) se agruparán en un único grupo host, al igual que los servicios de asignación de puntos de conexión RPC y llamada a procedimiento remoto.

Si necesita identificar los servicios que se seguirán agrupando, además de verlos en el Administrador de tareas y mediante herramientas de línea de comandos, puede buscar el valor SvcHostSplitDisable en sus respectivas claves de servicio en HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services.

El valor predeterminado de 1 impide que el servicio se divida.

Por ejemplo, la configuración de la clave del Registro para BFE es: ejemplo de un servicio que no se puede separar.

Superficie de memoria

La separación de servicios aumenta el número total de instancias de SvcHost, lo que aumenta el uso de memoria. (La agrupación de servicios proporcionó una reducción modesta de la superficie de recursos general de los servicios implicados).

Tenga en cuenta el ejemplo siguiente:

Servicios agrupados (< 3,5 GB) Servicios divididos (3,5 GB+)
Uso de memoria para servicios agrupados. Uso de memoria para servicios separados

Nota

El valor anterior representa los valores máximos observados.

El número total de instancias de servicio y el uso de memoria resultante varía en función de la actividad. Los recuentos de instancias pueden oscilar normalmente entre 17 y 21 aproximadamente para los servicios agrupados y entre 67 y 74 para los servicios separados.

Pruebe esto.

Para determinar el impacto de dividir los servicios hospedados en un equipo Windows 10 versión 1703, ejecute el siguiente cmdlet de Windows PowerShell antes y después de alternar la configuración de memoria:

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