Menedżer zadań pokazuje ogólne użycie pamięci svchost.exe. Czy istnieje sposób na sprawdzenie wykorzystania pamięci przez poszczególne usługi?
Uwaga: jest to podobne do raportowania wydajności Finegrained na svchost.exe
Menedżer zadań pokazuje ogólne użycie pamięci svchost.exe. Czy istnieje sposób na sprawdzenie wykorzystania pamięci przez poszczególne usługi?
Uwaga: jest to podobne do raportowania wydajności Finegrained na svchost.exe
Odpowiedzi:
Istnieje prosty sposób na uzyskanie wymaganych informacji (ale wymaga niewielkiej zmiany w systemie):
Podziel każdą usługę, aby działała we własnym procesie SVCHOST.EXE, a usługa wykorzystująca cykle procesora będzie łatwo widoczna w Menedżerze zadań lub Eksploratorze procesów (wymagane jest miejsce po „=”):
SC Config Servicename Type= own
Zrób to w oknie wiersza poleceń lub umieść w skrypcie BAT. Wymagane są uprawnienia administracyjne, a przed wejściem w życie wymagane jest ponowne uruchomienie komputera.
Stan pierwotny można przywrócić poprzez:
SC Config Servicename Type= share
Przykład: aby uruchomić Instrumentację zarządzania Windows w osobnym pliku SVCHOST.EXE:
SC Config winmgmt Type= own
Ta technika nie ma żadnych złych skutków, z wyjątkiem być może nieznacznego zwiększenia zużycia pamięci. Poza obserwowaniem użycia procesora dla każdej usługi, ułatwia także obserwowanie delty błędów strony, szybkości odczytu we / wy dysku i prędkości zapisu we / wy dysku dla każdej usługi. W Eksploratorze procesów, menu Widok / Wybierz kolumny: zakładka Pamięć procesu / Delta błędu strony, zakładka Wydajność procesu / Bajty zapisu Delta IO, zakładka Wydajność procesu / Bajty odczytu Delta IO.
W większości systemów jest tylko jeden proces SVCHOST.EXE, który ma wiele usług. Użyłem tej sekwencji (można ją wkleić bezpośrednio w oknie wiersza poleceń):
rem 1. "Automatic Updates"
SC Config wuauserv Type= own
rem 2. "COM+ Event System"
SC Config EventSystem Type= own
rem 3. "Computer Browser"
SC Config Browser Type= own
rem 4. "Cryptographic Services"
SC Config CryptSvc Type= own
rem 5. "Distributed Link Tracking"
SC Config TrkWks Type= own
rem 6. "Help and Support"
SC Config helpsvc Type= own
rem 7. "Logical Disk Manager"
SC Config dmserver Type= own
rem 8. "Network Connections"
SC Config Netman Type= own
rem 9. "Network Location Awareness"
SC Config NLA Type= own
rem 10. "Remote Access Connection Manager"
SC Config RasMan Type= own
rem 11. "Secondary Logon"
SC Config seclogon Type= own
rem 12. "Server"
SC Config lanmanserver Type= own
rem 13. "Shell Hardware Detection"
SC Config ShellHWDetection Type= own
rem 14. "System Event Notification"
SC Config SENS Type= own
rem 15. "System Restore Service"
SC Config srservice Type= own
rem 16. "Task Scheduler"
SC Config Schedule Type= own
rem 17. "Telephony"
SC Config TapiSrv Type= own
rem 18. "Terminal Services"
SC Config TermService Type= own
rem 19. "Themes"
SC Config Themes Type= own
rem 20. "Windows Audio"
SC Config AudioSrv Type= own
rem 21. "Windows Firewall/Internet Connection Sharing (ICS)"
SC Config SharedAccess Type= own
rem 22. "Windows Management Instrumentation"
SC Config winmgmt Type= own
rem 23. "Wireless Configuration"
SC Config WZCSVC Type= own
rem 24. "Workstation"
SC Config lanmanworkstation Type= own
rem End.
svchost.exe
w systemach Windows XP. Na tym widzę 6.
type= own
, może on nie działać poprawnie i pozostaniesz bez dostępu do plików zaszyfrowanych za jego pomocą (które mogą bądź katastrofalny, jeśli pliki systemu operacyjnego są zaszyfrowane!)
Możesz użyć wbudowanego tasklist
polecenia i filtrować według nazwy usługi ( /fi
przełącznika), na przykład:
tasklist /fi "services eq TermService"
Wynik:
Nazwa obrazu Nazwa sesji PID Sesja nr Wykorzystanie pamięci ========================= ======== ================ = ========== ============ svchost.exe 2940 Konsola 0 7.096 K.
Jeśli nie znasz nazwy, możesz je wymienić, uruchamiając tę instrukcję:
tasklist /svc /fi "imagename eq svchost.exe"
Zawiera listę wszystkich usług hostowanych przez svchost.exe, na przykład:
Nazwa obrazu Usługi PID ========================= ======== ================= =========================== 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, helpvc, 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
Usługi niekoniecznie są hostowane przez svchost.exe
. Jeśli więc nie możesz znaleźć usługi filtrującej według nazwy pliku wykonawczego, po prostu uruchom tasklist /svc
. Pokaże wszystkie usługi.
Eksplorator procesów rzeczywiście pokaże indywidualne użycie pamięci w svchost Upewnij się, że masz najnowszą wersję stąd http://technet.microsoft.com/en-us/sysinternals/bb896653
Uruchom Eksploratora procesów jako administrator, kliknij svchost, który chcesz sprawdzić, kliknij View DLLs
przycisk (lub CTRL+D). Kliknij prawym przyciskiem myszy nagłówki w oknie bibliotek DLL Select Columns...
, a następnie zaznacz WS Total Bytes
i naciśnij OK
.
Teraz możesz przeglądać i sortować wykorzystanie pamięci przez poszczególne usługi (realizowane przez biblioteki dll) w svchost.
Podczas gdy Process Monitor to narzędzie ogólnego zastosowania (które zrobi wszystko oprócz zmywania naczyń dla Ciebie), w tym konkretnym pytaniu chcesz użyć VMMap (inne narzędzie SysInternals)
http://technet.microsoft.com/en-us/sysinternals/dd535533.aspx
VMMap to narzędzie do analizy pamięci wirtualnej i fizycznej. Pokazuje rozkład typów pamięci wirtualnej zatwierdzonych przez proces, a także ilość pamięci fizycznej (zestawu roboczego) przypisanego przez system operacyjny do tych typów. Oprócz graficznych reprezentacji wykorzystania pamięci, VMMap pokazuje również informacje podsumowujące i szczegółową mapę pamięci procesu. Wydajne funkcje filtrowania i odświeżania pozwalają zidentyfikować źródła wykorzystania pamięci procesowej i koszt pamięci funkcji aplikacji.
Oprócz elastycznych widoków do analizy procesów na żywo, VMMap obsługuje eksport danych w wielu formach, w tym format macierzysty, który zachowuje wszystkie informacje, aby można było je ponownie załadować. Zawiera również opcje wiersza poleceń, które umożliwiają scenariusze skryptowe.
Dostaje się to do obszaru przepełnienia stosu, ale jeśli możesz zdobyć statystyki pamięci dla wątku, możesz być w stanie z grubsza skorelować to z dllami poszczególnych usług, dopasowując je do dllów wymienionych na stosie wątków. Jednak zdecydowanie za dużo dla mojego maleńkiego mózgu sysadmin.
Udzielam odpowiedzi Peter Mortensen. Przed zmodyfikowaniem rodzaju usług sprawdź istniejący typ za pomocą polecenia:
sc query wuauserv
Które wygenerują następujące:
TYPE : 20 WIN32_SHARE_PROCESS
STATE : 1 STOPPED
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
Każdy typ inny niż „10 WIN32_OWN_PROCESS”, „20 WIN32_SHARE_PROCESS” nie powinien być modyfikowany.
Rozdzielenie usług jest poprawną odpowiedzią, ale polecenie sc config nie działało dla mnie (2008 R2).
Można to jednak zrobić za pośrednictwem rejestru, co oznacza ustawienie parametru „Typ” na 0x00000010 (dec. 16):
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\<ServiceName>\Type
Uważaj jednak, którą usługę chcesz zmodyfikować, oprócz „własnych” i „udostępnionych” istnieją specjalne typy, których nie należy zmieniać, takie jak:
Następnie po prostu uruchom ponownie usługę i powinieneś zobaczyć w ProcessExplorer, że ma teraz swój własny proces svchost.exe.