Le Gestionnaire des tâches affiche l'utilisation totale de la mémoire de svchost.exe. Existe-t-il un moyen de voir l'utilisation de la mémoire des services individuels?
Notez que c'est similaire à Finegrained performance reporting on svchost.exe
Le Gestionnaire des tâches affiche l'utilisation totale de la mémoire de svchost.exe. Existe-t-il un moyen de voir l'utilisation de la mémoire des services individuels?
Notez que c'est similaire à Finegrained performance reporting on svchost.exe
Il y a un moyen facile d'obtenir les informations que vous demandez (mais cela nécessite un léger changement dans votre système) :
Divisez chaque service pour s'exécuter dans son propre processus SVCHOST.EXE et le service qui consomme les cycles CPU sera facilement visible dans le Gestionnaire des tâches ou dans l'Explorateur de processus (l'espace après "=" est requis) :
SC Config NomDuService Type= own
Faites-le dans une fenêtre de ligne de commande ou mettez-le dans un script BAT. Des privilèges administratifs sont requis et un redémarrage de l'ordinateur est nécessaire avant que cela prenne effet.
L'état d'origine peut être restauré par :
SC Config NomDuService Type= share
Exemple : pour faire fonctionner la Gestion des services Windows dans un processus SVCHOST.EXE séparé :
SC Config winmgmt Type= own
Cette technique n'a aucun effet indésirable, sauf peut-être une légère augmentation de la consommation de mémoire. Et en plus d'observer l'utilisation du CPU pour chaque service, cela permet également d'observer facilement le delta des défauts de page, le taux de lecture d'E/S disque et le taux d'écriture d'E/S disque pour chaque service. Pour Process Explorer, menu Affichage/Sélection des colonnes : onglet Mémoire du processus/Delta des défauts de page, onglet Performance du processus/Delta E/S en écriture, onglet Performance du processus/Delta E/S en lecture, respectivement.
Sur la plupart des systèmes, il n'y a qu'un seul processus SVCHOST.EXE qui possède plusieurs services. J'ai utilisé cette séquence (elle peut être collée directement dans une fenêtre de ligne de commande) :
rem 1. "Mises à jour automatiques"
SC Config wuauserv Type= own
rem 2. "Système d'événements COM+"
SC Config EventSystem Type= own
rem 3. "Explorateur d'ordinateur"
SC Config Browser Type= own
rem 4. "Services de cryptographie"
SC Config CryptSvc Type= own
rem 5. "Suivi des liens distribués"
SC Config TrkWks Type= own
rem 6. "Assistance et support"
SC Config helpsvc Type= own
rem 7. "Gestionnaire de disques logiques"
SC Config dmserver Type= own
rem 8. "Connexions réseau"
SC Config Netman Type= own
rem 9. "Connaissance d'emplacement réseau"
SC Config NLA Type= own
rem 10. "Gestionnaire de connexions d'accès distant"
SC Config RasMan Type= own
rem 11. "Ouverture de session secondaire"
SC Config seclogon Type= own
rem 12. "Serveur"
SC Config lanmanserver Type= own
rem 13. "Détection matérielle de shell"
SC Config ShellHWDetection Type= own
rem 14. "Notification d'événement système"
SC Config SENS Type= own
rem 15. "Service de restauration du système"
SC Config srservice Type= own
rem 16. "Planificateur de tâches"
SC Config Schedule Type= own
rem 17. "Téléphonie"
SC Config TapiSrv Type= own
rem 18. "Services Terminal"
SC Config TermService Type= own
rem 19. "Thèmes"
SC Config Themes Type= own
rem 20. "Audio Windows"
SC Config AudioSrv Type= own
rem 21. "Fermeture Windows/Pare-feu partages de connexion Internet (ICS)"
SC Config SharedAccess Type= own
rem 22. "Gestion Instrumentation Windows"
SC Config winmgmt Type= own
rem 23. "Configuration sans fil"
SC Config WZCSVC Type= own
rem 24. "Station de travail"
SC Config lanmanworkstation Type= own
rem Fin.
Vous pourriez utiliser la commande intégrée tasklist
et filtrer par nom de service (commutateur /fi
), par exemple :
tasklist /fi "services eq TermService"
Sortie :
Image Name PID Session Name Session# Mem Usage
========================= ======== ================ =========== ============
svchost.exe 2940 Console 0 7.096 K
Si vous ne connaissez pas un nom, vous pouvez les lister en exécutant cette commande :
tasklist /svc /fi "imagename eq svchost.exe"
Cela liste tous les services hébergés par svchost.exe, par exemple :
Image Name PID Services
========================= ======== ============================================
svchost.exe 632 DcomLaunch
svchost.exe 684 RpcSs
svchost.exe 748 Dhcp, Dnscache
svchost.exe 788 LmHosts, W32Time
svchost.exe 804 AeLookupSvc, AudioSrv, Browser, CryptSvc,
dmserver, EventSystem, helpsvc,
lanmanserver, lanmanworkstation, Messenger,
Netman, Nla, RasMan, Schedule, seclogon,
SENS, ShellHWDetection, TrkWks, winmgmt,
wuauserv, WZCSVC
svchost.exe 1140 ERSvc
svchost.exe 1712 RemoteRegistry
svchost.exe 196 W3SVC
svchost.exe 2940 TermService
svchost.exe 2420 TapiSrv
Les services ne sont pas nécessairement hébergés par svchost.exe
. Donc, si vous ne pouvez pas trouver un service en filtrant par le nom du fichier exécutant, exécutez simplement tasklist /svc
. Il affichera tous les services.
Le gestionnaire de processus affichera en effet l'utilisation individuelle de la mémoire dans svchost Assurez-vous d'avoir la dernière version d'ici https://docs.microsoft.com/sysinternals/downloads/process-explorer
Veillez à exécuter Process Explorer en tant qu'administrateur, cliquez sur le svchost que vous souhaitez inspecter, cliquez sur le bouton Voir DLLs
(ou CTRL+D). Cliquez avec le bouton droit sur les en-têtes de la fenêtre DLLs, Sélectionner les colonnes...
, cochez ensuite WS Total Bytes
, et cliquez sur OK
.
Maintenant, vous pouvez afficher et trier sur l'utilisation de la mémoire des services individuels (implémentés par des dlls) dans le svchost.
Alors que Process Monitor est un utilitaire polyvalent (qui fera tout sauf vous laver la vaisselle), pour cette question particulière, vous voulez utiliser VMMap (un autre utilitaire SysInternals)
https://docs.microsoft.com/sysinternals/downloads/vmmap
VMMap est un utilitaire d'analyse de la mémoire virtuelle et physique des processus. Il montre une ventilation des types de mémoire virtuelle engagée d'un processus ainsi que la quantité de mémoire physique (ensemble de travail) attribuée par le système d'exploitation à ces types. En plus des représentations graphiques de l'utilisation de la mémoire, VMMap montre également des informations résumées et une carte mémoire détaillée du processus. De puissantes capacités de filtrage et de rafraîchissement vous permettent d'identifier les sources de l'utilisation de la mémoire du processus et le coût en mémoire des fonctionnalités de l'application.
En plus de vues flexibles pour analyser les processus en direct, VMMap prend en charge l'exportation de données sous plusieurs formes, y compris un format natif qui préserve toutes les informations pour que vous puissiez les recharger. Il inclut également des options en ligne de commande qui permettent des scénarios de script.
Cela commence à relever du territoire de stackoverflow, mais si vous pouvez obtenir des statistiques de mémoire par thread, vous pourrez peut-être les corrélations approximativement aux dlls de service individuels en les faisant correspondre aux dlls répertoriées dans la pile de thread. Bien trop pour mon minuscule cerveau d'administrateur système, cependant.
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.