Có một thực tế rằng lập trình viên không thích powershell, mình cũng vậy.
Lý do không phải powershell tệ, mà là các công cụ chạy trên powershell không nhiều. Đặc biệt gây khó khăn trong việc phát triển phần mềm trong một team dùng nhiều hệ điều hành linux/mac/windows.
Gần đây Microsoft trình làng một chức năng mới có tên Windows Subsystem for Linux - viết tắt là WSL.
Về cơ bản, tính năng này cho phép bạn dùng song song cả windows và linux.
Điều này có ý nghĩa rất lớn với mình (và mình cũng nghĩ có ý nghĩa rất lớn đối với giới lập trình nói chung).
Mình bắt đầu thử chuyển công việc của mình qua WSL từ 6 tháng trước và ai thấy cũng hỏi một câu:
Sao ông không dùng linux đi cho rồi, cài vậy chi cho nặng máy?
Lý do không phải powershell tệ, mà là các công cụ chạy trên powershell không nhiều. Đặc biệt gây khó khăn trong việc phát triển phần mềm trong một team dùng nhiều hệ điều hành linux/mac/windows.
Gần đây Microsoft trình làng một chức năng mới có tên Windows Subsystem for Linux - viết tắt là WSL.
Về cơ bản, tính năng này cho phép bạn dùng song song cả windows và linux.
Điều này có ý nghĩa rất lớn với mình (và mình cũng nghĩ có ý nghĩa rất lớn đối với giới lập trình nói chung).
Mình bắt đầu thử chuyển công việc của mình qua WSL từ 6 tháng trước và ai thấy cũng hỏi một câu:
Sao ông không dùng linux đi cho rồi, cài vậy chi cho nặng máy?
Nguyên nhân hàng đầu là về UI/UX, mình không thích UI/UX trên linux, nhìn kiểu amateur ý.
Nguyên nhân thứ 2 là về hệ sinh thái, mình cần windows để làm các thứ chỉ bên windows mới có.
WSL có chậm không?
Trước hết WSL là máy ảo, đúng, nó là máy ảo. Nhưng bạn có biết hệ điều hành windows của bạn cũng là máy ảo?Để hiểu được vấn đề, trước hết ta phải nhớ rằng:
"Công nghệ ảo hóa được cung cấp bởi CPU, không phải hệ điều hành, ở một thời điểm chỉ một phần mềm duy nhất được sử dụng tính năng này"
ok, giờ hãy nhìn lại về các loại máy ảo:
https://www.researchgate.net/profile/Karama-Kanoun/publication/221351476/figure/fig1/AS:305492556566528@1449846509293/Type-1-and-Type-2-Virtual-Machine-Monitors.png
Như hình trên, ta có 2 loại máy ảo:
Type 2: Đây là dạng máy ảo kiểu VM ware, virtual box …
Các loại máy ảo này chạy trên hệ điều hành (host system), trong trường hợp này là Windows, (không phải Linux như trong hình đâu nhé). VM Ware sẽ là phần mềm sử dụng công nghệ ảo hóa của CPU để tạo ra các máy ảo khác như ubuntu, mac os …
Type 1: Đây là dạng máy ảo mà tất cả các VM chạy trực tiếp trên một nền tảng ảo hóa, không thông qua một hệ điều hành nào cả. Nếu các bạn bật tính năng Hyper-V trong windows lên thì chính windows cũng đang chạy trên một tầng ảo hóa (là Hyper-V), có nghĩa windows các bạn đang dùng cũng là một con máycon, Hyper-V là tầng ảo hóa, Hyper-V là phần mềm sử dụng công nghệ ảo hóa của CPU.
Điều đó có nghĩa các máy ảo Type 1 sẽ nhanh hơn rất rất nhiều so với các máy ảo Type 2, do không phải thông qua một OS trung gian.
Quảng cáo
Bên cạnh đó, do một ở một thời điểm chỉ có một phần mềm được sử dụng công nghệ ảo hóa, nên nếu bật Hyper-V thì VM-Ware không chạy được và ngược lại.
Đến đây chắc các bạn cũng đoán được WSL là dạng máy nào rồi phải không?
WSL là máy ảo dạng 1, hiệu suất của nó tương đương với hiệu suất của Windows chạy trên Hyper-V.
Vậy hiệu suất so với chạy trên máy vật lý thì như thế nào, bật Hyper-V lên có khiến máy chậm đi không?
Với cảm nhận của mình thì không, mình không cảm thấy bất kì điều gì khác biệt cả.
Không tin các bạn có thể xem kết quả benchmark ở đây:
Does Enabling WSL2 Affect Performance of Windows 10 Applications (pugetsystems.com)
WSL khiến docker chạy nhanh hơn
Thật vậy, khi chạy linux container với docker, Windows phải làm một số thứ để giả lập môi trường linux. Điều này khiến việc start một container hoặc khởi động docker cũng rất ì ạch.Nhưng khi đã có WSL thì mọi chuyện trở nên dễ dàng hơn. Docker sử dụng WSL để chạy phần engine và UI thì vẫn chạy trên windows. Điều này khiến cho Docker trên windows nhanh hơn rất rất nhiều và tốn ít ram hơn. Thật toẹt vời các bác ạ.
Quảng cáo
WSL có chiếm nhiều RAM không?
Câu trả lời ngắn gọn là không. WSL chiếm rất rất ít ram, khoảng hơn 200MB thôi. Các bạn đừng nhìn vào Task Manager nhé, số ram Task manager báo là Ram hệ thống cấp cho máy ảo WSL để đỡ phải cấp đi cấp lại nhiều lần, còn số ram máy ảo thực tế sử dụng các bạn dùng lệnh htop để xem nhé.Số ram này còn chưa bằng số ram mình mất khi phải chạy docker trực tiếp trên windows nữa nên coi như chả mất gì.
Restart máy mà lại không restart
Nghe hơi hư trúc nhưng thật ra lại rất mộ dung phục.Khi bạn muốn restart môi trường làm việc thì chỉ cần restart lại service LxssManager là được, cỡ 30 giây là xong, chia tay với màn hình boot luôn.
Nhiều khi cảm thấy mình cài cắm nhiều thứ rác quá, muốn xóa hết cài lại từ đầu thì chỉ cần clear dữ liệu của con WSL là xong, chả liên quan gì đến dữ liệu trong windows, max nhanh gọn.
VS code hỗ trợ WSL tận răng
Phải gọi là được hỗ trợ từ răng cửa tới tận răng khôn luôn, bác nào code trên VS code thì sướng thôi rồi.Bất lợi khi dùng WSL
- Không hỗ trợ lưu dữ liệu máy ảo trên ổ đĩa khác ổ C. Điều này có nghĩa nếu máy bạn lỗi, cần cài lại win thì bạn liệu mà dùng đĩa cứu hộ vào ổ C mà copy file máy ảo ra trước.
- Không nên copy file qua lại giữa WSL và windows, tại định dạng file khác nhau, copy file text qua lại bọn nó không hiểu. Nhưng copy các file định dạng khác như pdf, png, jpg các thứ thì thoải mái.
Chốt
Trải nghiệm của mình với WSL trên windows rất tuyệt vời. Có thể nói với WSL, ta đã có những điều tốt nhất từ Windows lẫn Linux.Mình nghĩ các bạn nên thử và chuyển dần qua WSL nếu có thể.
Từ giờ sẽ không có khái niệm lập trình trên windows chán nữa, tại nói vậy chả khác nào nói lập trình trên linux chán cả. =))
Các bạn có trải nghiệm gì thì cũng comment luôn nhé.