Modifications apportées au regroupement d’hôtes de service dans Windows10

S’applique à : Windows 10

L’hôte de service (svchost.exe) est un processus de service partagé qui sert d’interpréteur de commandes pour charger des services à partir de fichiers DLL. Les services sont organisés en groupes hôtes associés, et chaque groupe s’exécute à l’intérieur d’une instance différente du processus Hôte de service. De cette façon, un problème dans une instance n’affecte pas d’autres instances. Les groupes d’hôtes de service sont déterminés en combinant les services avec les exigences de sécurité correspondantes. Exemple :

  • Local Service
  • Service local sans réseau
  • Réseau de services locaux restreint
  • Système local
  • Réseau de système local restreint
  • Service réseau

Séparation des services SvcHost

À compter de Windows 10 Creators Update (version 1703), les services précédemment regroupés seront séparés, chacun s’exécutant dans son propre processus SvcHost. Cette modification est automatique pour les systèmes avec plus de 3,5 Go de RAM exécutant la référence SKU Client Desktop. Sur les systèmes avec 3,5 Go ou moins de RAM, nous allons continuer à regrouper les services dans un processus SvcHost partagé.

Les avantages de ce changement de conception sont les suivants :

  • Fiabilité accrue en isolant les services réseau critiques de la défaillance d’un autre service non réseau sur l’hôte et en ajoutant la possibilité de restaurer la connectivité réseau en toute transparence lorsque les composants réseau se bloquent.
  • Réduction des coûts de support en éliminant la surcharge de dépannage associée à l’isolation des services de mauvaise conduite dans l’hôte partagé.
  • Sécurité accrue en offrant une isolation plus grande entre les services
  • Augmentation de l’extensibilité en autorisant les paramètres et privilèges par service
  • Amélioration de la gestion des ressources par le biais de l’UC, des E/S et de la mémoire par service, et augmentation des données de diagnostic claires (signalez l’UC, les E/S et l’utilisation du réseau par service).

Essayez ceci

Pour voir le comportement de refactorisation, créez une machine virtuelle Windows 10 version 1703 et configurez les paramètres de mémoire comme suit :

  1. Pour afficher les processus groupés, définissez la RAM sur 3 484 Mo ou moins. Redémarrez la machine virtuelle, puis ouvrez le Gestionnaire de tâches.
  2. Pour afficher les processus séparés, définissez la RAM sur 3 486 Mo ou plus. Redémarrez la machine virtuelle, puis ouvrez le Gestionnaire de tâches.

La refactorisation facilite également l’affichage des processus en cours d’exécution dans le Gestionnaire des tâches. Vous pouvez examiner le Gestionnaire des tâches et savoir exactement quel service utilise les ressources, sans avoir à développer de nombreux groupes hôtes distincts.

Par exemple, voici les processus en cours d’exécution affichés dans le Gestionnaire des tâches dans Windows 10 version 1607 :

Exécution de processus dans le Gestionnaire des tâches, version 1607.

Comparez cela à la même vue des processus en cours d’exécution dans Windows 10 version 1703 :

Exécution de processus dans le Gestionnaire des tâches, version 1703.

Exceptions

Certains services continueront d’être regroupés sur des PC s’exécutant avec 3,5 Go ou une RAM supérieure. Par exemple, le moteur de filtrage de base (BFE) et le pare-feu Windows (Mpssvc) sont regroupés dans un seul groupe hôte, tout comme le mappeur de point de terminaison RPC et les services d’appel de procédure distante.

Si vous devez identifier les services qui continueront à être regroupés, en plus de les voir dans le Gestionnaire des tâches et d’utiliser des outils en ligne de commande, vous pouvez rechercher la valeur SvcHostSplitDisable dans leurs clés de service respectives sous HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services.

La valeur par défaut 1 empêche le fractionnement du service.

Par exemple, la configuration de clé de Registre pour BFE est : exemple de service qui ne peut pas être séparé.

Empreinte mémoire

La séparation des services augmente le nombre total d’instances SvcHost, ce qui augmente l’utilisation de la mémoire. (Le regroupement de services a permis de réduire modestement l’empreinte globale des ressources des services impliqués.)

Prenons l’exemple suivant :

Services groupés (< 3,5 Go) Services fractionnés (3,5 Go+)
Utilisation de la mémoire pour les services groupés. Utilisation de la mémoire pour les services séparés

Notes

Ce qui précède représente les valeurs maximales observées.

Le nombre total d’instances de service et l’utilisation de la mémoire résultante varient en fonction de l’activité. Le nombre d’instances peut généralement être compris entre 17 et 21 pour les services groupés et entre 67 et 74 pour les services séparés.

Essayez ceci

Pour déterminer l’impact du fractionnement des services hébergés sur un PC Windows 10 version 1703, exécutez l’applet de commande Windows PowerShell suivante, avant et après le basculement des paramètres de mémoire :

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