Wydajność Windows Subsystem for Linux 2 sprawdzona. Nie mamy dobrych wieści

Maciej Olanicki , 15.06.2019 r.

Jedną z najciekawszych zapowiedzi tegorocznej odsłony konferencji Microsoft Build były duże zmiany Windows Subsystem for Linux. Świat obiegły informacje, że oto w Windowsie pojawi się „pełne jądro Linuksa”, a Microsoft zaczął zachwalać dwucyfrowe wzrosty wydajności w stosunku do pierwszej odsłony WSL-a. Teraz przyszedł czas na weryfikację tych obietnic.

Gwoli przypomnienia – Microsoft podczas Builda zapowiedział gruntowne architektoniczne zmiany w linuksowym subsystemie. Tłumaczącą wywołania systemowe (izolowane procesy Pico z linuksowymi binarkami są przetwarzane przez LxCore/LXSS na wywołania API Windowsa) warstwę zastąpiono… no właśnie. Microsoft długo ociągał się z przyznaniem, że Windows Subsystem for Linux 2 to tak naprawdę maszyna wirtualna.

Zobacz też: Windows Subsystem for Linux 2 – jądro Linux tego lata trafi do Windowsa

Już wtedy zwracaliśmy uwagę, że trudno, aby maszyna wirtualna, choćby najlepiej zoptymalizowana, była szybsza (szczególnie w kwestii czasu uruchamiania) niż wykorzystywany wcześniej subsystem. Mimo to Microsoft zarzekał się, że podczas testu polegającego na rozpakowaniu archiwum tarball WSL 2 poradził sobie aż 200-krotnie szybciej niż poprzednik. W obsłudze poleceń git, npm czy cmake odnotowano natomiast nawet 5-krotne przyśpieszenie.

wsl2-test-2 Źródło: Phoronix

Kolejną przewagą WSL-a 2 nad poprzednikiem miała być także pełna kompatybilność wywołań systemowych. W rezultacie programiściadministratorzy będą mogli korzystać z wielu nowych narzędzi, na czele z Dockerem czy FUSE. Microsoft obiecywał także wyeliminowanie wszystkich wąskich gardeł, które dławiły wydajność pierwszej odsłony Windows Subsystem for Linux. Uwagę w zwracało jednak, że korporacja zdecydowała się na utrzymywanie w Windowsie obu odsłon WSL-a jednocześnie – „dwójka” zatem musiała mieć te czy inne braki.

Zobacz też: Wiadomo więcej o WSL 2. Zmiany w architekturze rozczarowują

Dziś mamy już okazję, przekonać się, ile w zapowiedziach Microsoftu było prawdy. Windows Subsystem for Linux 2 pojawił się w kompilacjach testowych dystrybuowanych w ramach programu Windows Insider. Co więcej, wydajność nowego „subsystemu” zdążył już wstępnie przetestować nieoceniony Michael Larabel, znany szerzej jako Phoronix.

wsl2-test Źródło: Phoronix

Nie chcemy być tymi, którzy mówią „a nie mówiłem”, ale… potwierdziły się nasze obawy co do spadków wydajności. Maszyna wirtualna jest zwyczajnie wolniejsza niż pierwsza odsłona WSL-a wykorzystująca warstwę tłumaczącą wywołania systemowe. Druga odsłona „subsystemu” poległa w benchmarkach Chaos Group, Blendera czy PyBench. WSL 2 wypadł także kiepsko w benchmarkach Golang. Sam Larabel rezultaty przeprowadzonych testów wydajności podsumowuje następująco:

Z początku byliśmy podekscytowani perspektywą WSL2, gdy usłyszeliśmy, że rozwiąże problemy wąskiego gardła na I/O, które były plagą WSL2. Niestety, po testach nie jesteśmy już tak entuzjastyczni. Przynajmniej na razie WSL 2 jest znacznie mniej wydajny przy faktyczny obłożeniu CPU w porównaniu WSL 1. Przynajmniej wydajność I/O jest nieco lepsza. Mamy nadzieję, że Microsoft będzie kontynuował pracę nad poprawą wydajności WSl2

Microsoftowi trzeba oddać, że faktycznie rozprawił się z wąskimi gardłami interfejsu I/O, co widoczne jest po wynikach obsługi poleceń Gita. Zbliżył się on do natywnej wydajności Ubuntu instalowanego „na metalu”. Z całościowymi wynikami testów wydajności Windows Subsystem for Linux 2 zapoznać można się na blogu Michael Larabela.

Najnowsze oferty pracy:

Polecane wpisy na blogu IT: