Для всех (как и я), имеющих такую же проблему: - Диспетчер задач Windows -> Производительность (вкладка) -> Монитор ресурсов (кнопка) - И вы получите svchost.exe, разделенный по службам В Windows 7
Оливер
1
@Oliver Resource Monitor показывает процессор для каждой службы, но этот вопрос касается памяти.
Эйдан Райан
Вы можете увидеть скрипт для проверки памяти отдельных сервисов в этом ответе SO .
Росберг Линхарес
@RosbergLinhares этот сценарий эквивалентен сценарию Питера Мортенсена
Эйдан Райан
@AidanRyan, для меня скрипт Питера Мортенсена не работал со службами Schedule и gpsvc.
Росберг Линхарес
Ответы:
51
Существует простой способ получить запрашиваемую информацию (но она требует небольшого изменения в вашей системе):
Разделите каждую службу для запуска в своем собственном процессе 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.
Для пользователей PowerShell: Get-Service | ForEach-Object {C: \ Windows \ System32 \ sc.exe конфиг $ _ Имя Тип = собственное.}
Тамара Wijsman
1
На самом деле, я обычно замечаю 3 или 4 случая в svchost.exeсистемах Windows XP. На этом я вижу 6.
SamB
4
@ TomWij: будьте предельно осторожны при использовании этого фрагмента - если вы используете EFS (Encrypting File System) и установите его на type= ownнего, он может работать некорректно, и вы останетесь без доступа к файлам, которые зашифрованы с его помощью (что может быть катастрофическим, если файлы ОС зашифрованы!)
Beau
@Beau: Вы знаете, почему явно?
Тамара Вийсман
2
@ Питер Мортенсен: я создал инструмент раскрытия информации о сервисе . Это 1. Хранит сервисы, которые разделяют процесс svchost.exe. 2. Настройка служб для запуска в отдельном процессе. 3. Возвращает все сохраненные на шаге 1 сервисы обратно в один процесс. Ваши комментарии и предложения приветствуются. Спасибо за идею.
Дмитрий Овдиенко
18
Вы можете использовать встроенную tasklistкоманду и фильтр по имени службы ( /fiкоммутатор), например:
tasklist /fi "services eq TermService"
Выход:
Имя изображения PID Имя сеанса Session # Mem Usage
========================= ======== ================ = ========== ============
svchost.exe 2940 Консоль 0 7.096 K
Если вы не знаете имени, вы можете перечислить их, выполнив следующую инструкцию:
tasklist /svc /fi "imagename eq svchost.exe"
В нем перечислены все службы, размещенные на svchost.exe, например:
Услуги не обязательно размещены svchost.exe. Так что, если вы не можете найти службу фильтрации по имени исполняемого файла, просто запустите tasklist /svc. Он покажет все услуги.
Обязательно запустите Process Explorer от имени администратора, нажмите на svchost, который вы хотите проверить, нажмите View DLLsкнопку (или CTRL+D). Щелкните правой кнопкой мыши заголовки в окне DLL Select Columns..., затем проверьте WS Total Bytesи нажмите OK.
Теперь вы можете просматривать и сортировать использование памяти отдельными сервисами (реализованными dll) в svchost.
В то время как Process Monitor является утилитой общего назначения (которая будет делать все, кроме мытья посуды за вас), для этого конкретного вопроса вы хотите использовать VMMap (еще одну утилиту SysInternals)
VMMap - это утилита для анализа виртуальной и физической памяти процесса. Он показывает разбивку типов выделенной виртуальной памяти процесса, а также объем физической памяти (рабочего набора), назначенный операционной системой этим типам. Помимо графического представления использования памяти, VMMap также показывает сводную информацию и подробную карту памяти процесса. Мощные возможности фильтрации и обновления позволяют определить источники использования памяти процесса и стоимость памяти для функций приложения.
Помимо гибких представлений для анализа текущих процессов, VMMap поддерживает экспорт данных в нескольких формах, включая собственный формат, в котором сохраняется вся информация, которую вы можете загрузить обратно. Он также включает параметры командной строки, которые включают сценарии сценариев.
Круто! Есть ли способ отследить использование блока памяти кучи для отдельной службы, которой он принадлежит?
Эйдан Райан
3
Это происходит на территории стекового потока, но если вы можете получить статистику памяти для каждого потока, вы можете приблизительно сопоставить ее с отдельными dll службы, сопоставив их с dll, перечисленными в стеке потоков. Слишком много для моего крошечного сисадмина.
Ответы:
Существует простой способ получить запрашиваемую информацию (но она требует небольшого изменения в вашей системе):
Разделите каждую службу для запуска в своем собственном процессе SVCHOST.EXE, и служба, потребляющая циклы ЦП, будет легко видна в Диспетчере задач или Обозревателе процессов (требуется пробел после "="):
Сделайте это в окне командной строки или поместите в сценарий BAT. Требуются права администратора и перезагрузка компьютера, прежде чем он вступит в силу.
Исходное состояние может быть восстановлено:
Пример: чтобы инструментарий управления Windows работал в отдельном файле SVCHOST.EXE:
Эта техника не имеет никаких побочных эффектов, за исключением, возможно, незначительного увеличения потребления памяти. Помимо наблюдения за использованием ЦП для каждой службы, он также позволяет легко отслеживать дельту ошибок страниц, скорость чтения дискового ввода-вывода и скорость записи дискового ввода-вывода для каждой службы. Для Process Explorer, меню View / Select Columns: вкладка Process Process / Page Fault Delta, вкладка Performance Process / IO Delta Write Bytes, вкладка Performance Process / IO Delta Read Bytes, соответственно.
В большинстве систем есть только один процесс SVCHOST.EXE, который имеет много сервисов. Я использовал эту последовательность (ее можно вставить прямо в окно командной строки):
источник
svchost.exe
системах Windows XP. На этом я вижу 6.type= own
него, он может работать некорректно, и вы останетесь без доступа к файлам, которые зашифрованы с его помощью (что может быть катастрофическим, если файлы ОС зашифрованы!)Вы можете использовать встроенную
tasklist
команду и фильтр по имени службы (/fi
коммутатор), например:Выход:
Если вы не знаете имени, вы можете перечислить их, выполнив следующую инструкцию:
В нем перечислены все службы, размещенные на svchost.exe, например:
Услуги не обязательно размещены
svchost.exe
. Так что, если вы не можете найти службу фильтрации по имени исполняемого файла, просто запуститеtasklist /svc
. Он покажет все услуги.источник
Обозреватель процессов действительно покажет вам индивидуальное использование памяти в svchost. Убедитесь, что у вас установлена последняя версия здесь http://technet.microsoft.com/en-us/sysinternals/bb896653
Обязательно запустите Process Explorer от имени администратора, нажмите на svchost, который вы хотите проверить, нажмите
View DLLs
кнопку (или CTRL+D). Щелкните правой кнопкой мыши заголовки в окне DLLSelect Columns...
, затем проверьтеWS Total Bytes
и нажмитеOK
.Теперь вы можете просматривать и сортировать использование памяти отдельными сервисами (реализованными dll) в svchost.
источник
В то время как Process Monitor является утилитой общего назначения (которая будет делать все, кроме мытья посуды за вас), для этого конкретного вопроса вы хотите использовать VMMap (еще одну утилиту SysInternals)
http://technet.microsoft.com/en-us/sysinternals/dd535533.aspx
VMMap - это утилита для анализа виртуальной и физической памяти процесса. Он показывает разбивку типов выделенной виртуальной памяти процесса, а также объем физической памяти (рабочего набора), назначенный операционной системой этим типам. Помимо графического представления использования памяти, VMMap также показывает сводную информацию и подробную карту памяти процесса. Мощные возможности фильтрации и обновления позволяют определить источники использования памяти процесса и стоимость памяти для функций приложения.
Помимо гибких представлений для анализа текущих процессов, VMMap поддерживает экспорт данных в нескольких формах, включая собственный формат, в котором сохраняется вся информация, которую вы можете загрузить обратно. Он также включает параметры командной строки, которые включают сценарии сценариев.
источник
Это происходит на территории стекового потока, но если вы можете получить статистику памяти для каждого потока, вы можете приблизительно сопоставить ее с отдельными dll службы, сопоставив их с dll, перечисленными в стеке потоков. Слишком много для моего крошечного сисадмина.
источник
Я расширяю ответ Питера Мортенсена здесь. Перед изменением типа служб, пожалуйста, проверьте существующий тип с помощью команды, например:
Который выведет следующее:
Любой тип, кроме «10 WIN32_OWN_PROCESS», «20 WIN32_SHARE_PROCESS» не должен быть изменен.
источник
Разделение сервисов - правильный ответ, но команда sc config у меня не сработала (2008 R2).
Вы можете сделать это через реестр, но это означает, что для параметра «Тип» задано значение 0x00000010 (16 декабря):
Будьте осторожны, хотя какой сервис вы хотите изменить, кроме «own» и «share» есть специальные типы, которые нельзя изменять, например:
После этого просто перезапустите службу, и вы увидите в ProcessExplorer, что теперь у нее есть собственный процесс svchost.exe.
источник