Найти в Дзене
Т.Е.Х.Н.О Windows & Linux

Сжатие памяти: Глубокая настройка агрессивности в Windows 11 (25H2) и Linux (Kernel 6.17+)

👋 Когда "достаточно" памяти никогда не бывает достаточно Привет, цифровые кочевники! На связи команда T.E.X.H.O. Сегодня у нас на операционном столе тема, которая делит IT-сообщество на два непримиримых лагеря. Одни кричат: "Отключай всё, память должна быть сырой и быстрой!", другие крутят пальцем у виска: "Ты что, хочешь убить свой SSD своппингом?". Речь пойдет о Memory Compression (сжатии памяти). На дворе декабрь 2025 года. Вышла Windows 11 25H2 с обновленным Диспетчером задач, который теперь показывает "CPU Utility" вместо старого доброго usage, окончательно запутав пользователей. В мире Linux стабильным стало ядро 6.17, где механизм MGLRU (Multi-Gen LRU) наконец-то начал работать так, как задумывали в Google, перевернув представление о том, как нужно "выкидывать" данные из RAM. Почему эта статья получилась такой большой? Потому что в интернете полно советов уровня "нажми эту кнопку", но никто не объясняет, какой ценой это работает. Мы разберем физику процесса на уровне атомов кр
Оглавление

👋 Когда "достаточно" памяти никогда не бывает достаточно

Привет, цифровые кочевники! На связи команда T.E.X.H.O.

Сегодня у нас на операционном столе тема, которая делит IT-сообщество на два непримиримых лагеря. Одни кричат: "Отключай всё, память должна быть сырой и быстрой!", другие крутят пальцем у виска: "Ты что, хочешь убить свой SSD своппингом?". Речь пойдет о Memory Compression (сжатии памяти).

На дворе декабрь 2025 года. Вышла Windows 11 25H2 с обновленным Диспетчером задач, который теперь показывает "CPU Utility" вместо старого доброго usage, окончательно запутав пользователей. В мире Linux стабильным стало ядро 6.17, где механизм MGLRU (Multi-Gen LRU) наконец-то начал работать так, как задумывали в Google, перевернув представление о том, как нужно "выкидывать" данные из RAM.

Почему эта статья получилась такой большой? Потому что в интернете полно советов уровня "нажми эту кнопку", но никто не объясняет, какой ценой это работает. Мы разберем физику процесса на уровне атомов кремния, залезем в недокументированные ветки реестра Windows и параметры ядра Linux, о которых молчат мануалы.

Мы не просто "покрутим настройки". Мы настроим агрессивность сжатия — тот самый невидимый параметр, который определяет, будет ли ваша система летать как истребитель или задыхаться, как курильщик на марафоне.

🔬 Глубокая механика: Что происходит в наносекундах?

Чтобы понять, зачем нам регулировать агрессивность, нужно представить путь данных.

Иерархия боли (Latency Hierarchy)

  1. Регистры CPU: Доступ мгновенный (менее 1 нс). Это "мысли" процессора.
  2. Кэш L1/L2/L3: Очень быстро (1-10 нс). Это "краткосрочная память".
  3. Оперативная память (RAM): Быстро (50-100 нс). Ваш рабочий стол.
  4. Сжатая память (ZRAM/Compression Store):
  • Запись (сжатие): Требует тактов CPU. Задержка зависит от алгоритма (LZ4 ~микросекунды, ZSTD ~чуть дольше).
  • Чтение (разжатие): Вызывает Soft Page Fault. Процессор должен бросить всё, схватить сжатый кусок, разжать его в новую область памяти и только потом отдать программе. Это добавляет задержку.
  1. Накопитель (SSD/NVMe): Медленно (10,000+ нс). Даже самые быстрые Gen5 SSD — это черепахи по сравнению с RAM.
  2. HDD: Вечность (миллионы нс).

В чем суть "Агрессивности"?

