WSL 2
마이크로소프트에서 내년 봄 업데이트 (20H1) 에서 WSL 2를 추가할 것 같습니다.
윈도우 10을 발표하고 어느 날 오픈소스와 리눅스를 사랑한다고 공식적으로 고백하기 시작했는데, 확실히 Github를 인수하고 VS Code 등 여러 프로그램들을 오픈소스화 시킨 건 정말 좋은 소식이라고 생각합니다.
그 결과 중 하나로 윈도우 10에 WSL (Windows Subsystems for Linux) 기능을 추가했었죠. 윈도우즈의 시스템 콜을 리눅스 시스템 콜과 매핑시켰기 때문에 거의 리눅스처럼 사용할 수 있었습니다. 하지만 여전히 가상 머신으로 돌아가기 때문에 속도가 조금 느렸어요.
근데 이번엔 윈도우 10 전용 리눅스 커널을 개발 중이라고 하네요. 이게 WSL 2에 들어간다고 합니다. 가상 머신이래도, 경량화된 Hyper-V를 사용하여 대폭적인 성능 향상이 있다고 합니다.
지금은 Insider Preview 빌드로 먼저 체험해 볼 수 있습니다.
네이티브 리눅스 커널이 들어간다길래, 특히 성능이 궁금해서 한번 설치해봤어요. 테스트를 위해 오드로이드 N2 커널을 빌드해보겠습니다. 참고로 WSL 1은 사실 커널 빌드에는 쓸만한 성능이 아니었어요. ㅎㅎ
설치 과정
간단한 설치 과정입니다. 설치 방법은 아래 참고 링크들을 봐주세요.
어렵진 않았어요. 신기한 건 Docker for WSL2 Tech Preview의 윈도우 10 데스크탑 앱과 WSL2 리눅스 환경 안의 Docker가 동일한 환경을 공유하더라구요. 생각해보면 당연하지만, 이것만으로도 윈도우 10과 리눅스가 연결된 느낌을 받았습니다.
이전에 윈도우 10 인사이더 프리뷰 빌드로 업데이트를 완료한 다음, WSL 2를 활성화했습니다.
그리고 Docker for WSL2 Tech Preview 프로그램을 받아 WSL 2를 활성화시켰어요.
프로그램 화면 밑에 WSL2 뱃지가 귀엽게 있습니다.
WSL 2 안에서 neofetch
를 실행 결과입니다. 4.19 커널이 눈에 띄네요!
N2 커널 빌드 성능 벤치마크
일단 N2 커널을 git clone
했습니다.
그리고 벤치마크를 위해 제가 만든 오드로이드 커널 빌드용 도커 이미지를 사용했어요.
왜냐하면 환경 설정이 귀찮기에 도커 이미지를 사용함으로써 도커가 잘 작동함을 확인함과 동시에 리눅스 커널 빌드로 WSL 2 성능 평가를 할 수 있게 됩니다.
벤치마크를 위해 시간을 잴 건데, 복잡한 거 없이 간단히 time
명령어를 사용했어요. time
은 정해진 명령어가 정상 종료될 때 까지 실제 시간, CPU 시간, 시스템 시간을 보여줍니다.
실행 결과입니다.
WSL2 on Windows 10
Real time: 11분 34초
Elementary OS 5.0 (Ubuntu 18.04.2)
Real time: 9분 17초
결론
약 2분 20초 정도 (약 20%) 의 차이 가 나네요.
여전히 큰 차이 같아 보이지만 (경량화된) 가상 머신인 WSL 2에서 11분만에 빌드가 끝난다는 건 엄청난 발전으로 보입니다. VirtualBox나 VMWare, WSL 1 모두 이런 성능이 절대 안 나오거든요. 특히, 확실히 WSL1에 비해 파일 I/O 처리가 좋아진 게 눈에 띕니다.
좀 더 안정화되고, 정식 출시된다면 리눅스가 정말로 필요 없어질 수도 있겠다 생각이 드네요.
사실 좀 더 구경해보니, 네트워크나 USB 등 장치 디바이스들이 전부 안 잡히는 것, 정확히 말하자면 가상 머신처럼 잡히는 게 좀 아쉽긴 합니다. Docker 사용에는 치명적이죠. 근데 이건 곧 고쳐진다고 하니 정식 출시 땐 상관 없는 문제입니다.
그 외에 자잘한 문제들도 많겠지만, 일단은, 장치 디바이스/네트워크 정도라도 제대로 잡히고 fdisk
등등 자유롭게 쓸 수만 있다면 정말로 리눅스를 안 깔아도 될 시대가 올 지도 모르겠어요.
WSL2가 어떻게 나올지 기대되네요.
참고
'Programming > OS, Program, Framework Tip' 카테고리의 다른 글
Linux - systemd-gpt-auto-generator[]: Failed to dissect: Input/output error 없애는 방법 (0) | 2019.10.08 |
---|---|
Elementary OS - Dropbox 등 트레이 아이콘 살리기 (0) | 2019.10.07 |
Linux/macOS - SSH 접속 시 Hostkey 체크 비활성화 하는 방법 (0) | 2019.08.27 |
macOS - Unshaky, 맥북 나비식 키보드 중복 입력 오류 방지 (7) | 2019.08.08 |