Пользователи Windows 11 и Windows 10 могут столкнуться с тем, что Служба узла SysMain, наблюдаемая в диспетчере задач активно нагружает процессор, вплоть до 100%, в некоторых случаях также можно заметить повышенную нагрузку на диск. Сценарий может отличаться: это может быть повышенная нагрузка каждый раз при входе в систему в течение некоторого времени, случайные всплески активности или другие варианты.
В этой инструкции подробно о том, за что отвечает служба SysMain, что делать, если она вызывает повышенную нагрузку на ресурсы компьютера, о возможных причинах такого поведения и дополнительная информация, которая может оказаться полезной в контексте рассматриваемой темы.
Назначение службы SysMain
Служба SysMain в Windows присутствует уже давно, но ранее называлась SuperFetch. Назначение службы — увеличивать скорость загрузки системы, запуска приложений и общую отзывчивость системы по мере использования.
Это достигается следующими методами:
- Для ускорения загрузки ОС SysMain вычисляет оптимальный шаблон загрузки системных процессов в память: эти вычисления проводятся в фоновом режиме во время простоя компьютера и повышенная нагрузка со стороны SysMain в эти моменты — нормальное явление. Данные записываются службой в папку C:\Windows\Prefetch
- Служба анализирует то, какие программы чаще всего запускает пользователь (и система в фоновом режиме) и использует механизмы предварительной загрузки (префетчинг), кэширования кода и функций программ в оперативной памяти, а также объединения странниц памяти для более быстрого доступа к ним в дальнейшем и повышения производительности.
- Работа функции сжатия памяти также обеспечивается службой SysMain — эта функция сжимает неиспользуемые данные в оперативной памяти для снижения обращений к файлу подкачки.
Обычно служба узла SysMain не вызывает повышенной нагрузки ни в отношении процессора, ни для других ресурсов компьютера, за исключением кратковременных скачков при штатном выполнении тех или иных операций.
Как исправить высокую нагрузку SysMain
В некоторых случаях, особенно на старых и ограниченных в ресурсах компьютерах, эффект от работающей службы может быть обратный заявленному: вместо повышения производительности — постоянная или очень продолжительная нагрузка, обычно — на процессор, со стороны SysMain, не позволяющая нормально работать за компьютером.
Возможные причины высокой нагрузки на CPU, RAM и диск
Это может быть вызвано следующими факторами:
- Малым объемом оперативной памяти — обычно о проблемах с узлом службы SysMain сообщают пользователи компьютеров с 4 Гб RAM или менее. Пользователи с объемом ОЗУ 16 Гб и более редко сталкиваются с проблемой при условии исправной системы.
- Медленным жестким диском (особенно на ноутбуке), ошибками файловой системы, аппаратными проблемами с диском, малым количеством свободного места на системном разделе диска.
- В некоторых случаях изменить поведение службы SysMain в худшую сторону может отключение файла подкачки Windows. Если вы это делали, попробуйте снова включить файл подкачки. Инструкция по настройке файла подкачки в Windows.
- Сторонние программы очистки оперативной памяти, или «ускорения в играх» также могут вызывать постоянную высокую нагрузку со стороны службы SysMain (поскольку иногда мешают её исправной работе). При наличии таких программ проверьте, проявляется ли проблема, если отключить их автозагрузку и работу в фоновом режиме.
- Работа сторонних антивирусов и системных служб потенциально также может повлиять на работу службы. Можно проверить, наблюдается ли проблема в режиме чистой загрузки Windows.
Отключение службы SysMain
Самый простой и быстрый способ снизить нагрузку службы SysMain, а точнее — полностью устранить её — отключить эту службу. Служба не является обязательной и её отключение не приведёт к неполадкам, однако, в зависимости от конкретной системы может привести как к ухудшению общей производительности, так, иногда — и к её улучшению.
Примечание: в общем случае, при отсутствии проблем с работой службы SysMain её отключение не рекомендуется, в том числе и для современных ПК и ноутбуков с SSD.
Для отключения службы SysMain вы можете использовать один из следующих способов:
- Нажать клавиши Win+R на клавиатуре, ввести services.msc в окно «Выполнить» и нажать Enter. В списке служб найти SysMain, дважды нажать по службе, остановить службу, установить тип запуска в «Отключена» и нажать «Ок».
- Запустите командную строку от имени администратора и введите команду
sc stop "SysMain" & sc config "SysMain" start=disabled
- Откройте редактор реестра, перейдите в раздел
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SysMain
измените значение параметра Start на 4, примените настройки и перезагрузите компьютер.
Отключение компонентов SysMain
Вторая возможность — отключение отдельных компонентов SysMain, сделать это можно с помощью Windows PowerShell:
- Запустите Терминал Windows или Windows PowerShell от имени администратора — сделать это можно в меню по правому клику на кнопке «Пуск».
- Введите команду Get-MMagent чтобы получить сведения о состоянии компонентов SysMain, по умолчанию для всех из них (кроме третьего и последнего) будет указано True
- Для включения или отключения компонентов (кроме ApplicationLaunchPrefetching) вы можете использовать команды
Enable-MMagent -имя_компонента
и
Disable-MMagent -имя_компонента
соответственно
- Для отключения ApplicationLaunchPrefetching зайдите в редактор реестра в раздел
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters
и установите значение 0 для параметра EnablePrefetcher (значение по умолчанию — 3).
Назначение компонентов SysMain:
- ApplicationLaunchPrefetching — префетчинг запуска приложений
- ApplicationPreLaunch — предварительный запуск приложений
- MemoryCompression — сжатие памяти
- OperationAPI — API для доступа к службе SysMain из других приложений
- PageCombining — объединение одинаковых страниц оперативной памяти
В случае, если высокая нагрузка на процессор вызвана работой конкретного компонента, его отключение должно решить проблему без необходимости полного отключения службы SysMain.
Все способы:
- Что за это за служба
- Вариант 1: Отключение SysMain
- Способ 1: «Командная строка»
- Способ 2: «Службы»
- Способ 3: «Редактор реестра»
- Вариант 2: Обновление системы
- Вариант 3: Установка актуальных драйверов для компонентов
- Вариант 4: Переустановка/откат системы
- Вопросы и ответы: 1
Что за это за служба
SysMain преимущественно взаимодействует с физической и оперативной памятью и является интеллектуальной функцией, которая мониторит действия пользователя на ПК, оптимизируя и ускоряя работу системы. Такое отслеживание позволяет быстрее запускать чаще всего используемые приложения.
В некоторых случаях со службой возникают проблемы, и она начинает грузить диск в Виндовс 10. В результате компьютер подвисает и тормозит, а пользователь «вылетает» на рабочий стол из приложений. Это происходит из-за высокой нагрузки на жесткий диск или центральный процессор. Чтобы исправить ситуацию, можно временно отключить службу, но есть и другие способы избавиться от неполадки.
Вариант 1: Отключение SysMain
Если SysMain сильно нагружает компоненты системы, что можно проверить в «Диспетчере задач», то есть возможность ее отключить, используя штатные средства Windows. При этом функция не сможет дальше отслеживать деятельность и оптимизировать скорость работы при нормальных обстоятельствах.
Способ 1: «Командная строка»
Самый простой способ отключить процесс — это воспользоваться штатным средством «Командная строка»:
- Запустите «Командную строку» от имени администратора. Существует несколько способов сделать это.
Подробнее: Запуск «Командной строки» от имени администратора в Windows 10
- Скопируйте и вставьте команду
sc config SysMain start=disabled
и нажмите на клавишу «Enter».
После этого служба SysMain отключится и перестанет грузить диск. Вновь запустить ее через «Командную строку» можно с помощью команды sc config «SysMain» start=auto && sc start «SysMain»
.
Способ 2: «Службы»
Один из вариантов отключения работы службы — это использование приложения «Службы», которое, по сравнению с предыдущим способом, позволяет более тонко настроить работу SysMain:
- Одновременно зажмите клавиши «Win + R», чтобы вызвать диалоговое окно «Выполнить». Впишите команду
services.msc
в специальной строке и кликните по кнопке «ОК», чтобы быстро запустить приложение. - В разделе «Локальные» найдите службу «SysMain». Пункты можно упорядочить по алфавиту, нажав на вкладку «Имя». Щелкните правой кнопкой мыши по названию и вызовите «Свойства».
- На вкладке «Общие» в меню «Тип запуска» выберите из раскрывающегося перечня пункт «Отключена», а в разделе «Состояние» кликните по кнопке «Остановить». Нажмите на «ОК», чтобы применить настройки.
Через приложение «Службы» аналогичным образом можно вновь запустить SysMain, выбрав опцию автоматического или ручного запуска и нажав на соответствующую кнопку.
Способ 3: «Редактор реестра»
Чтобы остановить работу SysMain, можете изменить один из параметров реестра Windows 10:
- Найдите и запустите приложение «Редактор реестра», используя поиск в «Пуске».
- На панели слева в каталоге «HKEY_LOCAL_MACHINE» разверните папку «SYSTEM». Затем откройте «CurrentControlSet» и папку со службами «Services».
- Нажмите на «SysMain» в списке, в результате чего справа отобразятся параметры службы. Найдите «Start» и кликните по ней правой кнопкой мыши. Из контекстного меню выберите пункт «Изменить».
- В строке «Значение» вместо «2» введите «4» и нажмите на кнопку «ОК».
После изменения параметров через «Редактор реестра» потребуется перезагрузить ОС, чтобы новые настройки вступили в силу.
Вариант 2: Обновление системы
Некорректная работа штатных служб, включая SysMain, может происходить из-за неудачно обновленной или устаревшей версии операционной системы. Microsoft регулярно выпускает апдейты, оптимизирующие ОС, избавляющие от ошибок и улучшающие безопасность пользовательских данных. Проверьте наличие актуальных компонентов вручную, если отключена автоматическая функция. Для этого предусмотрены фирменные утилиты, встроенное средство «Центр обновлений», а также сторонний софт. В нашем отдельном материале более детально описаны все способы с пошаговыми инструкциями.
Подробнее: Обновление Windows 10 до последней версии
Вариант 3: Установка актуальных драйверов для компонентов
Обновления для программных и аппаратных компонентов также желательно устанавливать по мере их выхода — это обеспечивает стабильную работу Windows 10. Если драйверы устройства устарели или в их работе произошел сбой, то это может привести к различным последствиям, в том числе и к упадку производительности компьютера.
Существует множество способов обновить драйверы, например, в самой среде ОС есть встроенные средства для проверки и загрузки актуальных версий. Также для этого используют специализированный софт или официальные сайты производителей оборудования, например для графических адаптеров. Наш автор подробно разбирал все эффективные методы по обновлению драйверов в Windows 10.
Подробнее: Обновляем драйверы в Windows 10
Вариант 4: Переустановка/откат системы
Постоянно отключать одну из важных служб, оптимизирующих систему, нецелесообразно, поэтому попробуйте лучше устранить неполадку. Если ни один из вышеописанных вариантов не помог избавиться от проблемы, при которой SysMain грузит диск, то нужно задуматься о переустановке или откате ОС.
Переустановить «десятку» можно несколькими способами. Встроенные средства предлагают откат к предыдущему состоянию системы или же полный сброс настроек и параметров до заводского состояния. Также можно инсталлировать «чистую» ОС с носителя, например с установочной флешки или оптического диска. В нашей статье на сайте автор разбирал все способы переустановки ОС. Следует отметить, что после процедуры все настройки и приложения будут удалены, а данные, если они хранились на основном локальном диске, где стояла операционка, также могут пропасть, если не создать резервную копию.
Подробнее: Способы переустановки Windows 10
При наличии возможности можно установить твердотельный накопитель SSD под ОС, поскольку он работает гораздо быстрее, чем классический HDD. Из наших руководств вы узнаете, как выбрать его, правильно подключить накопитель и настроить его под операционную систему.
Подробнее:
Настройка SSD под Windows 10
Наша группа в TelegramПолезные советы и помощь
В интернетах бытует устойчивое мнение, что служба SysMain (ранее – SuperFetch) абсолютно не нужна в Windows, установленной на SSD. Якобы недалекие разработчики Microsoft не понимают, что префетчинг не дает никакого ускорения на твердотельном диске, и нам приходится учить глупую ОС новой реальности, отключая службу.
К сожалению, эти тезисы основаны на устаревшей информации и не учитывают изменений, произошедших в Windows 10. Отчасти в этом виновата Microsoft, ограничившая доступ к документации центром отзывов.
На самом деле служба сокращает объем записи на диск за счет сжатия и объединения страниц памяти, повышая производительность под нагрузкой. Ее отключение прекрасно вписывается в мифы оптимизации SSD. Обновить их в этом контексте меня давно подталкивал читатель блога Арслан, а последней каплей стала пара дискуссий в форуме. Рассказ о сжатии памяти в сокращенном виде и без анонсов я добавил к разбору мифов еще в январе, а сегодня публикую полный материал в качестве отдельной записи.
[+] Сегодня в программе
Начиная с Windows 10 отображаемое в графическом интерфейсе имя службы Superfetch сменилось на SysMain, что соответствует фактическому названию службы. Видимо, так Microsoft обозначила смещение основного назначения службы с унаследованного из старых ОС префетчинга приложений к новой функции — сжатию памяти (memory compression).
Компания опубликовала рассказ о технологии еще в августе 2015 года, но почему-то исключительно в приложении Центр отзывов (копия в PDF). Как следствие, информация прошла мимо многих пользователей Windows. Ниже мое краткое объяснение и дополнительные сведения.
Принцип работы
Когда диспетчер памяти ощущает недостаток памяти, он не сбрасывает неиспользуемые страницы памяти на диск, а сжимает их. В файл подкачки запись ведется лишь в том случае, когда алгоритмы диспетчера памяти определяют, что сжатие не компенсирует недостаток памяти.
Хранящаяся в памяти коллекция сжатых страниц называется compression store. Система использует единое хранилище для всех приложений (Win32 и UWP), а также индивидуальные хранилища для всех приложений Windows Runtime, обеспечивающие тримминг и своп. Вместо записи страниц в файл подкачки, диспетчер памяти сжимает их и помещает в соответствующее хранилище.
Как ни странно, в документе ничего не говорится про еще одну функцию службы SysMain — объединение страниц памяти (page combining). Диспетчер памяти определяет страницы с одинаковым содержимым и объединяет их. Эта функция работает в рамках службы независимо от сжатия памяти.
Снижение объема записи на диск
За счет сжатия и объединения страниц памяти сокращается число операций ввода-вывода и соответственно снижается объем записи на диск. Поэтому бессмысленно отключать службу SysMain ради экономии ресурса SSD.
В 2019 году эта экономия вызовет усмешку у многих владельцев SSD, особенно у неоднократно сменивших вполне рабочие диски на более емкие и производительные. Но шесть лет назад хватало людей, озабоченных смертью накопителя от исчерпания циклов перезаписи. Думаю, и сейчас они есть (число комментариев к мифам застыло на отметке 991 лишь потому, что я когда-то массово отключил обсуждение старых записей
Но сжатие памяти в любом случае внедрялось не для этого.
Повышение производительности под нагрузкой
Польза от оптимизации ОС проявляется в ситуациях, когда аппаратных ресурсов не хватает. Сжатие памяти нацелено на сценарий, когда вся память занята, и приходится сбрасывать ее на диск, теряя производительность при подкачке.
Наибольший эффект от технологии проявляется при сочетании недостатка памяти с существенной дисковой нагрузкой.
Сжатие памяти приносит больше пользы медленным, чувствительным к подкачке дискам — HDD и eMMC. Твердотельный накопитель нагрузить под завязку сложнее, но если вам это удалось, то избавление от лишних операций I/O лишним не будет.
Визуальные индикаторы сжатия памяти
В статье Microsoft вообще не упоминается служба SysMain, однако ее связь со сжатием памяти несложно вычислить экспериментальным путем. Кроме того, документ опубликовали перед выходом первой стабильной версии Windows 10, и лишь спустя год, в версии 1607, добавили наглядные сведения о сжатой памяти в диспетчер задач.
Когда служба SysMain включена, вы можете открыть диспетчер задач на вкладке Производительность и в разделе Память убедиться в использовании сжатой памяти, а также увидеть дополнительные сведения, наведя курсор на область Структура памяти.
Также, в Process Explorer вы можете увидеть в дереве процесса System процесс Memory Compression (это был единственный наглядный способ на момент выхода Windows 10). Наконец, с помощью PowerShell вы можете получить текущий статус сжатия памяти командлетом Get-MMagent.
Если же служба SysMain отключена, сжатая память не работает, что видно по тем же показателям.
Компоненты службы SysMain
У службы пять компонентов, и вы можете проверить их статус в PowerShell от имени администратора командлетом Get-MMagent (MM – Memory Management, т.е. агент управление памятью). На картинке ниже стандартное состояние компонентов (в Windows 10 значение MaxOperationAPIFiles по умолчанию 256, а в Windows 11 — 512.)
Управление новыми компонентами SysMain осуществляется командлетами Enable-MMagent и Disable-MMagent. Префетчинг, унаследованный из старых ОС, контролируется только в реестре (для указанных в документации параметров PowerShell запрос не поддерживается). Напомню, что суть префетчинга в том, чтобы ускорять операции, которые регулярно обращаются к одним и тем же данным на диске.
Сводная таблица компонентов службы и методов управления ими.
Компонент | Назначение | Управление |
---|---|---|
MemoryCompression | Сжатие памяти | PowerShell |
PageCombining | Объединение страниц памяти с одинаковым содержимым | |
ApplicationPreLaunch | Предугадывание запуска приложений начиная с Windows 10 | |
ApplicationLaunchPrefetching | Системный префетчинг запуска приложений, появившийся в Windows XP | Реестр |
OperationAPI | Предоставление другим приложениям доступа к системному префетчингу через API |
Вы можете включать и выключать отдельные компоненты службы, и я покажу примеры в контексте диагностики.
Диагностика компонентов службы SysMain
В случае аномального поведения службы (например, высокой нагрузки на CPU или диск), можно попробовать определить, является ли причиной тот или иной компонент SysMain. Если у вас командлет Get-MMagent выдает картинку, отличную от приведенной выше, приведите службу в порядок. Вставьте код ниже в PowerShell от имени администратора и перезагрузитесь.
#если служба не запущена, запустить и установить автоматический тип запуска if ((Get-Service sysmain).status -ne "Running") { Start-Service sysmain Set-Service sysmain -StartupType Automatic } #включить все компоненты службы Enable-MMagent -MemoryCompression Enable-MMagent -PageCombining Enable-MMagent -ApplicationPreLaunch Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters" -Name EnablePrefetcher -Value 3
Скрипт включает службу и все компоненты, а также устанавливает для SysMain автоматический тип запуска. Если ситуация не исправилась, смотрите в сторону проверки компонентов и системных файлов и исключения сторонних факторов.
Когда проблема возникает при стандартном состоянии службы, можно вести диагностику методом половинного деления. Конечно, нет гарантий, что проблема в конкретном компоненте, но попытка – не пытка. Отключите все компоненты службы, а затем включайте их порционно, отслеживая поведение системы (не забывайте перезагружать ОС после каждой операции).
Синтаксис командлетов PowerShell простой – в качестве параметра передается название компонента. Например, команды для отключения и включение сжатия памяти:
Disable-MMagent -MemoryCompression Enable-MMagent -MemoryCompression
Префетчингом управляет параметр EnablePrefetcher в разделе реестра
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters
Его стандартное значение 3 включает префетчинг Windows и его API для сторонних приложений, 2 оставляет только API, а 0 отключает полностью.
Заключение
Я исторически ратую за подробную документацию по продуктам Microsoft, и случай с SysMain является одним из худших примеров. Описание главной системной службы погребено в центре отзывов и никак не связано с фрагментами информации в блоге инсайдерской программы и справкой по командлету PowerShell, у которого в свою очередь не работают параметры управления унаследованными компонентами. Все это никак не способствует повышению уровня технических знаний и принятию информированного решения при настройке службы.
Да, у Microsoft есть официальные рекомендации по настройке служб Windows Server 2016 с Desktop Experience, которые с оговорками можно распространить на клиентские Windows. Там не рекомендуется изменять тип запуска службы (именно это означает ремарка No guidance
). При этом в документе указан ручной тип запуска, а в Server 2019 и Windows 10 он автоматический. Но эти сведения опять же никак не связаны с техническим описанием службы.
Этой статьей я свожу всю известную мне информацию о SysMain воедино и восполняю пробел в документации. Если у вас отключена служба или ее отдельные компоненты, напишите в комментариях, чем вы руководствовались.
Проблемы с производительностью — это всегда повод заглянуть в Диспетчер задач, ведь именно там чаще всего можно найти подсказку, указывающую на причину неполадки. Сегодня мы постараемся разобраться с одной из таких неполадок, а именно с высокой загрузкой жёсткого диска системным процессом SysMain, известным в более ранних версиях Windows как Superfetch. В Windows 10 служба SysMain отвечает за сокращение объёма записи на диск путём сжатия и объединения страниц памяти. Когда оперативной памяти не хватает, данные не перемещаются в файл подкачки, а сжимаются и только когда диспетчер памяти понимает, что одного сжатия оказывается недостаточно, страницы сбрасываются в pagefile.sys.
Служба узла SysMain грузит диск Windows
Фактически это означает сокращение числа операций ввода-вывода на жёсткий диск, следовательно, точка зрения, согласно которой нужно отключать службу SysMain на ПК с SSD-дисками ради экономии их ресурса, не имеет под собой сколь-либо серьёзных обоснований. Из этого можно сделать вполне логичный вывод, что отключать SysMain нежелательно, но как быть если SysMain сама начинает грузить диск? Такое аномальное поведение службы может быть связано с некорректной работой одного из её компонентов, повреждением системных файлов и наличием ошибок на самом жёстком диске.
Проверьте статус компонентов службы
Первое, что можно сделать при обнаружении повышенной загрузки процессом SysMain, это перезагрузить компьютер или перезапустить службу SysMain из оснастки управления службами. Если ситуация не изменится, проверьте состояние компонентов службы SysMain. Для этого откройте с повышенными правами консоль PowerShell и выполните команду Get-MMagent. В результате в окно консоли будут выведены семь параметров, из которых обращаем внимание на следующие:
• MemoryCompression — отвечает за сжатие памяти.
• PageCombining — объединяет страницы памяти с идентичным содержимым.
• ApplicationPreLaunch — отвечает за ускорение запуска часто используемых программ.
• ApplicationLaunchPrefetching — обеспечивает системный префетчинг запуска приложений.
• OperationAPI — предоставляет к SysMain доступ другим программам через API.
В идеале все эти компоненты должны быть включены, то есть иметь значение True. Если какой-то из указанных компонентов отключен (имеет значение False), включите его, выполнив в PowerShell команду Enable-MMagent -имя-компонента, например, Enable-MMagent -ApplicationPreLaunch.
Исключение составляет префетчинг (ApplicationLaunchPrefetching), включается и отключается он через системный реестр. Чтобы его включить, откройте командой regedit редактор реестра, разверните ветку HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters и измените значение расположенного в правой колонке параметра EnablePrefetcher. Значение 3 активирует префетчинг Windows и его API для стороннего ПО, значение 2 включает только API, 0 — отключает компонент полностью.
Если служба узла SysMain грузит диск, будучи включена со стандартными настройками, отключите все компоненты и службы, а затем включайте их один за другим, перезагружая каждый раз компьютер и отслеживая реакцию операционной системы на изменённую конфигурацию. Напоминаем, что отключить компонент в PowerShell можно командой Disabled-MMagent -имя-компонента.
Отсутствие положительного результата станет означать, что загрузка диска процессом SysMain связана с чем-то другим, в частности, с повреждением системных файлов и наличием ошибок на жёстком диске. Соответственно, в этом случае необходимо проверить физическое состояние диска и просканировать Windows на предмет повреждение или отсутствия системных файлов штатными утилитами SFC и Dism. Дополнительно следует исключить сторонние факторы — отключить службы сторонних приложений и проанализировать автозагрузку, убрав из неё всё лишнее.
В крайнем случае вы можете отключить саму службу SysMain в оснастке управления службами, установив для неё тип запуска «Отключена», а затем нажав «Остановить». Надо, однако, отметить, что остановка службы SysMain не является окончательным решением, поэтому прибегать к нему стоит лишь тогда, когда другие способы устранения неполадки оказались неэффективными.