Агрессивность — это порог, при котором менеджер памяти (Memory Manager) принимает решение: "Этот кусок данных не использовался уже 30 секунд. Сжать его или оставить?"

  • Высокая агрессивность: Система параноидально сжимает всё, что не активно прямо сейчас.
  • Плюс: У вас всегда много свободной "физической" памяти. Диск почти не используется.
  • Минус: Огромные накладные расходы CPU. Микрофризы (stuttering) в играх и GUI, когда вы переключаетесь между окнами, потому что окну нужно время на "разжатие".
  • Низкая агрессивность: Система держит данные в "сыром" виде до последнего.
  • Плюс: Мгновенный отклик (Alt+Tab работает за 0 мс).
  • Минус: Память заканчивается внезапно. Когда это происходит, система начинает экстренно сбрасывать данные на диск (Hard Faults), и компьютер встает колом на несколько секунд.

Наша задача в 2025 году — найти точку, где сжатие уже работает (спасая SSD), но CPU еще не перегружен.

🪟 Windows 11 25H2: Скрытые рычаги управления

В обновлении 25H2 Microsoft переработала логику отображения нагрузки, но под капотом остался старый добрый (и злой) Memory Manager.

1. Диагностика "До" (Не верьте Диспетчеру задач)

Новый Task Manager в 25H2 показывает "CPU Utility", что может скрывать реальные пики нагрузки от сжатия.

Используйте PowerShell для честного анализа.

Запустите от админа:

Get-Process | Where-Object {$_.Name -eq "Memory Compression"} | Select-Object Name, @{Name="MemUsage(MB)";Expression={[math]::round($_.WorkingSet/1MB,2)}}

Если вы видите, что процесс потребляет более 1-2 ГБ на машине с 32 ГБ RAM в простое — агрессивность слишком высока.

2. Реестр: Тонкая настройка (Beyond MMAgent)

Мы все знаем команду Disable-MMAgent -mc. Это рубильник. Но нам нужен диммер (регулятор).

Мы будем править параметры в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management.

А. FeatureSettingsOverride (Скрытый множитель)

Этот параметр часто используется для управления патчами безопасности (Spectre/Meltdown), но в 25H2 он влияет и на поведение компрессора памяти в связке с VBS (Virtualization-Based Security).

  • Путь: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel
  • Логика: Если у вас включена изоляция ядра (Core Isolation), сжатие работает в защищенном анклаве. Это безопаснее, но медленнее.
  • Совет: Если вы геймер и готовы рискнуть, отключение VBS снизит накладные расходы на сжатие.

Б. StoreCompression (Агрессивность упаковки)

Хотя прямого ключа "Aggressiveness" нет, есть параметр StoreCompression в ветке PrefetchParameters (не путать с основной).

  • Путь: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters
  • Параметр: EnableSuperfetch (DWORD) — да, он всё еще тут в 2025.
  • 3 — Кэшировать всё (максимальная агрессивность префетча, который потом сжимается).
  • 1 — Только программы.
  • 0 — Выкл.
  • Твик: Установите EnableSuperfetch в 1. Это снизит нагрузку на компрессор, так как он перестанет пытаться сжимать загрузочные файлы Windows, которые и так лежат на быстром SSD.

В. SystemResponsiveness (Приоритет перед сжатием)

Этот твик перекочевал из Windows 10, но в 25H2 работает иначе. Теперь он управляет планировщиком энергоэффективных ядер (E-cores) на процессорах Intel (12-15th gen) и AMD Zen 5c.

  • Путь: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile
  • Параметр: SystemResponsiveness
  • Значение: По умолчанию 14 (резерв 20% CPU под фоновые задачи, включая сжатие).
  • Совет: Ставим 0.
  • Эффект: Мы запрещаем системе тормозить активную игру ради фонового сжатия памяти. Компрессия будет происходить только тогда, когда CPU действительно простаивает.
