Изменилось ли поведение svchost.exe в обновлении для создателей Windows 10 (сборка 1703)?
Сегодня я обновился до Creators Update, запустив установку из локально установленного ISO. Вернувшись к своему компьютеру, я открыл диспетчер задач и увидел, что использование моей памяти было намного выше, чем было раньше (теперь это почти 6 ГБ памяти в режиме ожидания после входа в систему вместо 2-3 ГБ в предыдущей сборке Windows) - процессы Вкладка показала, что было более 60 различных случаев svchost.exe
Бег. Эта цифра 6 ГБ предназначена только для памяти процесса - не включая память, используемую для кэширования или "ожидания".
Я побежал tasklist /svc
чтобы получить список того, какие службы были в каких процессах, и он перечисляет почти каждый экземпляр svchost.exe как содержащий только одну работающую службу (за исключением нескольких экземпляров, которые работают с несколькими системными службами).
Вот мой вывод:
Image Name PID Services
========================= ======== ============================================
System Idle Process 0 N/A
System 4 N/A
smss.exe 440 N/A
csrss.exe 612 N/A
wininit.exe 700 N/A
csrss.exe 708 N/A
services.exe 776 N/A
lsass.exe 784 KeyIso, Netlogon, SamSs, VaultSvc
svchost.exe 888 PlugPlay
svchost.exe 908 BrokerInfrastructure, DcomLaunch, Power,
SystemEventsBroker
fontdrvhost.exe 936 N/A
svchost.exe 1000 RpcEptMapper, RpcSs
svchost.exe 104 LSM
winlogon.exe 544 N/A
fontdrvhost.exe 420 N/A
svchost.exe 1072 DeviceInstall
dwm.exe 1136 N/A
svchost.exe 1164 BFE, CoreMessagingRegistrar, MpsSvc
svchost.exe 1424 lmhosts
svchost.exe 1432 W32Time
svchost.exe 1440 nsi
svchost.exe 1448 wudfsvc
svchost.exe 1528 hidserv
svchost.exe 1628 Dhcp
svchost.exe 1716 Dnscache
svchost.exe 1748 EventLog
WUDFHost.exe 1792 N/A
svchost.exe 1908 TimeBrokerSvc
svchost.exe 1952 NlaSvc
NVDisplay.Container.exe 1968 NVDisplay.ContainerLocalSystem
svchost.exe 1324 Themes
svchost.exe 1596 ProfSvc
svchost.exe 1944 EventSystem
svchost.exe 1052 netprofm
svchost.exe 2116 StateRepository
svchost.exe 2256 SENS
svchost.exe 2296 AudioEndpointBuilder
svchost.exe 2304 FontCache
(etc)...
Я знаю, что вы можете настроить отдельные службы для запуска в своем собственном экземпляре SVC с sc config <serviceName> type= own
команда, но, насколько мне известно, я никогда не запускал эту команду.
Я быстро взглянул на Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
и это выглядит как Type
в значениях ключей для большинства этих сервисов отсутствует бит флага 0x10
который контролирует, если служба работает в своем собственном svchost.exe
экземпляр или нет. Интересно, что могло повлиять на это изменение?
Кто-нибудь еще наблюдал такое поведение до или после установки Windows 10 Creators Update? Если это изменение конфигурации по умолчанию, повлияет ли это на производительность или стабильность системы?
Я подозреваю, что это повысит стабильность системы, потому что в случае сбоя службы это не приведет к остановке других служб - но это связано с огромными затратами оперативной памяти - но я никогда не сталкивался с ошибкой службы - или, по крайней мере, когда-либо замечал это (вместо этого худшая проблема, с которой я столкнулся, wuauserv
потребляет 100% ЦП в течение нескольких часов подряд - и это не проблема, которую решит изоляция процесса).
(Я только что заметил: они наконец добавили адресную строку в редактор реестра!)
1 ответ
Да, это изменение в обновлении Creators, если вы используете компьютер с более чем 3,5 ГБ ОЗУ. Здесь все службы запускаются в своем собственном svchost.exe, чтобы лучше увидеть, какая служба вызывает проблему или предотвратить сбой других служб, если служба вызывает сбой svchost.exe.
Если ваш компьютер имеет 3,5 ГБ памяти, вы можете заметить увеличение количества процессов в диспетчере задач. Хотя это изменение может показаться на первый взгляд, многие будут рады узнать мотивы этого изменения. По мере роста числа предустановленных служб они начали группироваться в процессы, известные как узлы служб (svchost.exe) в Windows 2000. Обратите внимание, что рекомендуемая для этого выпуска оперативная память для ПК составляла 256 МБ, а минимальная ОЗУ - 64 МБ. Из-за резкого увеличения объема доступной памяти с годами преимущество сервис-хостов в экономии памяти уменьшилось. Соответственно, разгруппирование сервисов на ПК с большим объемом памяти (3,5 ГБ ОЗУ) под управлением Windows теперь дает нам возможность делать следующее:
Повышение надежности: при сбое одной службы на узле службы происходит сбой всех служб на узле службы. Другими словами, сервис хост
процесс завершается, что приводит к прекращению всех работ
услуги в рамках этого процесса.Увеличьте прозрачность: диспетчер задач теперь даст вам лучшее представление о том, что происходит за кулисами. Теперь вы можете видеть, сколько ресурсов процессора, памяти, диска и сети потребляют отдельные службы.
Повышение безопасности: изоляция процессов и отдельные наборы разрешений для служб повысят безопасность.
Так что не волнуйтесь, это хорошее изменение в v1703, и все в порядке.
Но есть способ вернуть его. Это было обнаружено пользователем веб-сайта, который занимается настройкой Windows.
Итак, беги regedit.exe
, идти к HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
и создайте 32-битный DWORD SvcHostSplitThresholdInKB
и установите его на большое количество (больше по сравнению с установленной оперативной памятью).