Подсистема Windows для Linux получила масштабное структурное обновление механизма управления системными ресурсами, снижающее вероятность катастрофических сбоев при высоких нагрузках. Обновление вводит лимиты памяти и процессора, чтобы основные процессы хоста Windows не остались без ресурсов.
До применения этого патча пользователи могли запускать ресурсоёмкие процессы (например, компиляцию программ), провоцирующие в виртуальной среде Linux регулярные события нехватки памяти (Out-of-Memory, OOM). События OOM не только приводили к сбоям активных приложений, но и расходовали все ресурсы, необходимые для работы самого ядра WSL. В результате WSL становилась полностью неотзывчивой, даже после спада пикового потребления памяти.
Принятое Microsoft исправление устанавливает жёсткое ограничение ресурсов для виртуальной среды Linux через песочницу (sandbox). Это гарантирует, что останется достаточно памяти и вычислительной мощности для поддержания работы процессов хоста WSL. Теперь, если вы попытаетесь скомпилировать программу в среде Linux и она исчерпает ресурсы, сбой затронет только этот процесс, но не всю WSL.
Для этого исправление помещает все пользовательские среды в ограниченную контрольную группу с именем wsl-user. Группа ограничена величиной на 32 МиБ меньше общего объёма ОЗУ хоста и на 0,01 ядра меньше полной процессорной мощности. Этот тонкий запас должен быть достаточным для WSL, чтобы поддерживать жизненно важные фоновые коммуникации и системную оркестрацию.
Ещё одна важная деталь: WSL пришлось полностью перейти на версию 2 контрольных групп Linux (cgroup v2). К сожалению, это нарушает обратную совместимость с устаревшими рабочими нагрузками, если они полагаются на старую версию. Если вам действительно нужен cgroup v1, добавьте в файл .wslconfig строку IsolateDistroCgroup = false – эта настройка обходит новые меры.
Наконец, изменение приносит и другую выгоду. При одновременном запуске нескольких сред Linux вы больше не столкнётесь с блоками инициализации. Новая архитектура изолирует экземпляры systemd в отдельные для каждого дистрибутива группы cgroup, так что их загрузка происходит независимо.
Источник: WSL GitHub
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Paul Hill