🔖Дорогие гости и подписчики канала. Если наши материалы приносят вам пользу, вы всегда можете поддержать команду символическим переводом. Любая помощь мотивирует писать для Вас больше полезного и качественного контента безо всяких подписок.🙏🤝🙏🤝🙏
-2
💰ПОДДЕРЖАТЬ КАНАЛ МОЖНО ТУТ ( ОТ 50 РУБЛЕЙ )💰
Или сделать любой перевод по QR-коду через СБП. Быстро, безопасно и без комиссии.(Александр Г.)
С уважением, Команда "Т.Е.Х.Н.О Windows & Linux".

3. Секретный босс: LargeSystemCache

В серверных версиях Windows этот параметр включен (1), в десктопных — выключен (0).

  • Суть: При 1 система отдает почти всю RAM под кэш файловой системы. А сжатие памяти пытается этот кэш ужать.
  • Конфликт: Если включить LargeSystemCache на десктопе с включенным сжатием, вы получите постоянную борьбу: Файловая система тянет данные в RAM -> Компрессор их сжимает -> ФС снова тянет.
  • Вердикт: Убедитесь, что LargeSystemCache стоит в 0 (по умолчанию). Не слушайте старые гайды по "оптимизации XP", которые советуют его включать. В 2025 году это убьет производительность.

4. Пошаговая инструкция: "Профиль Киберспорт"

Если вам важен каждый кадр и минимальный Input Lag:

PowerShell (Admin):

# Отключаем сжатие полностью. В 2025 году на 32ГБ+ это оправдано.

Disable-MMAgent -mc

# Перезагружаем службу SysMain, чтобы сбросить кэш

Restart-Service SysMain

Реестр:

Перейдите в HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management.

Создайте/измените DWORD DisablePagingExecutive на 1.

Что делает: Запрещает ядру сбрасывать свои драйверы в файл подкачки. Драйверы всегда будут в физической RAM. Это убирает микро-лаги при обращении к железу.

5. Пошаговая инструкция: "Профиль Воркстейшн" (3D, Видео, Код)

Вам нельзя отключать сжатие, иначе вылет After Effects гарантирован. Но нужно снизить его влияние.

  1. Оставляем MMAgent включенным.
  2. Настраиваем Pagefile:
  3. Установите фиксированный размер файла подкачки (например, 16 ГБ) на самом быстром NVMe. Не давайте Windows выбирать размер "Автоматически" — процесс расширения файла подкачки вызывает дикие тормоза.
  4. Реестр:
  • SystemResponsiveness = 10 (Баланс).

🐧 Linux Kernel 6.17+: Эра MGLRU и ZRAM

Если в Windows мы боремся с черным ящиком, то в Linux мы инженеры ядерного реактора. В 2025 году ядро 6.17 принесло окончательную полировку MGLRU (Multi-Generational Least Recently Used).

Старый алгоритм LRU (используемый десятилетиями) был плох тем, что он часто выкидывал "нужные" страницы и оставлял "мусор", просто потому что мусор был затронут недавно. MGLRU делит память на "поколения" и гораздо умнее определяет, кого казнить (сжать), а кого помиловать.

1. MGLRU: Главный рубильник агрессивности

В ядре 6.17 MGLRU включен по умолчанию в большинстве дистрибутивов (Fedora 43, Ubuntu 25.10).

Проверьте статус:

cat /sys/kernel/mm/lru_gen/enabled

Если ответ 0x0007 (или похожий hex) — включено.

Регулировка агрессивности через min_ttl_ms

Это "святой грааль" настройки в 2025 году. Параметр определяет минимальное время (в миллисекундах), которое страница должна прожить в "активном" поколении, прежде чем её сочтут кандидатом на выселение (сжатие).

  • Файл: /sys/kernel/mm/lru_gen/min_ttl_ms
  • По умолчанию: 1000 (1 секунда).

Сценарий "Мягкий":

Если вы хотите, чтобы система реже дергала сжатие и реже выкидывала данные:

