Як очистити оперативну пам'ять комп'ютера Віндовс 10

В інтернетах існує стійка думка, що служба SysMain (раніше - SuperFetch) абсолютно не потрібна в Windows 10, встановленій на SSD. Нібито недалекі розробники Microsoft не розуміють, що префетчинг не дає ніякого прискорення на твердотільному диску, і нам доводиться вчити дурну ОС нової реальності, відключаючи службу.

На жаль, ці тези засновані на застарілій інформації і не враховують змін, що відбулися в Windows 10. Частково в цьому винна Microsoft, яка обмежила доступ до документації центром відгуків.


Насправді служба скорочує обсяг запису на диск за рахунок стиснення і об'єднання сторінок пам'яті, підвищуючи продуктивність під навантаженням. Її відключення чудово вписується в міфи оптимізації SSD. Оновити їх у цьому контексті мене давно підштовхував читач блогу Арслан, а останньою краплею стала пара дискусій у форумі. Розповідь про стиснення пам'яті в скороченому вигляді і без анонсів я додав до розбору міфів ще в січні, а сьогодні публікую повний матеріал як окремий запис.

[+] Сьогодні у програмі

  • Стиснення пам'яті у Windows 10
  • Принцип роботи
  • Зниження обсягу запису на диск
  • Підвищення продуктивності під навантаженням

Візуальні індикатори стиснення пам'яті

Компоненти SysMain

Діагностика компонентів служби SysMain

Ув'язнення

Стиснення пам'яті у Windows 10

У Windows 10 показане в графічному інтерфейсі ім'я служби Superfetch змінилося на SysMain, що відповідає фактичній назві служби. Мабуть, так Microsoft позначила зміщення основного призначення служби з успадкованого зі старих ОС префетчингу додатків до нової функції - стиснення пам'яті (memory compression)


.

Компанія опублікувала розповідь про технологію ще в серпні 2015 року, але чомусь виключно в додатку Центр відгуків (копія в PDF). Як наслідок, інформація пройшла повз багатьох користувачів Windows 10. Нижче моє коротке пояснення і додаткові відомості.

Принцип роботи

Коли менеджер пам'яті відчуває брак пам'яті, він не скидає невикористовувані сторінки пам'яті на диск, а стискає їх. У файл підкачки запис ведеться лише в тому випадку, коли алгоритми диспетчера пам'яті визначають, що стиснення не компенсує нестачу пам'яті.

Колекція стиснутих сторінок, що зберігається в пам'яті, називається compression store. Система використовує єдине сховище для всіх програм (Win32 і UWP), а також індивідуальні сховища для всіх програм Windows Runtime, що забезпечують триммінг і своп. Замість запису сторінок у файл підкачки, менеджер пам'яті стискає їх і поміщає у відповідне сховище.

Як не дивно, в документі нічого не говориться про ще одну функцію служби SysMain - об'єднання сторінок пам'яті (page combining)

. Менеджер пам'яті визначає сторінки з однаковим вмістом і об'єднує їх. Ця функція працює в рамках служби незалежно від стиснення пам'яті.

Зниження обсягу запису на диск

За рахунок стиснення та об'єднання сторінок пам'яті скорочується кількість операцій введення-виведення і відповідно знижується обсяг запису на диск. Тому безглуздо відключати службу SysMain заради економії ресурсу SSD.


