WSL1과 WSL2는 구조적으로 차이가 많다.

 

WSL 활성화 구조

  • WSL이 활성화되면 윈도우 부팅시 Lxss.sys(스텁 드라이버) 로딩, 이후  WSL 드라이버인 LxCore.sys 로딩됨
  • 리눅스 앱은 피코 프로세스(pico process)에서 실행되는데, 피코 프로세스는 윈도우 사용자 공간에 생성되는 경량  가상 공간. LxCode.sys가 피코 프로바이더 동작하면서 리눅스인 척 시뮬레이션을 수행. WSL1에서는 시스템 호출을 번역하는 역할을 수행.
  • LxssManager: LxCore.sys 를 서비스하는 윈도우 서비스. 

 

WSL1

  • 리눅스 바이너리 번역 계층을 통해 윈도우에서 리눅스 환경 제공
  • 리눅스 앱이 호출하는 리눅스 커널 시스템 호출을 항상 LxCore.sys가 NT 시스템 호출로 변환. NT시스템 호출로 매핑할 수 없으면 리눅스 시스템 호출을 NT의 유사 시스템 호출로 바꿔 호출해야 하는데, LxCore가 이 변환 호출 작업을 수행.  유사 시스템 호출조차 불가능할 경우  LxCore가 처리해 주어야야 함. 결국 모든 시스템 호출을 처리해 줄 수 없다보니 WSL1에서는 리눅스 앱 실행이 90% 호환율을 보임.

WSL2

  • 윈도우 호스트 컴퓨터 서비스(하이퍼V 기반 API)를 사용.
  • HyperV에 기반한 경량 가상화 플랫폼을 사용하여 리눅스 환경 제공
  • 리눅스 커널과 경량 하이퍼V 컨테이너를 이용하여 시스템 호출 비호환을 근본적으로 제거함. 하이퍼V는 네이티브 가상화 기술인데, 1형과 2형이 있음. 1형은 NT 커널레벨에서 실행되며, 2형은 커널 레벨 드라이버를 적재하지만 대부분 사용자 공간을 구현. 2형에 속하는 솔루션이 3사 하이퍼바이저(버추얼박스, VMWare 등)이다. 그래서 VirtualBox와 WSL2를 한 머신에서 실행할 수 없다.
  • 도커나 microk8s등을 사용한다면 WSL2를 선택하는게 조금 더 복잡한 설정 작업이 있더라도 낫다.
  • 윈도 10 2019 5월 업데이트 이후(1903)부터 사용 가능.

WSL 2 아키텍쳐

 

  • 예를 들어 파일 열기나 네트워크 포트 열기 작업을 수행하면  WSL1에서는 NT커널에서 직접 처리된 반면, WSL2에서는 가상 HyperV 기기와 동작하는 리눅스 커널에서 처리. WSL2는 가상 기기(디스크 이미지)에 쓰는 작업을 바로 수행하므로 직접 IDE나 SATA등을 흉내내주기 위한 오버헤드를 줄일 수 있다.
  • 성능 최적화를 위해 MS가 직접 하이퍼V 기반의 리눅스 커널을 관리하고 있다.(https://github.com/microsoft/WSL2-Linux-Kernel. )

 

 

  • 2020년 이후 GPU 관련 개선 작업이 진행되어 DirectX, Direct3D, DirectML 작업이 가속화되고, OpenGL, OpenCl,불칸을 지원한다.
  • GPU 병렬처리를 이용하려면 새로운 커널 드라이버인 /dev/dxgkrnl을 사용하면 WDDM(윈도우 디스플레이 드라이버 모델)을 통해 NT커널에서 제공하는 GPU 기능을 이용할 수 있다.  패스-쓰루 드라이버인 셈. 현재는 GPU연산과 오프스크린 렌더링만 지원되고 있음. 

 

  • D3D도 WDDM 확장 버전으로 제공. GUI 지원은 추후.
  • DirectML은 저수준 기계학습 API인데, NVidia GPU가 필요한 CUDA와 달리, DirectML은 인텔과 AMD GPU에서 동작한다. 텐서플로를 돌릴때 유용. MS가 적극 협조하고 있다. CUDA는 nVidia와 협력중이다.
  • 빌드 2020부터 WSL내에서 GUI 공식 지원. 
  • GUI를 WSL에서 동작하는 것은 관심이 없으므로 우선 패스.

개발자들이 귀한 시대를 살고 있다. 소프트웨어가 모든 것을 먹어치우는 세상에서 핵심 역량은 개발자인데, 특히 코드를 이용하여 제품/서비스를 만드는 개발자는 정말 소중한 자산이다.

 

마사장님이 이끌고 있는 조직중 하나인 DreamHaven에서 플랫폼 개발자를 뽑는데... JD를 보면서 약간의 전율을 새삼 느끼게 되었다. 우리도 비슷한 목표를 가지고 있는지라 참고해야 할 항목이 많다.

 

먼저 두개의 파트로 소개하는데, What We Need에서는 조직에서 바라는 기술 스택을 중점적으로 다룬다. Who you are는 조직에서 바라는 인재상을 소개한다. 기술 스택에서는 특정 언어보다는 (미국 기업 대부분이 그러하지만) 일반적인 내용과  필요한 경험을 기술한다. 이를 통해 지원자는 어떤 기술을 이용하는 조직인지, 어떤 기술 역할을 맡게 될 것인지를 알 수 있다.

인재상에서는 해당 조직이 어떤 식으로 움직이는지에 대한 힌트를 제공한다.

 

채용이란 상대적으로 기업이 약간 유리한 위치에서 지원자를 선택하는 과정이긴 하지만, 궁극적으로 지원자와 조직의 (기술적, 문화적) 합이 잘 맞을지 서로 맞춰보는 맞선자리가 되어야 한다. 그래야지만 가족들보다 더 많은 시간을 보내게 되는 회사에서 개인도, 조직도 원하는 목적으로 맞춰진 행동을 통해 원하는 바를 이룰 수 있을테니까 말이다.

나중에 우리 부서의 JD도 이렇게 적어봐야 겠다.

 

https://www.dreamhaven.com/job-opportunities/senior-platform-engineer-publishing-platform

 

Platform Engineer, Publishing Platform at Dreamhaven - Join us!

Full-time role in Irvine, CA

www.dreamhaven.com

 

What we need

  • Experience working with a variety of Amazon Web Services; Google Cloud Platform experience a plus
  • Experience working with backends (e.g. Playfab, Epic Online Services, etc.)
  • Experience providing a software service, SDK, or API to internal or external teams
  • Understanding of Platform as a Service (PaaS) and general product management ideas
  • Experience integrating multiple software solutions into a cohesive offering
  • Experience in general game client/server development  
  • Experience with C++; Go and/or C# a plus
  • Python, JavaScript/Node.js or equivalent scripting language preferred
  • Generalist in application systems (authentication, authorization, commerce, accounts, profiles, matchmaking, etc.)
  • Knowledge in large scale application architecture a plus
  • Knowledge integrating with Steam, Xbox Live, PlayStation Network; iOS and Android a plus
  • Unreal and/or Unity experience a plus
  • Cloud security and governance experience a plus

Who you are

  • Customer-focused (game studios, other internal stakeholders, and our players)
  • Open to new challenges and resourceful in finding solutions collaboratively
  • Possesses a passion for working on platforms supporting multiple game teams
  • Willingness to dive into unknowns and do lots of research
  • Comfortable working with not well defined problems and work to define and resolve methodically
  • You play some games on some platforms (mobile phones, PC or consoles)

Other Information

  • Remote work will be considered on a case-by-case basis as on-site work is preferred

+ Recent posts