echo 5000 | sudo tee /sys/kernel/mm/lru_gen/min_ttl_ms

Мы говорим ядру: "Не трогай данные, если они живут меньше 5 секунд". Это снижает CPU usage на короткоживущих процессах (компиляция, скрипты).

Сценарий "Агрессивный" (для слабых ПК):

echo 0 | sudo tee /sys/kernel/mm/lru_gen/min_ttl_ms

Ядро будет пытаться выселять страницы в ZRAM максимально быстро, освобождая физическую память под кэш диска. Система будет казаться более отзывчивой при запуске приложений, но CPU будет нагружен.

Канал «Каморка Программиста» — это простые разборы программирования, языков, фреймворков и веб-дизайна. Всё для новичков и профессионалов.
-3
Каморка Программиста | Дзен
Присоединяйся прямо сейчас.

. ZRAM Tuning 2025: ZSTD vs LZ4 (Снова)

В 2025 году процессоры стали мощнее (AVX-512 в консьюмерском сегменте). Это меняет расклад сил.

  • LZ4: Всё еще король скорости. Используйте его, если у вас старый CPU, но много RAM.
  • ZSTD: Теперь можно использовать с более высокими уровнями сжатия без потери производительности.
  • ZSTD-Move (новинка): В новых версиях zram-generator появляются экспериментальные алгоритмы, оптимизированные под перемещение страниц.

Конфиг "Ультра" для 2025 года:

Файл /etc/systemd/zram-generator.conf:

[zram0]

# Создаем ZRAM размером 1.5 от объема RAM (да, можно больше физики, ведь оно сжимается!)

zram-size = ram * 1.5

# Используем zstd с приоритетом скорости

compression-algorithm = zstd

# Опции для ZSTD (уровень 1 - самый быстрый)

options = level=1

3. Swappiness в эпоху MGLRU

Многие спорят: "Нужен ли swappiness, если есть MGLRU?".

Ответ: Да, но значения изменились.

MGLRU использует swappiness как весовой коэффициент.

  • vm.swappiness = 100: Равноправие между файловым кэшем и анонимной памятью (программами).
  • vm.swappiness = 60: Предпочтение сохранению программ в RAM (стандарт).
  • vm.swappiness = 150+: Предпочтение сжатию программ ради чистого файлового кэша.

Секретный твик: vm.vfs_cache_pressure

В 2025 году веб-браузеры создают миллионы мелких файлов в кэше. Увеличение этого параметра заставляет ядро быстрее "забывать" о структуре каталогов, которые вы посещали.

Рекомендуем: vm.vfs_cache_pressure = 50 (вместо 100).

Почему: Мы хотим, чтобы ядро помнило иноды (файловую структуру), потому что повторное обращение к диску за метаданными — это очень дорого. Лучше сжать пару мегабайт RAM через ZRAM, чем лишний раз будить SSD.

🎮 Практические сценарии: Живые примеры

Сценарий 1: Геймер с 16 ГБ RAM (Cyberpunk 2077 Phantom Liberty)

Трагедия: Игра вылетает через 30 минут из-за утечки памяти, либо фризит при езде по городу.

  • Windows: Включите сжатие (Enable-MMAgent). Отключите SysMain, чтобы он не грузил лишнее. Поставьте фиксированный файл подкачки 16-32 ГБ на SSD.
  • Linux (Steam Deck/Bazzite): ZRAM size = 200% RAM. Алгоритм lz4 (чтобы не тратить батарею). vm.swappiness = 133.

Сценарий 2: Разработчик Python/Docker (64 ГБ RAM)

Ситуация: Запущено 50 контейнеров. Память забита, но CPU простаивает.

  • Windows: Отключите сжатие полностью. Вашему CPU нужно заниматься Docker-ом, а не упаковкой памяти. У вас 64 ГБ — этого хватит.
  • Linux: vm.swappiness = 10. Пусть ядро сбрасывает файловый кэш, но держит контейнеры в "горячей" памяти. Отклик API будет быстрее.

