it-swarm-ru.tech

Как найти использование памяти отдельными службами Windows?

Диспетчер задач показывает общее использование памяти svchost.exe. Есть ли способ просмотреть использование памяти отдельными службами?


Обратите внимание, что это похоже на точные отчеты о производительности для svchost.exe

43
Aidan Ryan

Существует простой способ получить запрашиваемую информацию (но она требует небольшого изменения в вашей системе):

Разделите каждую службу для запуска в своем собственном процессе SVCHOST.EXE, и служба, потребляющая циклы ЦП, будет легко видна в диспетчере задач или обозревателе процессов (требуется пробел после "="):

SC Config Servicename Type= own

Сделайте это в окне командной строки или поместите в скрипт BAT. Требуются права администратора и перезагрузка компьютера, прежде чем он вступит в силу.

Исходное состояние может быть восстановлено:

SC Config Servicename Type= share

Пример: чтобы инструментарий управления Windows работал в отдельном файле SVCHOST.EXE:

SC Config winmgmt Type= own

Эта методика не имеет побочных эффектов, за исключением, возможно, незначительного увеличения потребления памяти. Помимо наблюдения за использованием ЦП для каждой службы, он также позволяет легко отслеживать дельту ошибок страниц, скорость чтения дискового ввода-вывода и скорость записи дискового ввода-вывода для каждой службы. Для Process Explorer, меню View/Select Columns: вкладка Process Process/Page Fault Delta, вкладка Performance Process/IO Delta Write Bytes, вкладка Performance Process/IO Delta Read Bytes, соответственно.


В большинстве систем есть только один процесс SVCHOST.EXE, который имеет много сервисов. Я использовал эту последовательность (ее можно вставить прямо в окно командной строки):

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.
51
Peter Mortensen

Вы можете использовать встроенную команду tasklist и ​​фильтровать по имени службы (/fi switch), например:

 tasklist /fi "services eq TermService"

Вывод:

 Имя изображения PID Имя сеанса Сеанс # Памятка использования 
 ======================== ====== == ================ =========== ============ 
 svchost.exe 2940 Консоль 0 7,096 К 

Если вы не знаете имени, вы можете перечислить их, выполнив следующую инструкцию:

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

В нем перечислены все службы, размещенные на svchost.exe, например:

 Название изображения 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, Браузер, CryptSvc, 
 Dmserver, EventSystem, helpvc, 
 Lanmanserver, lanmanworkstation, Messenger, 
 Netman, Nla, RasMan, Расписание, 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 

Услуги не обязательно размещаются svchost.exe. Итак, если вы не можете найти службу фильтрации по имени исполняемого файла, просто запустите tasklist /svc. Он покажет все услуги.

19
splattne

Process Explorer действительно покажет вам индивидуальное использование памяти в svchost. Убедитесь, что у вас установлена ​​последняя версия здесь http://technet.Microsoft.com/en-us/sysinternals/bb89665

Обязательно запустите Process Explorer от имени администратора, щелкните svchost, который вы хотите проверить, нажмите View DLLs кнопка (или CTRL+D). Щелкните правой кнопкой мыши заголовки в окне DLL, Select Columns..., затем проверьте WS Total Bytes и ​​нажмите OK.

Теперь вы можете просматривать и сортировать использование памяти отдельными сервисами (реализованными dll) в svchost.

9
Chris T.

В то время как Process Monitor является утилитой общего назначения (которая будет делать все, кроме мытья посуды за вас), для этого конкретного вопроса вы хотите использовать VMMap (еще одну утилиту SysInternals)

http://technet.Microsoft.com/en-us/sysinternals/dd535533.aspx

VMMap - это утилита анализа виртуальной и физической памяти процесса. Он показывает разбивку типов выделенной виртуальной памяти процесса, а также объем физической памяти (рабочего набора), назначенный операционной системой этим типам. Помимо графического представления использования памяти, VMMap также показывает сводную информацию и подробную карту памяти процесса. Мощные возможности фильтрации и обновления позволяют определить источники использования памяти процесса и стоимость памяти для функций приложения.

Помимо гибких представлений для анализа текущих процессов, VMMap поддерживает экспорт данных в нескольких формах, включая собственный формат, который сохраняет всю информацию, чтобы вы могли загрузить ее обратно. Он также включает командную строку параметры, которые включают сценарии сценариев.

7
Sean Earp

Это происходит на территории стекового потока, но если вы можете получить статистику памяти для каждого потока, вы можете приблизительно сопоставить ее с отдельными dll службы, сопоставив их с dll, перечисленными в стеке потоков. Слишком много для моего крошечного сисадмина.

3
user2278

Я расширяю ответ Питера Мортенсена здесь. Перед изменением типа услуг, пожалуйста, проверьте существующий тип с помощью команды, например:

sc query wuauserv

Который выведет следующее:

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

Любой тип, кроме "10 WIN32_OWN_PROCESS", "20 WIN32_SHARE_PROCESS" не должен быть изменен.

2
sken130

Разделение сервисов - правильный ответ, но команда sc config у меня не сработала (2008 R2).

Вы можете сделать это через реестр, что означает установку параметра "Тип" на 0x00000010 (дек. 16):

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

Будьте осторожны, хотя какой сервис вы хотите изменить, кроме "own" и "share" есть специальные типы, которые нельзя изменять, например:

  • ядро
  • filesys
  • запись
  • адаптироваться

После этого просто перезапустите службу, и вы увидите в ProcessExplorer, что теперь у нее есть собственный процесс svchost.exe.

1
Michael Böckling