Почему WSL 2 в 13 раз быстрее, чем WSL: впечатления от Insider Preview
Microsoft готовит релиз Windows May 2020 Update (20H1). Это обновление будет содержать несколько приятных улучшений пользовательского интерфейса, но для разработчиков и других посвященных важнее то, что в новой версии Windows появится WSL 2 (Windows Subsystem for Linux). Это актуальная информация для тех, кто хотел перейти на ОС Windows, но никак не решался.
Dave Rupert установил WSL 2 на свой 13-дюймовый ноутбук Surface и первые результаты
приятно удивили:
Вторая версия WSL в 13 раз быстрее первой! Не каждый день вы бесплатно получаете 13-кратное повышение производительности. Я почувствовал озноб и проронил скупую мужскую слезу, когда впервые увидел эти результаты. Почему? Ну, в основном я оплакивал то потерянное время, которое накопилось за 5 лет работы с первой версией WSL.
И это не просто цифры. В WSL 2 установка npm, сборка, упаковка, просмотр файлов, перезагрузка горячих модулей, запуск серверов — почти всё, что я ежедневно использую как веб-разработчик, стало работать значительно быстрее. По ощущениям это похоже на то, как если бы я снова сел за Mac (или, возможно, лучше, так как Apple в последние несколько лет радикально ограничивает свои процессоры в пользу увеличения времени автономной работы).
Откуда такая прыть?
Как они добились 13-кратного роста производительности? Раньше, когда я задумался о переходе на Mac, я тоже накидывал какие-то варианты, правда, сугубо на уровне допущений. Дело в том, что запись на диск и системные вызовы Linux обходились достаточно дорого (с точки зрения временных затрат) из-за архитектуры первой версии WSL. И теперь угадайте, на что в значительной степени опирается современная веб-разработка? Да. Когда вы собираете воедино кучу зависимостей и фрагментов кода при каждом сохранении файла, вы на самом деле выполняете много операций записи на диск и системных вызовов для десятков тысяч файлов.
Как только вы узнаёте об этом на своём горьком опыте, после этого трудно всё забыть. Вы начинаете постепенно впадать в депрессию, когда представляете, насколько медленно и печально всё это работает. И вы понимаете, что ваш мир больше не будет прежним и инструмент, который вам нравился, больше не кажется полезным и эффективным.
К счастью, команда WSL пошла на риск и полностью переписала подсистему. В WSL 2 эти проблемы были решены: разработчики встроили в Windows собственную виртуальную машину Linux и поручили файловые операции сетевому диску VHD (Virtual Hardware Disk). Компромисс заключается в том, что при первом запуске вы должны потратить время, чтобы раскрутить виртуальную машину. Это время исчисляется миллисекундами и лично для меня едва заметно. Я, например, жду с удовольствием, так как знаю, ради чего всё это.
Где теперь будут жить файлы?
Чтобы в полной мере воспользоваться преимуществами WSL 2, вы захотите переместить файлы проекта из /mnt/c/Users/<имя пользователя>/ в новый домашний каталог ~/Linux на новом VHD. Вы можете увидеть содержимое этого диска в сети, перейдя в \\\\ wsl $ \\ <имя дистрибутива> \\ <имя пользователя> \\ home или введя команду explorer.exe из вашей оболочки Bash.
Это настоящая файловая система Linux, и она действует и ведёт себя так, как вы ожидаете. Я создал папку ~/projects, в которой живут все мои репозитории проектов и затем я открываю проекты в Visual Studio Code, используя команду code.
А что с VS Code?
Установка WSL-расширения для удаленной разработки на VS Code (VS Code Remote — WSL) является последним этапом, обеспечивающим комфортную работу разработчика. Расширение позволяет VS Code выполнять все свои операции (команды git, консоли, установку расширений и так далее), взаимодействуя с виртуальной машиной Linux напрямую. Это делает весь процесс очень автономным.
Сначала я был немного расстроен из-за необходимости установки этого расширения, потому что мне нужно было переустановить то, что я установил и настроил до этого. Но теперь я оценил это по достоинству, потому что появился специальный слой визуализации который показывает, в какой среде я работаю и где живут мои файлы. Это сделало процесс веб-разработки на Windows более прозрачным и намного упростило использование пользовательского интерфейса для управления версиями в VS Code.
Слёзы счастья и надежда на светлое будущее
Меня не покидает ощущение радости при мысли о следующем релизе Windows May 2020 Update и оптимизированной подсистемы Linux, которая просто летает на моём мощном игровом компьютере. Возможно, есть ещё некоторые проблемы, о которых я пока не знаю, но после Insider Preview я сделал вывод, что команда WSL решила большинство проблем.
Кроме того, не стоит забывать, что Windows Terminal тоже хорош! Они как будто бы услышали мои жалобы на отсутствие вкладок, JSON Settings и потребность «чувствовать себя крутым» в Windows. Это по-прежнему странно звучит, но Windows Terminal — пожалуй, лучший терминал для Windows.
Проработав в Windows 5 лет, я многое пережил: неспособность установить Rails, борьбу с искусственными оболочками Cygwin. Я сидел в первом ряду на той самой конференции Build 2016, когда компания Microsoft анонсировала первую версию WSL. И тогда у меня появилась надежда, что веб-разработка на Windows наконец выйдет на новый уровень. Без сомнения, WSL 2 — самое большое улучшение, которое я видел с тех пор, и, похоже, мы на пороге новой эры.
На правах рекламы
Если для работы необходимы Windows-серверы, то вам однозначно к нам — автоматическая установка Windows Server 2012, 2016 или 2019 на тарифах с 2 ГБ RAM или выше, лицензия уже входит в стоимость. Всего от 21 руб в сутки! А еще у нас есть вечные серверы ;)