Сегодня я обновился до 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
и задайте для него большое число (большее по сравнению с установленной оперативной памятью).