2022. 7. 12. 16:54ㆍDevOps
WSL (Windows Subsystem for Linux) 이란?
Mac의 가장 큰 특징이라고 하면 실제 Linux 기반의 운영체제를 사용함으로써 별도의 설정 없이 Shell 및 CLI(Command Line Interface) 명령어 실행을 통한 프로그램 설치/관리의 편리함이라고 할 수 있었다.
왜 Linux 기반의 운영체제를 써야 하는가? 는 따로 정리해보기로 하고
Windows에서는 Linux를 사용하기 위하여 대부분 가상 환경 프로그램(VMware, VirtualBox 등등)을 사용하여 추가적인 운영체제 설치를 통해서 실행해 왔으며 별도의 시스템으로 동작하기 때문에 오버헤드가 발생하며 실행을 해야 하는 등 사용에 불편함이 있어서 특별한 경우를 제외하고는 많이 사용하지 않았는데 이후 공식적으로 Windows에서 별도의 가상 환경 없이 실행 가능한 Linux 환경을 제공하였는데 이것이 바로 Linux 용 Windows 하위 시스템이라고 하여 WSL( Windows Subsystem for Linux)가 된 것이다.
WSL1과 WSL2 비교
최초 2016년 WSL이 발표된 이후 2020년에 WSL2로 발전하면서 성능 및 기능도 점점 업그레이드되고 있다.
WSL2로 오면서 기본 아키텍처를 점검하였으며 Hypervisor기반의 가상화 기술과 Linux 커널 사용 및 전체 시스템 간에 호출 호환성을 추가하였다.
기능 비교
Microsoft에서 공식적으로 비교한 기능은 다음과 같으며 OS 간 파일 시스템 성능을 제외하면 WSL2 버전의 성능이 우수하고 파일 시스템 간 성능 역시 동일한 운영체제에 파일 시스템을 저장하는 방식으로 해결 가능함.
결국 모든 부분에 있어 성능이 우수한 WSL2 버전을 사용하면 되는 것이다.
참고로 WSL1 버전을 사용하는 것이 더 나은 프로젝트 환경에 대한 내용은 아래 링크를 통해 확인하면 된다.
WSL 1과 WSL 2 비교
WSL 2는 WSL 1의 이점을 제공하지만 WSL 1과 같은 변환 계층이 아닌 실제 Linux 커널을 사용하므로 성능이 향상됩니다.
docs.microsoft.com
WSL 아키텍처
WSL1은 Windows와 Linux distribution 사이에 명령어 번역기 정도로 해석할 수 있었다.
그렇기 때문에 처리속도도 느리며 Linux 명령어들을 처리하는 데 있어서 한계가 존재했다.
이후 WSL2로 업그레이드되면서 실제 Linux 커널이 존재함으로써 모든 Linux 시스템 명령어의 처리가 가능해졌다.
Windows와 Linux의 usermode를 분리함으로써 각각의 인터페이스의 이슈가 줄어들고 처리 속도가 향상되게 된다.
WSL 사용 시 고려사항
그렇다면 바로 WSL을 사용하는 것 이 맞는가?
WSL은 Windows에서 조금 더 편리하게 Linux 시스템을 이용할 수 있게 해 주는 것에는 틀림이 없다.
하지만 그에 따른 단점도 존재하기 마련이니 사용을 해보면서 느끼는 WSL에 대해 고려해봐야 할 사항들을 미리 확인해보도록 하자.
WSL 장점
- Windows 운영체제에서 경량화된 가상화 기술을 사용하여 Linux 운영체제를 구동할 수 있다.
- Microsoft Store 통해 간단하게 Linux의 여러 배포판을 선택적으로 설치/실행할 수 있다.
- VM(Virtual Machine) 실행 시 발생하는 부팅 및 리소스 자원의 오버헤드에 비해 보다 효율적으로 관리가 가능해졌다.
- Windows에서 GNU/Linux 계열의 실행 파일 표준인 ELF(Executable and Linkable Format) binary 파일들을 실행할 수 있게 해 준다.
- Windows PC의 성능만 충분하다면 별도로 서버 구성을 위한 값비싼 H/W가격을 고려하지 않아도 된다.
WSL 단점
- WSL2는 Hyper-V의 경량화된 가상화 기술을 통해 실행되기 때문에 같은 방식으로 동작하는 기존 VM 프로그램은 동시에 사용할 수 없다.
가상화 기술을 사용하는 대표적 VM 프로그램(VMWare, VirtualBox, Android Emulator 등) 들은 업데이트를 통해 점차적으로 WSL2와 호환되도록 개선하고 있다.
FAQ 정보 Linux용 Windows 하위 시스템
Linux용 Windows 하위 시스템에 대한 FAQ(예: WSL로 무엇을 할 수 있나요?)의 답변을 찾아보세요.
docs.microsoft.com
- WSL2로 넘어오면서 OS 파일 시스템 사이의 성능이 낮아졌는데 OS 간에 Hypervisor를 통해서 파일을 공유하게 됨으로 활용 속도 측면에서 성능 저하가 발생한다.
WSL1과 WSL2 비교에서도 확인할 수 있듯이 Windows 커널과 직접 연결하던 WSL1방식보다 WSL2가 Hypervisor 위에서 구동되는 별도의 Linux 커널이 존재하기 때문에 OS 간 통신 사이에 파일 공유의 속도 저하가 발생하고 있는 것인데 이것 역시 동일한 운영 체제에 프로젝트 파일을 저장하여 해결할 수 있습니다.
- Vmmem 메모리 과점유 이슈
Vmmem은 가상 머신 관련하여 프로세스 및 메모리 관리를 담당하는데 WSL사용 시 해당 프로세스가 CPU 및 메모리의 과점유 현상이 발생하는 증상으로 현재 까지도 Microsoft의 공식적인 패치가 없어 진행형인 것 같다.
WSL 2 consumes massive amounts of RAM and doesn't return it · Issue #4166 · microsoft/WSL
Your Windows build number: 18917 What's wrong / what should be happening instead: WSL 2 starts using huge amounts of RAM after a while, just using it like normal. At the moment I'm using ph...
github.com
마치며..
WSL이 제공되면서 Windows에서 Linux를 편리하게 사용할 수 있게 된 만큼 이제 값비싼 Mac만을 고집할 필요는 없을 것 같지만 Linux 커널을 메인으로 쓰는 Mac의 이점은 충분히 있을 것이다.
기존에 비해 우리에게 새로운 선택사항이 존재한다는 것에 의의를 두며 어느 것을 사용할지는 개인의 선택인 만큼 충분히 고려해가며 사용하면 될 것 같다.
'DevOps' 카테고리의 다른 글
WSL Linux 배포판 저장 위치 변경(with. Docker-Desktop) (0) | 2022.08.06 |
---|---|
WSL 설치 후 이슈... (0) | 2022.07.19 |
WSL(Windows Subsystem for Linux) 설치 (0) | 2022.07.18 |