Sudah hampir 1 bulan saya menggunakan WSL2 untuk pekerjaan saya sehari-hari. Sebagai informasi, saya saat ini bekerja di sebuah perusahaan swasta sebagai seorang programmer. Awalnya saya menggunakan Linux sebagai daily OS saya. Namun, suatu ketika saya diharuskan untuk menggunakan Visual Studio untuk development salah satu project yang sudah dibuat sebelumnya dengan .NET Core 3.
Saat itu saya menggunakan dual boot Linux dan Windows. Namun, saya memberanikan diri untuk mencoba WSL (Windows Subsystem for Linux) versi 2.
Kelebihan WSL2
WSL 2 ini sebenarnya mirip dengan docker ataupun virtual machine biasa (Virtual Box, VMWare). Tetapi, WSL ini memang didesain untuk terintegrasi dengan sistem operasi Windows. Proses installasinya juga cukup mudah. Banyak pilihan distro yang tersedia (bisa dicari di Microsoft Store).
Perbedaan yang sangat terasa dengan virtual machine biasa adalah, Ketika kita pertama kali membuka terminal linux setelah booting windows prosesnya tidak lama (setidaknya di device saya). Dan tidak terjadi proses booting seperti Virtual Machine pada umumnya (untuk GUI).
Bahkan, saat ini WSL2 pun bisa menjalankan aplikasi GUI Linux di Windows, yang tampilan aplikasinya terintegrasi dengan desktop windows, dalam artian tidak berada di dalam desktop environment Linux tersendiri. Tema GTK maupun QT pun dapat kita konfigurasikan dengan mudah (melalui gnome-tweaks maupun manual dengan config file).
Integrasi dengan Visual Studio Code yang berada di Windows pun berjalan dengan baik. Bahkan ketika kita melakukan running development server (seperti development server create react app), port Linux akan langsung di binding di Windows dan dapat diakses di Browser Windows.
Service-service lain yang melakukan binding port di Linux (seperti MySQL, PostgreSQL, dan lainnya) juga akan dapat diakses melalui host (Windows). Berlaku juga sebaliknya, aplikasi atau service Windows yang melakukan binding port (seperti MSSQL Server yang memiliki kinerja lebih baik di Windows) juga dapat diakses di dalam container WSL dengan hostname PC di Windows (bukan localhost). Misalnya hostname Windows Anda "DEVELOPMENT-PC01" anda dapat mengakses port yang berada di Windows di dalam WSL dengan hostname "development-pc01.local".
Namun, kemarin ketika saya mencoba mengakses SQL Server yang berada di Windows melalui salah satu project yang saya kerjakan di dalam WSL, saya harus mengonfigurasi Windows Firewall untuk mengizinkan akses port tersebut.
Tak hanya itu, file system Linux kita di WSL dapat juga kita akses langsung melalui host OS kita (Windows) seperti melalui Windows Explorer. Hal ini berlaku juga sebaliknya, file system yang berada di Windows juga akan langsung di mount agar dapat diakses melalui Linux.
Kekurangan WSL
Satu kekurangan dari WSL2 ini adalah penggunaan resourcenya yang sangat tinggi, khususnya dalam penggunaan RAM.
Gambar di atas adalah penggunaan idle (hanya membuka terminal Linux) di WSL, proses yang bernama VmmemWSL memakan memori 1 giga lebih (melebihi browser Microsoft Edge). Ketika saya melakukan developing aplikasi web bahkan penggunaan RAMnya dapat mencapai 8 Giga. Sebenarnya maksimum RAM yang dialokasikan untuk WSL2 dapat kita konfigurasikan untuk kita batasi.
Kekurangan lain yang saya ketahui dari hasil research saya adalah, proses Read/Write disk yang berada di Host (Windows) dari dalam WSL cukup lama dibandingkan WSL1 (ini akan sangat terasa ketika melakukan developing aplikasi dengan NodeJS). Sehingga saya sarankan untuk menyimpan file-file yang akan digunakan untuk development di dalam virtual disk WSL yang ada.
Anda juga dapat mencoba menggunakan WSL1 jika ingin kecepatan R/W yang lebih cepat di disk NTFS Windows.
Kesimpulan
Saya rasa WSL ini sangat cocok untuk digunakan para developers yang memiliki spesifikasi Laptop atau PC yang mumpuni. Apalagi, banyak tools-tools yang berguna untuk developing yang tersedia di Linux. Tetapi, untuk hardware dengan spesifikasi low, saya kurang menyarankan untuk menggunakan WSL ini. Karena penggunaan resource WSL2 yang sangat tinggi. Mungkin dapat mencoba menggunakan WSL1 yang penggunaan resourcenya tidak terlalu tinggi.
Terima Kasih telah membaca!