Сжатие памяти в Windows 10/11: какие варианты?
Одна из главных задач любой операционной системы — эффективно распределять ресурсы компьютера. Особое внимание уделяется именно оперативной памяти. В Windows 10 появилась возможность управлять одним из типов памяти при помощи функции MM (она же Memory Management) с целью сжатия страниц с редким к ним обращением. Это призвано изменить объём операций записи/чтения на/с диска (речь сейчас идёт за пресловутый pagefile.sys), теоретически давая возможность пользователю поиграть с производительностью вцелом. Сжимая память мы сокращаем общий её объём, используемый на обслуживание каждого конкретного процесса. Тем самым (продолжая логическую цепочку) давая всё большему количеству приложений работать именно с RAM до обращения к pagefile на диске, чья скорость ниже, чем у планок оперативной памяти. Даже сейчас, когда HDD заменяются на гораздо более быстрые SSD.
Когда Менеджер памяти заставляет вносить запись в pagefile, данные, записываемые на диск или с него читаемые, уже сжаты в среднем на 40% по сравнению с оригинальным своим размером. Сжатие таким образом призвано улучшить производительность остальных процессов за счёт снятия (или хотя бы снижения) воздействия или влияния на общий объём данных при вводе/выводе информации уже на экране. В итоге пользователь должен заметить более быстрые запуск и ответ от приложений. Но как всегда здесь есть одно НО: производительность в части высвобождения памяти в этом случае ложится на плечи центрального процессора. Сжатие памяти ускоряет производительность системы за счёт уменьшения числа обращений к pagefile.sys, то бишь к диску (который — файл — конечно, никуда не удаляется). Но процессор при этом «немного поднагрузится». При этом следует учесть, что под улучшением производительности не стоит понимать именно УСКОРЕНИЕ системы. Если вы видите большой объём памяти в части сжатой в Диспетчере задач, и в этом вы вините именно нехватку памяти, есть смысл прибегнуть к:
- установке дополнительных планок оперативной памяти (увеличение физической памяти компьютера);
- или отключению сжатия памяти, перенося нагрузку на процессор.
Включено ли сжатие памяти сейчас?
- запускаем консоль Powershell от имени администратора
- вводим команду
Get-MMAgent
- проверяем вывод консоли. В части выводимых данных в строке MemoryCompression вы увидите либо False (Не Включено) либо True (Включено):
Как включить или выключить сжатие в Windows 10/11?
- Сжатие включается из той же консоли Powershell командой
Enable-MMAgent -mc
Результаты включения сжатия проявят себя при определённых обстоятельствах, то есть при серьёзной нагрузке на систему.
- Выключаем так:
Disable-MMAgent -mc
Обе операции подразумевают перезагрузку Windows.
ВНИМАНИЕ. При отключении сжатия Windows после перезагрузки может на некоторое время зависнуть.
Нужно ли включать сжатие памяти в Windows?
Вопрос, как вы поняли по предыдущим абзацам, скользкий. По идее система выбирает эту «настройку» самостоятельно. Однако мне лично известен случай, когда на компьютере со следующими характеристиками:
- Windows 10 Профессиональная
- Intel® Core™ i5 2,8 ГГц 6200U
- 16 ГБ RAM
пользователь начал замечать серьёзные лаги в части производительности при загрузке процессора в границах 80% и выше. Короче, играл напропалую. При этом владка Диспетчера с памятью не диагностировала подъём потребления выше 60%, а сжатие памяти было включено. В качестве пробы было принято решение ОТКЛЮЧИТЬ сжатие, после чего системные прерывания перестали перегружать процессор. Беспричинные задержки в работе Windows также прекратились. Не рассматривайте описанное как призыв к действию, просто бросьте в копилку знаний.
Успехов.
Функция сжатия оперативной памяти в Windows 10 и 11 используется для оптимизации использования RAM за счет хранения части страниц в оперативной памяти в сжатом виде (компрессия). Благодаря использованию сжатия памяти процессов вы можете размещать больше процессов в физической оперативной памяти без складывания их в своп файла на диске. Нужные данные извлекаются из более быстрой оперативной памяти быстрее, даже с учетом того, что на их сжатие/декомпрессию тратятся дополнительные ресурсы процессора. При использовании сжатия памяти уменьшается использование RAM, снижается нагрузка на жесткий диск за счет меньшего количества операций ввода/вывода к файлу подкачки и сохраняется ресурс SSD.
Впервые Microsoft добавила поддержку сжатия памяти процессом Memory Manager (MM) в Windows 10 и Windows Server 2016. В этой статье мы рассмотрим, как посмотреть статистику по использованию сжатой памяти в Windows, как включить или отключить сжатие RAM (если ваш компьютер работает медленно из-за высокой загрузки процессом Memory Compression).
Содержание:
- Получить информацию о сжатой памяти в Windows 10
- Процесс «Система и сжатая память» сильно грузит компьютер
- Как отключить сжатую память в Windows 10 и 11?
- Как включить сжатие памяти в Windows Server 2016/2019/2022 или Windows 10/11?
Если диспетчер памяти Windows обнаруживает нехватку памяти, он пытается сжать неиспользуемые страницы памяти вместо записи их в файл подкачки на диске и за счет этого освободить ресурсы RAM для других процессов.
Изначально поток, отвечающий за работу подсистемы сжатой памяти, находилась внутри процесса System, что было не очень удобно с точки зрения диагностики.
В современных билдах Windows (Win 10 20H2 и Windows 11) этот функционал выделен в отдельный процесс Сжатая память (Memory Compression), который не доступен в диалоговом окне диспетчера задач. Получить информацию об этом процессе можно с помощью PowerShell командлета Get-Process:
Get-Process -Name "Memory Compression"
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 0 0 2184 53104 1 810,95 2388 0 Memory Compression
В диспетчере задач Windows можно просмотреть только текущий уровень использования компрессии памяти.
Перейдите на вкладку Производительность (Performance), выберите раздел Память (Memory). Текущее значение использования сжатой памяти отображается в значении параметра Использование (сжатая)/ In Use (Compression). В моем примере Windows использует 4.4 Гб памяти, из которой в сжатом виде хранится 472 Мб. Чтобы понять, какой объем данных получилось сжать, нужно навести мышкой на график Структура памяти (Memory composition):
Используется сжатой памяти (471 Мб). В сжатой памяти хранится примерно 1721 Мб данных, освобождая для системы 1249 Мб памяти.
Как вы видите, уровень компрессии памяти достигает почти 400%, так что экономия RAM довольно большая.
Вы можете найти более подробную информацию о нагрузке на CPU процессом Memory Compression и его размер в памяти Windows 10/11 с помощью утилиты Process Explorer.
Запустите Process Explorer и найдите процесс Memory Compression в дереве процесса System.
Процесс сжатия памяти обслуживаются службой SysMain (ранее – SuperFetch). SysMain обеспечивает сокращение объёма записи на диск путём сжатия и объединения страниц памяти. Если эта служба остановлена, то в Windows не используется сжатие RAM.
Вы можете проверить состояние службы SysMain с помощью PowerShell:
get-service sysmain
В большинстве случаев, если Windows работает нормально и на нем установлен достаточный объём оперативной памяти, процесс «Сжатой памяти» работает отлично и не требует никакого вмешательства.
Процесс «Система и сжатая память» сильно грузит компьютер
Служба SysMain и процесс Memory Compression в подавляющем большинстве случаем улучшают производительность компьютера. Но иногда случается, когда процесс «Система и сжатая память» начинает сильно грузить процессор или жесткий диск компьютера (вплоть до 100%, это видно в диспетчере задач), или же занимать в памяти слишком много места. Компьютер, при этом, естественно, начинает сильно тормозить и подвисать.
Что делать в этом случае?
Я приведу 2 совета, которые должны помочь исправить проблему с высокой загрузкой системы процессом «Сжатая память».
- Отключите файл подкачки системы (опция Без файла подкачки), перезагрузите компьютер, включите файл подкачки (опция Автоматически выбирать размер файла подкачки) и еще раз перезагрузитесь.
- Если проблема высокой загрузки процессом «Сжатая память» возникает только при выходе из режима сна или гибернации (а после перезагрузки пропадает), попробуйте скачать и установить с сайта производителя последние версии драйверов для ваших дисковых контроллеров (ACPI/AHCI/RAI SCSI), дисков и видеокарты. После чего желательно отключить автоматическое обновление драйверов.
Если указанные манипуляции не помогли, можно попробовать полностью запретить Windows использовать сжатую память.
Как отключить сжатую память в Windows 10 и 11?
Если вы хотите проверить стабильность работы Windows без использования функции «сжатой памяти», можно временно отключать эту функцию. Для этого, откройте консоль PowerShell с правами администратора. Проверьте, включена ли сейчас опция компрессии памяти:
Get-mmagent
ApplicationLaunchPrefetching : True ApplicationPreLaunch : True MaxOperationAPIFiles : 512 MemoryCompression : True OperationAPI : True PageCombining : True
Строка MemoryCompression : True указывает на то, что сжатие памяти включено.
Чтобы отключить сжатую память, выполните:
Disable-MMAgent –MemoryCompression
И перезагрузите компьютер
Restart-Computer
Проверьте, изменилась ли общая производительность системы после отключения сжатой памяти.
В некоторых случаях пользователям для исправления проблемы со сжатой памятью рекомендуют:
- Отключить службу SysMain или SuperFetch (
services.msc
-> SysMain-> тип запуска Отключена). Это отключит в Windows 10/11 современные процессы оптимизации памяти; - Отключит задание обслуживания системы в планировщике RunFullMemoryDiagnosticEntry (Task Scheduler -> Библиотека планировщика -> Microsoft -> Windows -> MemoryDiagnostic -> RunFullMemoryDiagnosticEntry ->Отключить);
- Попробуйте отключить драйвер мониторинга сетевой активности (Network Data Usage — NDU (описано статье про невыгружаемый пул памяти Windows);
- Отключите проверку в реальном времени в вашем антивирусе. Возможно он некорректно работает со сжатой памятью;
- Проверьте целостность системных файлов образа Windows с помощью DISM и SFC.
Эти советы могут помочь избавится от чрезмерной нагрузки на компьютер со стороны процесса «Сжатая память». Но при этом отключаются базовые подсистемы оптимизации производительности Windows, что может негативно сказаться на общей производительности компьютера.
Как включить сжатие памяти в Windows Server 2016/2019/2022 или Windows 10/11?
Во всех версиях Windows Server сжатие памяти по-умолчанию отключено.
Выполните команду
Get-mmagent
, чтобы проверить что сжатие памяти отключено. На скриншоте ниже мы показали, что в Windows Server 2022 значение Memory Comression = False.
Чтобы Windows могла использовать сжатие памяти, должны быть выполнены следующие условия:
- Включен файл подкачки (хотя бы минимального размера – 16 МБ);
- Служба SysMain должна быть запущена;
- Используется Windows 10/11 или Windows Server 2016+ (можно узнать версию Windows с помощью команды winver или с помощью PowerShell).
Чтобы включить сжатие памяти, выполните команду:
Enable-MMAgent -MemoryCompression
Перезагрузите компьютер.
При включении сжатия памяти автоматически включается еще одна функция SysMain — page combining. Эта функция диспетчера памяти используется для объединения страниц памяти с одинаковым содержимым (своеобразная дедупликация в RAM).
Технология «Сжатой памяти» в Windows 10 и 11, как правило работает довольно эффективно и не требует никаких вмешательств. Если сжатие памяти вызывает проблемы на вашем компьютере, скорее всего у вас имеются проблемы с настройками Windows, оборудованием или драйверами. В случае необходимости, функцию сжатия памяти можно совсем отключить.
Производительность компьютера зависит от многих факторов, обуславливаемых не только объемом ресурсов компонентов «железа», но и их правильным распределением. С целью такого улучшения распределения в Windows была разработана и внедрена функция сжатия оперативной памяти, позволяющая уменьшить количество операций чтения/записи области медленной виртуальной памяти, известной как файл подкачки.
Компрессия/декомпрессия страниц осуществляется силами процессора, тем не менее, получаемый профит в скорости обмена данными памяти покрывает избыточную загрузку CPU.
На деле, конечно, не всё так однозначно. Взвесить все «за» и «против» использования функции сжатия памяти можно лишь протестировав функцию на конкретном компьютере, но сначала ее нужно включить, если она по какой-то причине оказалась отключена.
Изначально управляющий подсистемой сжатой памяти поток находился внутри системного процесса System, в Windows 10 1511, а затем и в Windows 1607 он был вынесен в отдельный скрытый процесс, недоступный для просмотра в Диспетчере задач. Просмотреть в оном на вкладке «Производительность» можно лишь объем используемой сжатой памяти.
Также получить сведения о сжатой памяти можно командой:
Get-Process -Name «Memory Compression»
В запущенной от имени администратора консоли PowerShell.
Если же нужно проверить, включена ли сжатая память или нет вообще, выполняем команду Get-MMAgent и смотрим значение параметра MemoryCompression.
True будет означать, что функция сжатия памяти активна, False — что она в данный момент отключена.
Чтобы включить функцию, выполняем команду:
Enable-MMAgent -mc
Чтобы отключить:
Disable-MMAgent -mc
Новая конфигурация применяется после перезагрузки компьютера.
В большинстве случаев функция «Сжатая память» работает корректно, не требуя со стороны пользователя никаких действий и вполне оправдывая свое назначение, но гарантии, что так будет всегда, нет никакой.
Если вы заметили, что функция грузит процессор (в последних версиях Windows ее процесс виден и имеет название «Система и сжатая память»), ее можно отключить, хотя вообще-то это следует считать радикальным решением.
Столкнувшись с загрузкой функцией процессора, попробуйте для начала отключить файл свопа, а затем, перезагрузившись, включить его вновь опцией «Автоматически выбирать размер файла подкачки».
Загрузка…
Memory is an important factor in processing different tasks faster. Since it is electronic memory, it is costly and most people cannot afford a huge amount of RAM. Also, there is a limit on RAM that the operating systems can support. But the Memory Compression feature in Windows 11 and Windows 10 makes sure that you are getting optimal and balanced usage of RAM along with the page file. The new OS comes with memory optimization that incorporates compression of data occupying the electronic memory. The article talks about how older Windows versions managed memory, what is the memory compression feature and how Memory Compression works in Windows 11/10.
(Image Credit: Microsoft)
Memory Management in older Windows versions
In Windows, the whole memory thing is divided into three distinct parts:
- Random Access Memory (Electronic Memory)
- Pagefile (Extension of RAM on Hard Disk)
- Hard Disk and other types of storage systems
In the older versions, it was necessary to allow a good amount of hard disk space to pagefile.sys that acted as an extension of the electronic memory. Memory management in older versions of Windows was simple and straight. Store the currently running applications and related data to electronic memory and send the least used data to pagefile.sys. While the traditional application resided in the main memory, the data part was often pushed to pagefile if it is not used for long. If the capacity of pagefile was exceeded, the data on pagefile was replaced, according to a post on Insider Hub. In that case, if the application – that was still in the electronic memory – required old data, it was again to be loaded into the RAM from the hard disk or other storage devices – which means it took more time to read or write data.
In other words, applications and most recent data are to reside in RAM, frequently used data by current applications stayed in pagefile.sys and the hard disk was accessed when a new set of data had to be read or written. This includes data not present on pagefile – the data that may have been replaced with a new set.
Memory Management in Windows 11/10 – The App Pagefiles
With Windows 11/10, memory management changed a little. There were two types of applications in Windows 8/8.1. The traditional applications still worked as explained above. Part of them stayed in RAM while the required data was stored to pagefile when the applications were idle and when the RAM was full.
The modern apps ran only when they were in focus. If you opened app A and app B and are currently working on app A, app B along with related data would be pushed back to the pagefile. That way, app A can have good access to memory and need not reach out to pagefile for every fetch process. When you sent app A to the background by focusing on app B, app A and related data would go to pagefile while app B gets exclusive access to RAM.
This method saved on memory and made apps faster. With Windows 11/10, the compression feature was added to make it even faster. The following section explains how it works in Windows 11/10.
Memory Management in Windows 11/10 – Compression over Pagefile
The memory management is the same as that of Windows 8/8.1. The traditional apps are stored in electronic memory and focused apps are also stored in RAM. If RAM becomes congested due to excess data, the app and data things are compressed up to 40% and accommodated in the same electronic memory.
Windows 11/10 too uses pagefile.sys to store data of the electric memory. If an app is using too much data but at slower intervals, some of its data is pushed to pagefile if electronic memory is short of free space. If the app becomes aggressive, the data is moved back from pagefile to the electronic memory and some other app is pushed to pagefile to make space for the current app. Only in rare cases, the hard disk is approached: when a new set of data or app is to be loaded or when the data required by an app is not present on either RAM or pagefile.
Memory Compression in Windows 11/10 optimizes RAM usage
Windows 11/10 too has two categories of apps: UWP and Traditional. The traditional applications are stored separately in electronic memory while the modern apps each have their own stack. This makes it easier to push modern apps and related data to pagefile when you open too many apps in a way that memory falls short despite compression.
It saves about 50% of pagefile activity (compared to older versions of Windows) when you are using the memory compression feature in Windows because most of the data is already available on the main memory – in a compressed form. When the app or data is required, it is decompressed and used. So there is the need to keep a portion of RAM empty to provide for uncompressed data.
Even when using pagefile, the speed is faster in Windows 11/10 because the entire app and related data are stored as a compressed page which is accessed in sequential order. While part of the data is being uncompressed, the other part is sent to the main memory for processing. This too saves time and makes computing faster on Windows 11/10 machines.
How to check if Memory Compression is enabled in Windows?
The simplest way to check if Memory Compression is enabled or disabled is:
- Open the Task Manager
- Select the Performance tab on the top
- Click on Memory on the left side
- There in the right panel you will see In use (Compressed)
- This indicated that Memory Compression is enabled on your PC.
Open an elevated PowerShell window.
To check if memory Compression is enabled or disabled, execute the following command:
Get-MMAgent
If you see true against memory compression, it means that it is enabled. If you see false, it means that it is disabled.
Execute the following command to disable Memory Compression:
Disable-MMAgent -mc
Execute the following command to enable Memory Compression:
Enable-MMAgent –mc
Hope this helps.
Now read: System Compression in Windows and how it saves space on devices.
Если заглянуть в раздел «Производительность» — «Память» диспетчера задач Windows 11/10, вы можете увидеть пункт «Используется (Сжатая)». В более ранних версиях системы такого понятия как «сжатая» память не было и имеет смысл разобрать, что это такое.
На близкую тему могут быть полезными статьи: Что такое Кэшированная оперативная память Windows, Что делать, если невыгружаемый пул занимает память в Windows.
Как работает сжатие памяти в Windows
Как было отмечено выше, посмотреть количество сжатой памяти можно, зайдя в диспетчер задач (правый клик по кнопке Пуск — выбор соответствующего пункта меню) на вкладке «Производительность» в разделе «Память». Что такое сжатая память?
Предположим, что запущенные на вашем компьютере программы и сама операционная система требуют 20 Гб оперативной памяти для работы, а в наличии — лишь 16 Гб. Что при этом происходит?
- В предыдущих версиях Windows «избыточные» данные, то есть как минимум 4 Гб выгружались в файл подкачки на вашем жестком диске или SSD.
- Начиная с Windows 10 и такое поведение сохранилось в Windows 11, часть неиспользуемых в настоящий момент данных сжимается в оперативной памяти, то есть производится своего рода архивация прямо в оперативной памяти, без помещения страниц памяти на диск. Файл подкачки продолжает использоваться, но обращаться к нему приходится реже.
Второй подход сокращает потребность в обращении к HDD или SSD, ускоряет доступ к данным при необходимости, а также сокращает необходимый для работы объем оперативной памяти. Сжатие и распаковка данных в памяти требуют использования ресурсов процессора, однако, выигрыш в скорости по сравнению с файлом подкачки на диске должен быть и с учётом этого фактора.
В случае, если на вашем компьютере или ноутбуке нет нехватки оперативной памяти или множества запущенных, но не используемых программ и процессов, вероятнее всего вы почти никогда не увидите больших чисел в разделе «Сжатая память» — управление памятью Windows достаточно эффективно, чтобы не использовать её там, где это не требуется.
И, наоборот, на системах, где вопрос доступной оперативной памяти стоит остро, а в самой RAM есть достаточно данных, которые не требуют немедленного доступа, сжатая память может использоваться достаточно активно.
В первых версиях Windows 10, сжатое хранилище в памяти (compression store в терминологии Microsoft) отображалось как память, используемая процессом «System» или «Система и сжатая память».
В последних версиях ОС мы можем наблюдать используемую сжатую память в диспетчере задач, а не в памяти, используемой процессами, что должно снизить переживания некоторых пользователей, которые ранее часто обращались с вопросом: Что делать, если Система и сжатая память грузит процессор или RAM.