У 2020 році ця економія викличе усмішку у багатьох власників SSD, особливо у тих, хто неодноразово змінив цілком робочі диски на більш ємні і продуктивні. Але шість років тому вистачало людей, стурбованих смертю накопичувача від вичерпання циклів перезапису. Думаю, і зараз вони є (число коментарів до міфів застигло на позначці 991 лише тому, що я колись масово відключив обговорення старих записів

Але стиснення пам'яті в будь-якому випадку впроваджувалося не для цього.

Підвищення продуктивності під навантаженням

Користь від оптимізації ОС проявляється в ситуаціях, коли апаратних ресурсів не вистачає. Стиснення пам'яті націлене на сценарій, коли вся пам'ять зайнята, і доводиться скидати її на диск, втрачаючи продуктивність при підкачуванні.

Найбільший ефект від технології проявляється при поєднанні нестачі пам'яті з істотним дисковим навантаженням.

Стиснення пам'яті приносить більше користі повільним, чутливим до підкачки дисків - HDD і eMMC. Твердотельний накопичувач навантажити під зав'язку складніше, але якщо вам це вдалося, то позбавлення від зайвих операцій I/O зайвим не буде.


Як увімкнути/вимкнути

Компресія RAM обробляється диспетчером пам'яті. Планувальник завдань запускає процес, коли він виявляє простий програми. На щастя, більшості користувачів не потрібно включати його; операційна система надає вам змогу використовувати його за замовчуванням. Коли його увімкнено, він працює у фоновому режимі.

  1. введіть services.msc у рядку «Виконати», відкривши її через «Пуск».
  2. знайдіть серед наявних служб SuperFetch, відкрийте «Властивості», натиснувши на неї правою кнопкою миші.
  3. Виберіть пункт «Тип запуску» у списку «Вимкнено» та натисніть «Ok».
  4. перезавантажте комп'ютер, щоб зміни набули чинності.

Візуальні індикатори стиснення пам'яті

У статті Microsoft взагалі не згадується служба SysMain, проте її зв'язок зі стисненням пам'яті нескладно вирахувати експериментальним шляхом. Крім того, документ опублікували перед виходом першої стабільної версії Windows 10, і лише через рік, у версії 1607, додали наочні відомості про стислу пам'ять в диспетчер завдань.

Коли служба SysMain увімкнена, ви можете відкрити менеджер завдань на вкладці Продуктивність і в розділі Пам'ять переконатися у використанні стисненої пам'яті, а також побачити додаткові відомості, навівши курсор на область Структура пам'яті.

Також, в Process Explorer ви можете побачити в дереві процесу System процес Memory Compression (це був єдиний наочний спосіб на момент виходу Windows 10). Нарешті, за допомогою PowerShell ви можете отримати поточний статус стиснення пам'яті командлетом Get-MMagent.

Якщо ж служба SysMain відключена, стиснута пам'ять не працює, що видно за тими ж показниками.


Компоненти SysMain

У служби п'ять компонентів, і ви можете перевірити їх статус в PowerShell від імені адміністратора командлетом Get-MMagent (MM - Memory Management, тобто агент управління пам'яттю). На картинці нижче стандартний стан компонентів.

Управління новими компонентами SysMain здійснюється командлетами Enable-MMagent і Disable-MMagent. Префетчинг, успадкований зі старих ОС, контролюється тільки в реєстрі (для зазначених у документації параметрів PowerShell запит не підтримується). Нагадаю, що суть префетчингу в тому, щоб прискорювати операції, які регулярно звертаються до одних і тих же даних на диску.

Зведена таблиця компонентів служби та методів керування ними.

Компонент

Призначення


Керування

MemoryCompression

Стиснення пам "яті

PowerShell

PageCombining

Об'єднання сторінок пам'яті з однаковим вмістом

 

ApplicationPreLaunch

Передбачення запуску програм

 

ApplicationLaunchPrefetching

Системний префетчинг запуску програм

Реєстр

OperationAPI

Надання іншим програмам доступу до системного префетчингу через API

 

Ви можете вмикати і вимикати окремі компоненти служби, і я покажу приклади в контексті діагностики.

Що робити якщо комп'ютеру не вистачає оперативної пам'яті?

Так що ж робити, якщо ви бачите, що система використовує великий обсяг стиснених даних або працює з великим файлом підкачки? Відповідь очевидна, додайте більше оперативної пам'яті в свій ПК, це буде найкраще рішення. Також очевидно, що краще використовувати настільки швидку оперативну пам'ять, наскільки це дозволяє ваша материнська плата.

Менш очевидним рішенням буде використання SSD диска для файлу підкачки або системи в цілому. Раніше ми розглядали як перенести файл підкачки на інший диск у нашому відео:

Оскільки швидкість читання і запису на SSD диск у рази вище, традиційного жорсткого диска, то вся система буде працювати швидше.

COM_SPPAGEBUILDER_NO_ITEMS_FOUND