Dla każdego (takiego jak ja) mającego ten sam problem: - Menedżer zadań Windows -> Wydajność (karta) -> Monitor zasobów (przycisk) - I dostajesz svchost.exe podzielony według usługi W systemie Windows 7
Oliver
1
@Oliver Resource Monitor pokazuje procesor na usługę, ale to pytanie dotyczy pamięci.
Aidan Ryan
Możesz zobaczyć skrypt sprawdzający pamięć poszczególnych usług w tej odpowiedzi SO .
Rosberg Linhares
@RosbergLinhares ten skrypt jest równoważny skryptowi PeterMortensena
Aidan Ryan
@AidanRyan, dla mnie skrypt PeterMortensen nie działał z usługami Schedule i gpsvc.
Rosberg Linhares
Odpowiedzi:
51
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.
Dla użytkowników PowerShell: Get-Service | ForEach-Object {C: \ Windows \ System32 \ SC.EXE config $ _. Nazwa type = own}
Tamara Wijsman
1
Właściwie zazwyczaj zauważam 3 lub 4 wystąpienia svchost.exew systemach Windows XP. Na tym widzę 6.
SamB
4
@TomWij: Zachowaj szczególną ostrożność podczas korzystania z tego fragmentu kodu - jeśli używasz EFS (Encrypting File System) i ustaw go 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!)
Beau,
@ Beau: Czy wiesz, dlaczego wprost?
Tamara Wijsman,
2
@Peter Mortensen: Stworzyłem narzędzie do ujawniania usług . 1. Przechowuje usługi współdzielące proces svchost.exe. 2. Konfiguruje usługi do uruchamiania w osobnym procesie. 3. Przywraca wszystkie usługi zapisane w kroku 1 z powrotem do jednego procesu. Twoje komentarze i sugestie są mile widziane. Dzięki za pomysł.
Dmytro Ovdiienko
18
Możesz użyć wbudowanego tasklistpolecenia i filtrować według nazwy usługi ( /fiprzełą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:
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.
Uruchom Eksploratora procesów jako administrator, kliknij svchost, który chcesz sprawdzić, kliknij View DLLsprzycisk (lub CTRL+D). Kliknij prawym przyciskiem myszy nagłówki w oknie bibliotek DLL Select Columns..., a następnie zaznacz WS Total Bytesi 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)
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.
Chłodny! Czy jest teraz sposób, aby prześledzić użycie bloku pamięci sterty dla poszczególnych usług, które są jego właścicielem?
Aidan Ryan
3
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.
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 „=”):
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:
Przykład: aby uruchomić Instrumentację zarządzania Windows w osobnym pliku SVCHOST.EXE:
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ń):
źródło
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:Wynik:
Jeśli nie znasz nazwy, możesz je wymienić, uruchamiając tę instrukcję:
Zawiera listę wszystkich usług hostowanych przez svchost.exe, na przykład:
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 uruchomtasklist /svc
. Pokaże wszystkie usługi.źródło
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 DLLSelect Columns...
, a następnie zaznaczWS Total Bytes
i naciśnijOK
.Teraz możesz przeglądać i sortować wykorzystanie pamięci przez poszczególne usługi (realizowane przez biblioteki dll) w svchost.
źródło
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.
źródło
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.
źródło
Udzielam odpowiedzi Peter Mortensen. Przed zmodyfikowaniem rodzaju usług sprawdź istniejący typ za pomocą polecenia:
Które wygenerują następujące:
Każdy typ inny niż „10 WIN32_OWN_PROCESS”, „20 WIN32_SHARE_PROCESS” nie powinien być modyfikowany.
źródło
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):
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.
źródło