Комментарии 84
Капитан очевидность лет 10 бубнит что переходить стоит, но сразу на Linux ;)
В общем резюме (с точки зрения скорости):
- WSL1 — тормозят файловые операции через Linux API (?), сеть (?)
- WSL2 — тормозит процессор, память (?)
Всё верно?
PS. интересно бы посмотреть относительно нативного Linux на той же машине.
Нет, немного иначе:
- WSL1 = тормозят все системные вызовы, но больше всего связанные с файловыми операциями (ибо эмуляция средствами тормозной NTFS).
- WSL2 = сильно тормозит доступ к файлам расположенным внутри винды (ибо доступ через виртуальную сеть с эмуляцией средствами тормозной NTFS), но остальное работает почти как в Linux.
Если учесть что в WSL1 принципиально не могут работать некоторые вещи, то самое рациональное решение — использовать WSL2 с размещением файлов в EXT4, а не в NTFS.
Касательно wsl, правку в \\wsl не рекомендовали.
дык сам MS про это чёрным по белому писал в анонсе wsl2.
Всё что стоит сказать — а где моя сеть. Дважды переустанавливал и даже с нуля устанавливал, но автоматически сеть в Линуксе не цеплялась. И гайдов толком нет.
Например в качестве оболочки — Visual Studio Code (например native Windows), а в качестве компиляторов бесплатные- Mingw-w64 и линуксовый GCC. Для унификации GUI — VxWidgets или даже QT.
www.jetbrains.com/help/clion/how-to-use-wsl-development-environment-in-clion.html
Тем более, что в интернете уже есть решение, как для WSL2 назначать DISPLAY.
зачастую используют, чтобы пару игрушек запуститьА зачастую и не пару. А зачастую и не игрушек. А WSL тоже многим для пары-тройки мелких применений нужен.
У каждого свои причины, в общем.
> torch.cuda.is_avaliable()
False
Вроде и драйвер под windows нужный поставил, с WDDM, и образ с кудой взял, а всё равно никак. Статьи вроде этой не особо помогают.
docs.microsoft.com/en-us/windows/win32/direct3d12/gpu-tensorflow-wsl
Но все туториалы по этой теме действительно в основном на tensorflow.
Пока работает в ранних бетах Windows из DevChannel.
Мне, например, WSL очень заходит :) Я студент, мой ноут на винде, но почти весь научный софт, которым я пользуюсь, написан по linux. Поэтому WSL удобна.
WSL 2 был в 20 раз быстрее, чем WSL 1
Не могу сказать точно в какое количество раз, но очень ощутимо WSL1 стал быстрее после добавления всего его корня в исключения Windows Defender.
Еще было бы интересно как заставить касперского игнорировать wsl. Любые исключения не помогают.
Я добавлял соответствующий WSL пакет в %USERPROFILE%\AppData\Local\Packages
— у меня это Ubuntu (есть в названии, типа CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc
).
На этот счёт у них есть древний тикет с жалобами, но воз и ныне там. Народ в нём пишет что само по себе исключение якобы не помогает (хотя я явно это ощутил), и что нужно отключить Real Time Protection (причём в Group Policy, а не из UI) — но это можно делать только на системе в которой вы уверены и если вы уверены что фигне взяться неоткуда (обычно это не проблема, если комп только для разработки).
Впрочем, есть скрипт для PowerShell который отключает Real-Time только для WSL, путём добавления каждого бинарника оттуда в исключения RTP.
PS: Насчёт касперского не знаю, увы. Но если доверяете себе и системе, просто попробуйте его отключить хотя бы в качестве эксперимента.
Любители NPM и прочего вот этого вот всего пока что могут обходить WSL стороной, используйте решения, разработанные под Windows.
Держу проекты в wsl2, и использую vscode под виндой, у которого есть тонкий клиент для всех файловых операций и не только, и собственный сервер запущенный также в wsl2. Проблем никаких не знаю, стороной не обхожу. Возможно скоро и другие редакторы и IDE подтянутся, видел что многие пользователи продукции от JetBrains просят такую фичу.
В общем как только у меня появилась возможность перейти на wsl2, сразу ей воспользовался. И после уже наверное более полугода использования, еще с insider preview, почти всем доволен. До этого лет 10 сидел на линуксе и несколько лет на маке.
Я запутался, помогите. :)
Пишу код в винде в vs code. Все проекты живут в, условно, c:\users\username\box\dev\, потому что box\ — точка монтирования облачного хранилища, которое синкает все между компом и ноутом (читай: дропбокс).
Код запускается из wsl1, куда я хожу по ssh. Это, может быть, извращение, но ssh сессий все равно всегда открыто несколько, плюс-минус одна — не важно, зато все в одном месте — удобно. В wsl1 тот самый box\ примонтирован как отдельно как /win.
Продакшен для всего кода — линух, докера нет ибо не нужен, везде git push/pull.
Очень удобно, что при изменении сети на винде (отключился от одного впн, подключился к другому впн, вообще выключил впн) в wsl1 оказывается всё та же виндовая сеть и не надо давить никакие кнопки.
Ну и изредка из wsl1 что-то делаю с пачками больших файлов, которые откуда-то (из внешнего мира) появились на виндовом диске.
Стоит ли смотреть на wsl2 или черт с ним?
WSL2 даст нормальную поддержку всех системных вызовов Linux и ≈10-кратное ускорение операций с файлами, но только если их размещать "внутри Linux" (на EXT4, а не в Windows). Однако, доступ к "виндовым" файлам из WSL2 замедлится ≈вдвое.
Короче, для вас (видимо) что-либо поменяется принципиально только если убрать Windows-прокладку.
PS. Жалко что проект AndLinux заглох и не поддерживает Win64.
Кроме того, HyperV конфликтует с VirtualBox (пришлось удалить).
В связи с этим возникает закономерный вопрос: зачем вообще нужен WSL, когда есть Sygwin и виртуальная машина, на которую можно установить любой Linux. Который при этом будет гарантированно быстро работать.
WSL2 — это и есть виртуалка, только неудобная и ограниченная только одной операционной системой. Ни тебе андроид запустить, ни мой любимый арч, ни CentOS, часто используемый в продакшене. Работает только на Windows Pro. Да ещё какие-то непонятные ограничения с GUI.
Зачем это надо вообще? Virtual Box бесплатен и работает как часы.
Я понимаю, что MS хочет перетянуть разработчиков на тёмную сторону. Но разработчикам то это зачем?
Ну например сценарий с VSC на много удобней.
1) старт Windows Terminal / Ubuntu / code ~/myproject (менее 1 секунды)
2) автоматом в винде стартует VSC и сразу работает в ремоут режиме с бекенд терминалкой на WSL (примерно 5 секунд)
С отдельной виртуалкой требуется на много больше возни начиная с её далеко не быстрого запуска и заканчивая менее удобной связкой VSC remote. Когда за день надо сотню раз позапускать всякий ансибл с докерами, экономия времени на всяких «преддействиях» просто огромная.
Если вам часто требуется Linux, то просто останавливайте его только в конце рабочего дня.
Зачем постоянно перезапускать виртуальную машину?
Добрый день. Раз тут собрались активные пользователи wsl, то спрошу. Реально ли такое применение: front, npm. Хочется держать код под виндой, а собирать в "виртуалке". Пробовал делать через virtualbox, но наткнулся на ограничение — нтфс не понимает симлинки, и команда npm install в виртуалбокс вылетает с ошибкой. Есть ли какое решение? Или просто держать код в виртуалке, и править через удаленный доступ?
Из поста узнал что оптимально ещё и ext4 соорудить и хранить проекты на нём. Время доступа с винды к фалам увеличится вдвое, но вся сборка ускорится и скорее всего заработает обратно подписка на изменение фс через fs.watch.
Чтобы использовать ext4 — я должен их положить в ~/Projects (например), правильно? Как тогда к ним будет организован доступ RubyMine/VSCode?
Ещё в WSL1 не работают свежие версии libc (например, из Ubuntu 20.04). Фикс есть, но пока только в insider-сборках. Обновил Ubuntu, получил нерабочую систему, пришлось переходить на WSL2.
Пришлось откатиться на WSL1.
Первый запуск — секунды две-три. Потом почти мгновенно. 3900x + nvme
Если закрыть все инстансы wsl и немного подождать (чтобы wsl --list --verbose писал что все stopped, это не сразу происходит), то следующий запуск снова тормозит.
Так это какая-то убунтовская приблуда на старте тупит, погуглите, люди у себя всякую фигню комментят и вроде бы помогает.
Отключение UMIP не помогает. Такой вот лаг на 3 секунды.
Да, WSL2 это конечно хорошо, но как уже выше писали, работа с ФС на хосте это просто ад. Заходишь (zsh+git) в папку с проектом, и просто повисает секунд на 15, пока не прочитает состояние репозитория.
Также опечалило то, что не завезли поддержку IPv6 в WSL2, хотя в WSL1 работало все.
Сравниваем подсистемы WSL 1 и WSL 2. Стоит ли переходить?