Чому 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 2 у 13 разів швидше, ніж WSL: враження від Insider Preview

Друга версія 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, і вона діє і поводиться так, як ви очікуєте. Я створив папку ~/проекти, в якій живуть всі мої репозиторії проектів, а потім я відкриваю проекти в 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, яка просто літає на моєму потужному ігровому комп'ютері. Можливо, є ще деякі проблеми, про які я поки що не знаю, але після Інсайдерський попередній перегляд я зробив висновок, що команда WSL вирішила більшість проблем.

Крім того, не варто забувати, що Термінал Windows теж гарний! Вони ніби почули мої скарги на відсутність вкладок, 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 руб на добу! А ще ми маємо вічні сервери 😉

Чому WSL 2 у 13 разів швидше, ніж WSL: враження від Insider Preview

Джерело: habr.com

Додати коментар або відгук