Сценарий 3: Старый ноутбук "для мамы" (4 ГБ RAM)

Задача: Чтобы браузер открывался быстрее 10 секунд.

  • Windows: Безнадежно. Ставьте Linux.
  • Linux: ZRAM + ZSTD (уровень 3). vm.page-cluster = 0. vm.watermark_scale_factor = 200 (агрессивно держать свободное место). Это "волшебная таблетка" для старого железа.

🛑 Безопасность и Риски (Федеральный закон напоминает)

Коллеги, напоминаем о требованиях законодательства РФ при работе с информацией.

  1. Шифрование свопа: Если вы используете ZSWAP или сброс на диск, помните: в файле подкачки могут оказаться пароли, токены сессий и ключи шифрования в открытом виде.
  • Linux: Используйте LUKS для swap-раздела. ZRAM безопасен, так как данные исчезают при выключении питания.
  • Windows: fsutil behavior set encryptpagingfile 1. Это включит шифрование файла подкачки, но добавит нагрузку на CPU.
  1. Целостность данных: Чрезмерный разгон памяти (XMP/EXPO) в сочетании с агрессивным сжатием может привести к незаметному повреждению данных. Сжатый блок с одним битым битом при разжатии превращается в мусор. Если вы работаете с критическими данными (гостайна, бухгалтерия 1С) — проведите суточный тест MemTest86 перед включением агрессивного ZRAM.

🛠 Код и Конфиги (Copy-Paste Ready)

Windows: Скрипт "Оптимизатор 2025" (PowerShell)

Сохраните как Optimize-Mem.ps1. Запускать от админа.

# Проверка прав

if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Write-Warning "Запусти от админа!"; exit }

Write-Host "🔍 Анализ текущего состояния..." -ForegroundColor Cyan

$mm = Get-MMAgent

Write-Host "Memory Compression: $($mm.MemoryCompression)"

# Настройка SystemResponsiveness

$path = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile"

$val = Get-ItemProperty -Path $path -Name "SystemResponsiveness" -ErrorAction SilentlyContinue

if ($val.SystemResponsiveness -ne 0) {

Write-Host "🛠 Меняем SystemResponsiveness на 0 (Приоритет играм)..." -ForegroundColor Yellow

Set-ItemProperty -Path $path -Name "SystemResponsiveness" -Value 0

}

# Отключение SysMain для SSD

$sysmain = Get-Service "SysMain"

if ($sysmain.Status -eq 'Running') {

Write-Host "⚠️ Выключаем SysMain (Superfetch) для экономии ресурсов..." -ForegroundColor Red

Stop-Service "SysMain"

Set-Service "SysMain" -StartupType Disabled

}

Write-Host "✅ Готово. Перезагрузись, сталкер." -ForegroundColor Green

Linux: Systemd Unit для MGLRU (Для тех, у кого нет mglru-helper)

Создайте файл /etc/systemd/system/mglru-tune.service:

[Unit]

Description=Configure MGLRU Aggressiveness

After=multi-user.target

[Service]

Type=oneshot

# Включаем MGLRU

ExecStart=/bin/sh -c 'echo y > /sys/kernel/mm/lru_gen/enabled'

# Устанавливаем TTL 3000ms (баланс)

ExecStart=/bin/sh -c 'echo 3000 > /sys/kernel/mm/lru_gen/min_ttl_ms'

# Защита от трэшинга (thrashing prevention)

ExecStart=/bin/sh -c 'echo 0 > /sys/kernel/mm/lru_gen/thrashing_prevention'

RemainAfterExit=yes

[Install]

WantedBy=multi-user.target

Активация: systemctl enable --now mglru-tune.service

