В WSL 2 наконец-то исправили одну из главных проблем с производительностью при доступе к файлам Windows из Linux. В мае 2026 года в репозитории Microsoft приняли PR #40654 от Бена Хиллиса, который убирает последний серьёзный «бутылочный горлышко» на пути virtiofs.
Чтобы понять, почему это важно, нужно вспомнить историю. WSL 1 (2016) использовал собственный драйвер DrvFs и работал быстро — файлы на /mnt/c читались почти напрямую из NTFS, потому что VM не было. WSL 2 (2019) перешёл на полноценное ядро Linux в Hyper-V — это дало совместимость с системными вызовами и скорость для Linux-native задач, но за доступ к Windows-дискам пришлось платить. Microsoft встроила Plan 9 (9P) файловый сервер в Windows-сервис WSL, и все операции на /mnt/c шли через протокол 9P с ограничением в 64 КБ на сообщение. Для проектов с кучей мелких файлов это было больно.
Потом, около 2021 года, появился virtiofs — опциональный режим, который использует общую память VirtIO вместо протокольной сериализации. В .wslconfig достаточно написать virtiofs=true. Но оставалась проблема с DMA. Все virtio-устройства в WSL 2 — и виртуальные диски для /mnt/c, /mnt/d, и сетевой адаптер — делили один общий пул SWIOTLB. Когда загрузка была высокой, они просто толкались локтями в одном буфере.
Теперь каждое virtio-устройство получает собственный выделенный DMA-пул. Ядро выделяет непрерывный диапазон физической памяти ниже 4 ГБ, публикует его адрес через sysfs, а WSL-сервис при создании устройства пропихивает для него персональную опцию swiotlb=. Никакой общей очереди между дисками и сетевой картой.
На практике это значит, что сильнее всего выиграют сценарии, где проект лежит на Windows-диске (например, C:\Users\you\code), а сборка идёт в Linux через /mnt/c. cargo build, npm install, mvn package — каждый файловый доступ станет быстрее. VirtioProxy, который использует ту же DMA-инфраструктуру, тоже выигрывает.
Чтобы получить апдейт, нужно обновить ядро до Microsoft.WSL.Kernel 6.18.26.3-1, которое идёт с DeviceHost 1.2.29-0. Если ядро старое, WSL сам скажет: «Вам нужен патч». Ещё стоит держать RAM сессии выше 1 ГБ — SWIOTLB-пулу нужно минимум 64 МБ запаса.
Plan 9 через Hyper-V socket пока остаётся транспортом по умолчанию. Virtiofs всё ещё опциональный. Но gap между производительностью WSL 1 и WSL 2 продолжает сужаться.