Изменилось ли поведение svchost.exe в Windows 10 Creators Update (сборка 1703)?

Изменилось ли поведение svchost.exe в Windows 10 Creators Update (сборка 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 Update, если вы используете ПК с более чем 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и задайте для него большое число (большее по сравнению с установленной оперативной памятью).

Связанный контент