Сравнение WSL 1 и WSL 2

Основные причины, чтобы обновить WSL 1 до WSL 2:

  • повышение производительности файловой системы;
  • поддержка полной совместимости системных вызовов.

WSL 2 использует последнюю и самую новую технологию виртуализации для запуска ядра Linux внутри упрощенной служебной виртуальной машины. Однако WSL 2 не является традиционным функционалом виртуальной машины.

В этом руководстве проводится сравнение WSL 1 и WSL 2, включая исключения для использования WSL 1, а не WSL 2. Основные различия между WSL 1 и WSL 2 — использование фактического ядра Linux внутри управляемой виртуальной машины, поддержка полной совместимости системных вызовов и производительность в операционных системах Linux и Windows.

Сравнение возможностей

Функция WSL 1 WSL 2
Интеграция Windows и Linux
Быстрый запуск
Небольшой объем занимаемых ресурсов по сравнению с традиционными Виртуальными машинами
Запуск с использованием текущих версий VMware и VirtualBox
Управляемая виртуальная машина
Полнофункциональное ядро Linux
Полная совместимость системных вызовов
Производительность в файловых системах ОС

Как можно понять из приведенной выше таблицы сравнения, архитектура WSL 2 превышает производительность WSL 1 в нескольких аспектах, за исключением производительности в файловых системах операционной системы, к которым можно обратиться путем хранения файлов проекта в той же операционной системе, что и работающие в проекте средства.

Подсистема WSL 2 доступна только в Windows 11 или Windows 10 версии 1903, сборки 18362 или выше. Проверьте версию Windows, нажав Windows + R, введите winver, выберите ОК. (Или введите команду ver в командной строке Windows). Может потребоваться выполнить обновление до последней версии Windows. Для сборок ниже 18362 WSL не поддерживается.

Примечание

WSL 2 работает с VMware 15.5.5 и более поздней версии и VirtualBox 6 и более поздней версии. Дополнительные сведения см. в статье Вопросы и ответы.

Новые возможности в WSL 2

WSL 2 — это основная модернизированная версия базовой архитектуры, которая использует технологию виртуализации и ядро Linux для реализации новых возможностей. Основные приоритеты этого обновления — увеличение производительности файловой системы и добавление полной совместимости системных вызовов.

Архитектура WSL 2

Во время обычной работы виртуальная машина может замедляться при загрузке, изолироваться, потреблять много ресурсов и требовать время для управления. В подсистеме WSL 2 нет таких проблем.

WSL 2 предоставляет преимущества WSL 1, включая простую интеграцию между Windows и Linux, быструю загрузку, незначительное потребление ресурсов и не требует настройки виртуальной машины или управления ею. Хотя WSL 2 использует виртуальную машину, она будет управляемой и будет работать в фоновом режиме, предоставляя тот же пользовательский интерфейс, что и WSL 1.

Полнофункциональное ядро Linux

Ядро Linux в WSL 2 собрано собственными силами корпорации Майкрософт на основе последней стабильной ветви исходного кода, доступного по адресу kernel.org. Этот ядро специально настроено для WSL 2 путем оптимизации размера и производительности, чтобы обеспечить невероятное взаимодействие с Linux в Windows. Ядро будет обслуживаться обновлениями Windows. Это означает, что вы получите новейшие исправления безопасности и улучшения ядра без необходимости заниматься этим самостоятельно.

Ядро Linux WSL 2 — это проект с открытым исходным кодом. Если вы хотите узнать больше, ознакомьтесь с записью блога Реализация ядра Linux в Windows, созданной группой, которая занималась сборкой ядра.

Дополнительные сведения см. в статье с заметками о выпуске ядра подсистемы Windows для Linux.

Повышенная производительность операций ввода-вывода файлов

Команды для операций с большими объемами файлов, такие как git clone, npm install, apt update, apt upgrade и другие, с WSL 2 выполняются заметно быстрее.

Фактическое увеличение скорости будет зависеть от того, какое приложение вы используете и как оно взаимодействует с файловой системой. Первоначальные версии WSL 2 запускаются в 20 раз быстрее по сравнению с WSL 1 при распаковке сжатого архива tarball и в 2–5 раз быстрее при использовании команд git clone, npm install и cmake в различных проектах.