🐛 Типичные ошибки и Диагностика

  • Ошибка: "Система фризит на 1-2 секунды каждые полчаса".
  • Диагноз: Это сброс "грязных" страниц. Проверьте vm.dirty_ratio в Linux. Если он слишком большой (по умолчанию 20%), система копит гигабайты данных, а потом разом пишет их на диск.
  • Лечение: Поставьте vm.dirty_background_ratio = 5 и vm.dirty_ratio = 10. Пусть пишет чаще, но мелкими порциями.
  • Ошибка: Windows показывает BSOD MEMORY_MANAGEMENT.
  • Диагноз: Обычно это битая память, но иногда — конфликт драйверов с функцией сжатия.
  • Лечение: Disable-MMAgent -mc. Если BSOD пропали — виноват драйвер (часто старые драйверы видеокарт или античиты).

✅ Чек-лист применения

  1.  ОЗУ < 16 ГБ: Включаем сжатие, агрессивность MAX (swappiness=150).
  2.  ОЗУ 16-32 ГБ: Сжатие ВКЛ, агрессивность СРЕДНЯЯ (SystemResponsiveness=0).
  3.  ОЗУ > 64 ГБ: Сжатие ВЫКЛ (если CPU узкое место) или МИНИМУМ.
  4.  Сервер БД: Сжатие ВЫКЛ (Latency критична).
  5.  Веб-сервер: ZRAM + ZSTD (экономия денег на RAM).

❓ FAQ

Вопрос: Я слышал, что сжатие памяти изнашивает процессор. Это правда?

Ответ: Кремний не изнашивается от вычислений (в отличие от SSD от записи). Единственный риск — перегрев, если у вас плохое охлаждение. Но нагрузка от сжатия обычно составляет 1-3%, что ничтожно мало.

Вопрос: MGLRU доступен на старых ядрах (5.15)?

Ответ: Только если вы сами пропатчите ядро или используете кастомные ядра (XanMod, Liquorix). Официально — с версии 6.1+. В 2025 году сидеть на 5.x — это моветон, обновляйтесь.

Вопрос: Почему Microsoft не дает нам ползунок настройки в GUI?

Ответ: Философия Windows: "Мы знаем лучше". Они оптимизируют систему под "среднего Джо", который открывает 10 вкладок в Edge и Word. Шаг влево-вправо — это наша с вами территория, территория энтузиастов.

Вопрос: Работает ли это на CXL-памяти (Memory Expander)?

Ответ: О, вы богаты! Да, в ядре 6.17 появилась поддержка tiered memory с прозрачным сжатием. Вы можете настроить так, чтобы "горячие" данные жили в DDR5, а "теплые" сжимались и улетали в CXL-модуль. Это высший пилотаж оптимизации серверов.

🏁 Вывод

Управление агрессивностью сжатия памяти в 2025 году — это искусство. Мы перестали просто добавлять планки RAM. Мы начали думать о том, как эффективно использовать то, что есть.

  • Если вы на Windows 25H2 — ваша сила в реестре и понимании того, что скрывает новый Диспетчер задач.
  • Если вы на Linux Kernel 6.17 — вы вооружены MGLRU и ZRAM, инструментами, которые делают 16 ГБ памяти эквивалентными 24 ГБ.

Не бойтесь экспериментировать. Память — это всего лишь ресурс, и только вам решать, как его тратить: на быстрый запуск браузера или на стабильный FPS в рейде.

Понравился глубокий разбор? Подписывайся на "T.E.X.H.O Windows & Linux". Мы копаем там, где другие боятся испачкать руки. 🛠

-4

#MemoryCompression #Windows11_25H2 #LinuxKernel617 #MGLRU #ZRAM #Optimization2025 #SysAdmin #DevOps #PCBuild #RegistryTweaks #PowerShell #Bash #TechDeepDive #Latency #GamingSetup #ITPro #RussianIT #Cyberpunk2077 #DockerOptimization #HardwareUnboxed #MemoryManagement #ZSTD #LZ4 #SwapTuning #HighPerformanceComputing #ServerAdmin #WindowsInternals #LinuxHacks #TechGuide #T.E.X.H.O