Como encontrar o uso de memória de serviços individuais do Windows?

39

O Gerenciador de Tarefas mostra o uso geral de memória do svchost.exe. Existe uma maneira de visualizar o uso de memória de serviços individuais?

Observe que isso é semelhante a Relatório de desempenho com precisão final no svchost.exe

    
por Aidan Ryan 26.05.2009 / 17:44

7 respostas

49

Existe uma maneira fácil de obter as informações solicitadas para (mas requer uma ligeira alteração no seu sistema):

Divida cada serviço para executar em seu próprio processo SVCHOST.EXE e o serviço consumindo os ciclos da CPU será facilmente visível no Gerenciador de Tarefas ou no Process Explorer (o espaço após "=" é obrigatório):

SC Config Servicename Type= own

Faça isso em uma janela de linha de comando ou coloque-o em uma BAT roteiro. Privilégios administrativos são necessários e uma reinicialização do computador é necessária antes de efeito.

O estado original pode ser restaurado por:

SC Config Servicename Type= share

Exemplo: para executar o Windows Management Instrumentation em um SVCHOST.EXE separado:

SC Config winmgmt Type= own

Esta técnica não tem efeitos negativos, exceto talvez aumentando consumo de memória ligeiramente. E além de observar CPU uso para cada serviço, também facilita a observação da página faults delta, taxa de leitura de E / S do disco e taxa de gravação de E / S de disco para cada serviço. Para o Process Explorer, menu Visualizar / Selecionar Colunas:   guia Process Memory / Page Fault Delta,   guia Process Performance / IO Delta Write Bytes,   guia Process Performance / IO Delta Read Bytes, respectivamente.

Na maioria dos sistemas, há apenas um processo SVCHOST.EXE que tem muitos serviços. Eu usei essa seqüência (pode ser colado diretamente em uma janela de linha de comando):

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.
    
por 07.06.2009 / 13:53
17

Você pode usar o comando tasklist interno e filtrar por nome de serviço ( /fi switch), por exemplo:

 tasklist /fi "services eq TermService"

Saída:

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
svchost.exe                   2940 Console                    0      7.096 K

Se você não souber um nome, poderá listá-lo executando esta declaração:

 tasklist /svc /fi "imagename eq svchost.exe"

Lista todos os serviços hospedados pelo svchost.exe, por exemplo:

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

Os serviços não são necessariamente hospedados por svchost.exe . Portanto, se você não encontrar um serviço de filtragem pelo nome do arquivo em execução, basta executar tasklist /svc . Ele mostrará todos os serviços.

    
por 26.05.2009 / 19:35
6

O Process Explorer irá mostrar o uso de memória individual dentro do svchost Verifique se você tem a versão mais recente aqui link

Certifique-se de executar o Process Explorer como administrador, clique no svchost que você deseja inspecionar, clique no botão View DLLs (ou CTRL + D ). Clique com o botão direito do mouse nos cabeçalhos na janela DLLs, Select Columns... , depois verifique WS Total Bytes e clique em OK .

Agora você pode ver e classificar o uso de memória de serviços individuais (implementados por dlls) dentro do svchost.

    
por 30.12.2010 / 17:47
5

Embora o Process Monitor seja um utilitário de uso geral (que fará tudo menos lavar pratos para você), para essa pergunta específica você deseja usar o VMMap (outro utilitário SysInternals)

link

O VMMap é um utilitário de análise de memória física e virtual do processo. Ele mostra um detalhamento dos tipos de memória virtual comprometida de um processo, bem como a quantidade de memória física (conjunto de trabalho) atribuída pelo sistema operacional a esses tipos. Além de representações gráficas de uso de memória, o VMMap também mostra informações resumidas e um mapa de memória de processo detalhado. Os poderosos recursos de filtragem e atualização permitem que você identifique as fontes de uso da memória do processo e o custo de memória dos recursos do aplicativo.

Além de visualizações flexíveis para análise de processos ativos, o VMMap suporta a exportação de dados em vários formulários, incluindo um formato nativo que preserva todas as informações para que você possa carregá-las novamente. cenários de script.

    
por 07.06.2009 / 19:23
2

Isso está entrando no território do stackoverflow, mas se você puder se apossar de estatísticas de memória por thread, você poderá correlacioná-lo aproximadamente com as dlls de serviço individuais, combinando-as com as dlls listadas na pilha de encadeamentos. Demasiado demais para o meu minúsculo cérebro de sysadmin,

    
por 26.05.2009 / 18:51
1

Eu estendo a resposta de Peter Mortensen aqui. Antes de modificar o tipo de serviços, por favor, verifique o tipo existente por comando como:

sc query wuauserv

Qual será o resultado:

    TYPE               : 20  WIN32_SHARE_PROCESS
    STATE              : 1  STOPPED
    WIN32_EXIT_CODE    : 0  (0x0)
    SERVICE_EXIT_CODE  : 0  (0x0)
    CHECKPOINT         : 0x0
    WAIT_HINT          : 0x0

Qualquer tipo diferente de "10 WIN32_OWN_PROCESS", "20 WIN32_SHARE_PROCESS" não deve ser modificado.

    
por 10.03.2015 / 07:59
0

Separar os serviços é a resposta correta, mas o comando sc config não funcionou para mim (2008 R2).

Você pode fazê-lo através do registro, o que significa definir o parâmetro "Tipo" como 0x00000010 (dec. 16):

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\<ServiceName>\Type

Tenha cuidado com qual serviço você escolhe modificar, existem tipos especiais além de "próprio" e "compartilhamento" que não devem ser alterados, como:

  • kernel
  • filesys
  • rec
  • adaptar

Depois disso, apenas reinicie o serviço e você verá no ProcessExplorer que ele agora tem seu próprio processo svchost.exe.

    
por 26.02.2013 / 18:31