Regroupement d’hôtes de service dans 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’un instance différent du processus Hôte de service. De cette façon, un problème dans une instance n’affecte pas les autres instances. Les groupes 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 service local restreint
- Système local
- Réseau 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 sont séparés : chacun s’exécute 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 cette modification 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 en cas de blocage des composants réseau.
- Réduction des coûts de support en éliminant la surcharge de résolution des problèmes associée à l’isolation des services mal comportement dans l’hôte partagé.
- Sécurité accrue grâce à une isolation interservices accrue
- Scalabilité accrue en autorisant les paramètres et privilèges par service
- Amélioration de la gestion des ressources grâce à la gestion de l’UC par service, des E/S et de la mémoire, et augmentation des données de diagnostic claires (utilisation du processeur, des E/S et 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 :
- Pour afficher les processus groupés, définissez la RAM sur 3484 Mo ou moins. Redémarrez la machine virtuelle, puis ouvrez le Gestionnaire des tâches.
- Pour voir les processus séparés, définissez la RAM sur 3486 Mo ou plus. Redémarrez la machine virtuelle, puis ouvrez le Gestionnaire des 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 quelles 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 :
Comparez cela à la même vue des processus en cours d’exécution dans Windows 10 version 1703 :
Exceptions
Certains services continueront d’être regroupés sur des PC s’exécutant avec 3,5 Go de RAM ou plus. 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 les services de mappeur de point de terminaison RPC et 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 à l’aide 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 service d’être fractionné.
Par exemple, la configuration de la clé de Registre pour BFE est :
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 légèrement l’empreinte globale des ressources des services concernés.)
Prenons l’exemple suivant :
Services groupés (< 3,5 Go) | Services fractionnés (3,5 Go et plus) |
---|---|
Remarque
Le ci-dessus 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 aller d’environ 17 à 21 pour les services groupés et de 67 à 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