База знань →5 хв читанняОновлено: 2026-09-21

Як обмежити споживання пам'яті та CPU у WSL2 на Windows 11

WSL2 запускає Linux не поруч із Windows, а всередині легкої віртуальної машини, і в Диспетчері завдань її видно як процес Vmmem: на актуальних збірках Windows 11 їй типово віддається до 50% оперативної пам'яті (на старих — до 80%) і половина логічних ядер. Звільнену пам'ять ядро Linux не квапиться повертати, тож Vmmem довго тримає високі значення навіть після закриття всіх програм усередині дистрибутива. Керується це текстовим файлом .wslconfig у теці профілю: кілька рядків на кшталт memory=6GB і processors=4 обрізають апетити машини, а набувають чинності після однієї команди wsl --shutdown.

Чому Vmmem з'їдає пам'ять і що вміє .wslconfig

Ядро Linux тримає звільнену пам'ять під сторінковий кеш і саме Windows її не повертає — тому після великої збірки Vmmem довго висить на високому значенні, хоч у дистрибутиві вже все закрито. Це не витік, а нормальна поведінка ядра; але коли дистрибутиви ділять машину з браузером, IDE та іншими віртуалками, стелю краще задати явно. Типові 50% були розумними за порожніх машин; нині, коли 16 ГБ ділять п'ять прожерливих застосунків, це забагато.

Кермове колесо — файл %UserProfile%\.wslconfig, який зчитується один раз під час старту віртуальної машини, тож після будь-яких правок її треба перезапускати командою wsl --shutdown. Ліміти діють одразу на всі дистрибутиви — окрему стелю для кожного в цьому файлі задати не вийде. Працює він лише для WSL2: перше покоління виконує виклики Linux просто всередині Windows, там немає ні віртуальної машини, ні Vmmem.

  • memory=6GB — стеля оперативної пам'яті для всієї віртуальної машини, усіх дистрибутивів одразу
  • processors=4 — скільки логічних ядер процесора побачить WSL2
  • swap=4GB — розмір файла підкачки Linux (типово 25% від RAM, максимум 8 ГБ)
  • autoMemoryReclaim=gradual — експериментальна опція, що повертає звільнену пам'ять Windows (WSL 1.3.10+)
  • sparseVhd=true — експериментальна опція, яка дозволяє диску ext4.vhdx стискатися під час видалення файлів

Задаємо ліміти покроково

Відкрийте Блокнот, вставте заголовок секції [wsl2], а під ним рядки memory=6GB, processors=4 і swap=4GB, потім збережіть файл як %UserProfile%\.wslconfig. У діалозі збереження виберіть тип «Усі файли (*.*)» і кодування UTF-8, інакше Windows безшумно створить .wslconfig.txt, якого WSL читати не стане. Значення без одиниці вимірювання — наприклад, memory=6 — трактується як байти, тож суфікс GB не прикраса, а необхідність.

Відкрийте PowerShell або Windows Terminal і виконайте wsl --shutdown, зачекайте секунд десять і запустіть дистрибутив знову. Всередині Linux команда free -h покаже вже обрізаний обсяг пам'яті замість всієї фізичної, а nproc — дозволену кількість ядер. Якщо wsl --version видає 1.3.10 або новіше, нижче секції [wsl2] можна додати блок [experimental] з autoMemoryReclaim=gradual і sparseVhd=true та знову перезапустити WSL; на старіших версіях спершу оновіться командою wsl --update від імені адміністратора.

Коли переглядати цифри

Поспостерігайте за Vmmem у Диспетчері завдань тиждень звичайної роботи: для браузера, редактора й легких контейнерів вистачає 4–6 ГБ, а важкі збірки Docker чи великі JavaScript-проєкти можуть чесно вимагати всі 8. Змінюйте memory= кроками по 2 ГБ, а не разом, і на машинах із 16 ГБ і менше лишайте Windows хоча б половину фізичної пам'яті. Якщо диск із дистрибутивами весь час росте, увімкніть sparseVhd=true — ext4.vhdx перестане лише набирати вагу. Зазирайте в налаштування після кожного великого оновлення Windows: воно іноді замінює пакет WSL і змінює його поведінку.

Питання та відповіді

Скільки пам'яті виділити WSL2?

На машині з 16 ГБ для повсякденної розробки вистачає 6 ГБ; за 8 ГБ загальної пам'яті тримайтеся 4 ГБ, щоб Windows не йшла в підкачку. Піднімайте стелю малими кроками і лише коли збірки справді падають через брак пам'яті.

Чому Vmmem не зменшується, якщо в Linux усе закрито?

Ядро тримає звільнену пам'ять у сторінковому кеші й саме Windows її не повертає. Виконуйте wsl --shutdown після роботи або увімкніть autoMemoryReclaim=gradual у WSL 1.3.10+, щоб пам'ять стікала назад автоматично.

Чи працює .wslconfig із WSL1?

Ні: WSL1 виконує виклики Linux просто всередині Windows — там немає ні віртуальної машини, ні Vmmem, ні чого обмежувати. Якщо потрібні ліміти, спершу переведіть дистрибутив командою wsl --set-version <назва> 2.

Перевірте склад ліцензії до покупки.

Разовий 30-хвилинний тест охоплює базові функції. Інструменти з позначкою PRO залишаються заблокованими до активації платної ліцензії.

Читайте також

Усі статті · Питання

Написати нам: [email protected]