WSL2: ограничение CPU и оперативной памяти при использовании Docker

Подсистема Windows для Linux (WSL) — это новейшая функция от Microsoft, которая позволяет разработчикам запускать среду GNU / Linux непосредственно в Windows без изменений, без дополнительных затрат на традиционную виртуальную машину или установку с двойной загрузкой.

В WSL2 они значительно улучшили производительность, добавив новые функции, такие как управляемая виртуальная машина, полное ядро ​​Linux и полная совместимость с системными вызовами.

Если вы включите и установите WSL-2 в Windows, в Docker-desktop можно будет использовать движок на основе WSL-2 для повышения производительности.

Docker Desktop использует функцию динамического распределения памяти в WSL 2, чтобы значительно снизить потребление ресурсов. Это означает, что Docker Desktop использует только необходимое количество ресурсов ЦП и памяти, в то же время позволяя выполнять задачи с интенсивным использованием ЦП и памяти, такие как создание контейнера, намного быстрее.

— https://docs.docker.com/docker-for-windows/wsl/

Динамическое выделение памяти и больше мощности процессора! Выглядит отлично! Но Docker на WSL-2 может выделить всю доступную память, что в конечном итоге приведет к нехватке памяти для ОС и других приложений.

Настройки ограничения CPU и оперативной памяти

На устаревшем внутреннем движке Hyper-V распределением CPU и оперативной памяти было легко управлять, что также возможно в WSL-2, но немного сложнее!

В моем сценарии я предпочитаю выделять только 4 ядра CPU и максимум 4 ГБ памяти .

Откройте Windows Terminal / CMD / PowerShell и выполните следующие команды:

# выключить все экземпляры wsl, такие как docker-desktop 
wsl --shutdown

notepad "$env:USERPROFILE/.wslconfig"

Отредактируйте .wslconfig файл с помощью блокнота и запишите эти настройки:

[wsl2] 
memory=4GB # Ограничивает память виртуальной машины в WSL 2 
processors=4 # Заставляет виртуальную машину WSL 2 использовать два виртуальных процессора

Сохраните файл и перезапустите службу docker-desktop!

Настройка WSL-2 не ограничивается только ЦП и памятью; вы можете применить другие настройки. Подробнее об этом читайте здесь