도커의 문서를 읽는 도중 CFS
라는 스케쥴러가 기본값이라고 한다.
나는 Windows에서 WSL2를 이용하여 Docker를 사용 중에 있는데
어떠한 스케쥴링 방식을 쓰는 것 인지 궁금하여 찾아 보았습니다.
https://docs.docker.com/config/containers/resource_constraints/#cpu
하이퍼바이저는 가상머신(Virtual Machine)을 생성하고 구동하는 소프트웨어 입니다. (VMM이라고도 함)
하이퍼바이저로 사용되는 물리 하드웨어를 호스트
리소스를 사용하는 여러 VM을 게스트
라고 합니다.
하이퍼바이저에는 타입 1과 타입 2, 두 가지 유형이 있습니다.
타입 1의 하이퍼바이저의 경우 호스트
하드웨어에서 직접 실행되어
하드웨어를 제어하고 게스트
VM을 관리합니다.
가상 시스템 또는 게스트 운영 체제 중 문제가 발생하더라도 다른 게스트 운영체제에 영향을 미치지 않습니다.
MS의 Hyper-V, VMware 등등.
기존 Hyper-v와 wsl2를 사용하는 경우 VMware
또는 VirtualBox
와 같은 서드파티 하이퍼바이저와 동시 실행이 불가능 했지만 MS Hyper-V APIs
가 공개되면서 동시성이 지원됩니다.
https://github.com/MicrosoftDocs/WSL/issues/719
https://docs.microsoft.com/en-us/virtualization/api/
https://blogs.vmware.com/workstation/2020/05/vmware-workstation-now-supports-hyper-v-mode.html
호스트 된 하이퍼바이저라고 불리며 다른 Application과 마찬가지로 OS에서 실행됩니다.
호스트 운영체제에 전적으로 의존합니다.
즉, 운영체제의 문제가 시스템에 영향을 줍니다.
VitualBox, Parallels Desktop for Mac
Windows Subsytem Linux 2
https://docs.microsoft.com/en-us/windows/wsl/about
보통 우리가 도커라고 부르는 것은 Docker Client
로
CLI나 Compose를 지원합니다.
여기서 중요한 점은 Docker는 Linux
환경에서 작동 되는데
Linux 환경을 손쉽게 제공 해주는 것이 Docker Desktop
입니다.
Hyper-v + WSL2 위에서 동작.
Docker Desktop은 GUI, k8s, Plugin 등등 제공.
얼마 전 유료화 하겠다고 했던 것이 Docker Desktop.
Docker 자체는 오픈소스입니다.
Docker Desktop을 사용하지 않고 Docker 사용하는 방법은 다음 링크를 참고하세요.
https://blog.bsk.im/2021/09/07/macos-docker-without-docker-feat-minikube-ko/
Completely Fair Scheduler
하이퍼바이저가 각각의 게스트 OS의 명령을 하드웨어가 이해 가능한 하나의 명령어로 번역을 해준다고 합니다.
따라서 Docker(리눅스)의 CFS가 Hyper-v에 의해 어떻게 번역되는가에 따라 다르다 생각듭니다.
정확하지 않은 제 주관적인 생각입니다. 아시는 분은 댓글 부탁드려요.
메모리는 운영체제에서 관리한다.
하이퍼바이저의 게스트 머신으로 WSL이 있다.
WSL2의 커널이 메모리를 관리한다.
즉, WSL이 메모리 페이지 사이즈도 관리한다.
다음 C 스니펫을 이용해 얻을 수 있습니다.
#include <stdio.h>
#include <windows.h>
int main(void)
{
SYSTEM_INFO si;
GetSystemInfo(&si);
printf("The page size for this system is %u bytes.\n", si.dwPageSize);
return 0;
}
출처 : https://en.wikipedia.org/wiki/Page_%28computer_memory%29#Windows-based_operating_systems
wsl2에서 아래 명령어로 확인가능.
4096 출력. (bytes 단위)
$ getconf PAGESIZE
https://www.redhat.com/ko/topics/virtualization/what-is-a-hypervisor#%EA%B0%9C%EC%9A%94