Полная совместимость системных вызовов

Двоичные файлы Linux используют системные вызовы для выполнения функций, таких как доступ к файлам, запрос памяти, создание процессов и многое другое. В то время как WSL 1 использует уровень перевода, созданный командой WSL, WSL 2 имеет собственное ядро Linux с полной совместимостью системных вызовов. Доступные преимущества:

  • целый ряд новых приложений, которые можно запускать внутри WSL, например Docker и другие;

  • все обновления ядра Linux немедленно готовы к использованию. (Вам не нужно ждать, пока специалисты WSL реализуют обновления и добавят изменения).

Исключения для использования WSL 1 вместо WSL 2

Рекомендуется использовать WSL 2, так как он обеспечивает более высокую производительность и полную совместимость системных вызовов. Однако существует несколько отдельных сценариев, в которых использовать WSL 1 может оказаться более предпочтительным. Рекомендуем использовать WSL 1, если:

  • Файлы проекта должны храниться в файловой системе Windows. WSL 1 обеспечивает более быстрый доступ к файлам, подключенным из Windows.
    • Если вы будете использовать дистрибутив Linux WSL для доступа к файлам проекта в файловой системе Windows, и эти файлы не могут храниться в файловой системе Linux, вы получите более высокую производительность в файловых системах ОС, используя WSL 1.
  • Проект, для которого требуется перекрестная компиляция с использованием средств Windows и Linux на одних и тех же файлах.
    • Операции с файлами в операционных системах Windows и Linux выполняются быстрее в WSL 1, чем на WSL 2. Поэтому если вы используете приложения Windows для доступа к файлам Linux, в настоящее время вы получите более высокую производительность при использовании WSL 1.
  • Вашему проекту требуется доступ к последовательному порту или USB-устройству. Однако сейчас USB-устройства поддерживаются в WSL 2 посредством проекта USBIPD-WIN. Инструкции по настройке см. в статье Подключение USB-устройств.
  • WSL 2 не поддерживает доступ к последовательным портам. Дополнительные сведения см. в статье Вопросы и ответы или в проблеме в репозитории GitHub, посвященной поддержке последовательных портов.
  • У вас есть строгие требования к памяти
    • Использование памяти WSL 2 масштабируется по мере использования. Когда процесс освобождает память, она автоматически становится доступной в Windows. Но сейчас WSL 2 не освобождает кэшированные страницы в памяти, делая их доступными в Windows, пока не завершится работа экземпляра WSL. При наличии длительных сеансов WSL или при обращении к очень большому объему файлов этот кэш может занимать память в Windows. Мы отслеживаем процесс изменений по мере оптимизации в репозитории WSL (проблема 4166) в Github.
  • Тем, кто использует VirtualBox, может потребоваться определить используемую версию и ее совместимость с WSL 2. (Полное обсуждение см. в разделе Проблема с репозиторием Github WSL, № 798. Похоже, что VirtualBox версии 6.1.16 работает с WSL 2, но в других версиях могут возникнуть проблемы.)
  • Если вы используете распределение Linux для получения IP-адреса в той же сети, что и хост-компьютер, вам может потребоваться настроить обходное решение для запуска WSL 2. WSL 2 работает как виртуальная машина Hyper-v. Это изменение из промежуточного сетевого адаптера, используемого в WSL 1, что означает, что WSL 2 использует службу преобразования сетевых адресов (NAT) для виртуальной сети, вместо того чтобы подключать ее к сетевой карте узла (NIC), результатом чего является уникальный IP-адрес, который будет изменяться при перезапуске. Дополнительные сведения о проблеме и обходном решении, перенаправляющем порты протокола TCP служб WSL 2 в операционную систему узла, см. в статье о проблеме репозитория GitHub WSL 4150, режим моста NIC (обходной путь для протокола TCP).

Примечание

Попробуйте использовать удаленное расширение WSL VS Code, чтобы хранить файлы проекта в файловой системе Linux, используя средства командной строки Linux. Также с помощью VS Code в Windows можно создавать, редактировать, отлаживать или запускать проекты в браузере без снижения производительности, связанной с работой в файловых системах Linux и Windows. Подробнее.