Сравниваем подсистемы WSL 1 и WSL 2. Стоит ли переходить?

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.


В этой заметке в стиле «мысли вслух» автор хотел бы сравнить WSL первой и второй версии, благо опыт общения имеется.

WSL 1 vs WSL 2, что порадовало


image

Источник MSDN

1. Использование настоящего ядра линукса


Включение реального ядра Linux повысило IO файловой системы и системные вызовы. 
Специально оптимизированное ядро Linux делает WSL 2 вроде как быстрее, чем WSL 1. 
В некоторых задачах, по замерам Microsoft, в  таких, как распаковка архивов, WSL 2 был в 20 раз быстрее, чем WSL 1, и примерно в 5 раз быстрее при использовании Git clone и npm install.
Потратить своё время на просмотр бенчмарков  можете тут и тут.

2. Нативная поддержка докера.


В принципе такая возможность появилась только с WSL 2

На этом радость закончилась.

WSL 1 vs WSL 2, что не порадовало


Начнем с самых новых костылей от Майкрософт и своего рода нововведений, которые лично меня расстроили.
WSL первой версии не использовалось реальное ядро Linux, как и виртуализация. WSL был чем-то наподобие Wine, но не совсем.

Там использовалась какая-то особая прослойка для транслирования вызовов от линуксовых программ в эту оболочку.
Это, ясное дело, замедляло все подряд, но имело и преимущества.

К примеру, все программы, которые работали на WSL 1 были видны в диспетчере задач, этим задачам могли раздаваться приоритеты и задаваться конкретные ядра для исполнения.

image


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

image


С приходом к WSL 2 конкретные процессы в этой виртуальной машине больше не видны, также, пропала возможность защищать от записи в папки. WSL 2 имеет доступ файловой системе в обход защитника Windows. Какие конкретно уязвимости принесет это в будущем — посмотрим. Но вектором атаки для шифрования всего диска вполне может стать WSL 2.

image


Работа с сетью тоже немного изменилась в WSL 2. В WSL первой версии был очень странно реализован сетевой стек, он висел на сети, которую использовал сам Windows, более того, прослушиваемые WSL порты можно было проверить в Netstat и закрыть обычным Брандмауэром Windows.

image


Теперь, в WSL 2 появился отдельный свитч конкретно для WSL, потому что теперь это отдельная виртуальная машина, сплошная скука.

image


Бенчмарки


WSL дал возможность использовать команды из WSL прямо в Windows. В том числе и в PowerShell.
Используя божественный Powershell, автор произвел замеры своих любимых программ на WSL, которыми сам чаще всего и пользуется.

Во всех бенчмарках использовался Ubuntu 18.04 LTS для WSL1 и WSL2.

Jekyll


Генерация сайта. По одному проходу:

WSL1
image


WSL2
image


Как видим, WSL2 при построении сайта с помощью Jekyll сильно уступает WSL1. 1,5 секунды против 9,6. Результат в пользу WSL1. Что интересно, WSL1 всегда требовал Sudo для доступа к записи и не хотел выполнять генерацию без прав рута.

Скорость вызова


Тут тестируем скорость вызова оболочки и выполнения одной простейшей команды.

Measure-Command {
    [int]$i
    do {
        $i++
        wsl.exe -e 'uname'
       
    } until ($i -eq 20)
}

WSL1
image


WSL2
image


WSl2 грузится чуть медленнее. Это совсем незаметно, так как взят результат выполнения 20 запусков.

Git init и Mkdir


Теперь побенчмаркаем Git init и Mkdir. С помощью Mkdir создаем папку и делаем Git init внутри этой папки с помощью WSL.

Код:

Measure-Command {
    [int]$i
    do {
        Set-Location "C:\Users\user\Desktop\TestFolder"
        $i++
        $Foldername = Get-Random
 
        wsl.exe ''mkdir $Foldername''
        Set-Location $Foldername
        wsl.exe ''git init''
       
    } until ($i -eq 20)
}

WSL1
image


WSL2
image


Результаты идентичные.

WSL vs. другие костыли


Так почему стоит выбрать WSL?

В WSL 2 все так же сохранилась возможность использовать линуксовые команды прямо из винды. Удобно бывает вызвать Bash прямо из строки проводника.

Ну и конечно, WSL использует дефолтное окружение ОС, что вы поставили, вам не придется использовать богомерзкий Vim из Mingw, если вы привыкли работать с человеческими редакторами.

Почему лучше обойти WSL стороной.

Libnotify, в WSL1, как и /proc/sys/fs целиком отсутствуют в WSL1, как было сказано выше, в первой версии не применяется то самое ядро линукса и WSL 2 должен был этот косяк исправить.

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

Любители NPM и прочего вот этого вот всего пока что могут обходить WSL стороной, используйте решения, разработанные под Windows.

Крутой лайхак для WSL ( ͡° ͜ʖ ͡°)


image


Теперь поговорим о единственной причине поставить WSL – Vlmcsd.
Хотите активировать свою лицензионную копию Windows немного другим способом исключительно ради научного эксперимента, но не хотите использовать странные KMS активаторы, скачанные из интернета?
Спасибо Майкрософт, вы можете использовать WSL, вот краткий гайд.

Ссылка на Github проекта, ссылка на релизы.

Snap на Ubuntu


Устанавливаем Snap:

sudo apt update
sudo apt install snapd

Устанавливаем vlmcsd:

sudo snap install vlmcsd

С помощью ip addr проверяем ip адрес, на котором висит WSL и используем его в качестве KMS сервера. Вот ссылка на страницу проекта в snapstore.

vlmcsd и Docket на WSL


Тоже самое можно провернуть и через сам Docker,  или WSL и Docker. Вот ссылка на проект, лучше него я не объясню.

Со стороны Windows:


Вот как выглядит активация Windows 10 PRO через KMS.

slmgr.vbs -ipk W269N-WFGWX-YVC9B-4J6C9-T83GX
slmgr.vbs -skms 192.168.88.166
slmgr.vbs -ato

Такой способ установки годится только для шуток, ведь инстанс WSL всегда будет выключен как только вы закроете его окно, как в прочем, пока что, весь WSL годится только для шуток и Git’a.
Автор надеется, вы не сильно заскучали.

Источник: https://habr.com/ru/company/ruvds/blog/511912/


Интересные статьи

Интересные статьи

Предыстория Когда-то у меня возникла необходимость проверять наличие неотправленных сообщений в «1С-Битрикс: Управление сайтом» (далее Битрикс) и получать уведомления об этом. Пробле...
Автор статьи, перевод которой мы публикуем, предлагает прекратить писать собственный код для аутентификации пользователей. Он полагает, что пришло время внедрять более безопасные реше...
У некоторых бизнес-тренеров в области е-коммерса и консультантов по увеличению интернет-продаж на многие вопросы часто можно слышать универсальную отмазку — «надо тестировать» или другую (чтобы не...
Именно таким вопросом я задался, когда будучи простым физическим лицом и гражданином РФ, устроился на удалённую работу разработчиком ПО в одну иностранную компанию и начал получать заработную п...
На сегодняшний день у сервиса «Битрикс24» нет сотен гигабит трафика, нет огромного парка серверов (хотя и существующих, конечно, немало). Но для многих клиентов он является основным инструментом ...