Windows 컨테이너에 대한 리소스 컨트롤 구현

적용 대상: Windows Server 2022, Windows Server 2019

컨테이너당 및 리소스별로 구현할 수 있는 여러 리소스 컨트롤이 있습니다. 기본적으로 컨테이너 실행은 일반적인 Windows 리소스 관리의 적용을 받으며, 일반적으로 공평한 공유 기반이지만 이러한 컨트롤의 구성은 개발자 또는 관리자가 리소스 사용을 제한하거나 영향을 줄 수 있습니다. 제어할 수 있는 리소스에는 CPU/프로세서, 메모리/RAM, 디스크/스토리지 및 네트워킹/처리량이 포함됩니다.

Windows 컨테이너는 작업 개체활용하여 각 컨테이너와 연결된 프로세스를 그룹화하고 추적합니다. 리소스 컨트롤은 컨테이너와 연결된 부모 작업 개체에 구현됩니다.

Hyper-V 격리 리소스 컨트롤이 가상 머신과 가상 머신 내에서 실행되는 컨테이너의 작업 개체에 모두 자동으로 적용되는 경우 컨테이너에서 실행되는 프로세스가 작업 개체 컨트롤을 우회하거나 이스케이프하더라도 가상 머신이 정의된 리소스 컨트롤을 초과할 수 없도록 합니다.

리소스

각 리소스에 대해 이 섹션에서는 리소스 제어를 사용하는 방법(오케스트레이터 또는 다른 도구로 구성될 수 있음)과 해당 Windows HCS(호스트 컴퓨팅 서비스) API에 대한 예제로 Docker 명령줄 인터페이스 간의 매핑을 제공합니다. 일반적으로 Windows에서 리소스 제어를 구현하는 방법은 다음과 같습니다(이 설명은 높은 수준이며 기본 구현은 변경될 수 있음).

메모리

리소스 위치
Docker 인터페이스 --memory
HCS 인터페이스 MemoryMaximumInMB
공유 커널 JOB_OBJECT_LIMIT_JOB_MEMORY
Hyper-V 격리 가상 머신 메모리

참고 항목

Windows Server 2016의 Hyper-V 격리의 경우 메모리 캡을 사용할 때 컨테이너가 처음에 메모리 캡 용량을 할당한 다음, 컨테이너 호스트로 반환하기 시작합니다. 이후 버전의 Windows Server(1709 이상)는 이 프로세스를 최적화했습니다.

CPU(수)

리소스 위치
Docker 인터페이스 --cpus
HCS 인터페이스 ProcessorCount
공유 커널 JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP 사용하여 시뮬레이션*
Hyper-V 격리 노출된 가상 프로세서 수

CPU(백분율)

리소스 위치
Docker 인터페이스 --cpu-percent
HCS 인터페이스 ProcessorMaximum
공유 커널 JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP
Hyper-V 격리 가상 프로세서에 대한 하이퍼바이저 제한

CPU(공유)

리소스 위치
Docker 인터페이스 --cpu-shares
HCS 인터페이스 ProcessorWeight
공유 커널 JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED
Hyper-V 격리 하이퍼바이저 가상 프로세서 가중치

스토리지(이미지)

리소스 위치
Docker 인터페이스 --io-maxbandwidth/--io-maxiops
HCS 인터페이스 StorageIOPSMaximum 및 StorageBandwidthMaximum
공유 커널 JOBOBJECT_IO_RATE_CONTROL_INFORMATION
Hyper-V 격리 JOBOBJECT_IO_RATE_CONTROL_INFORMATION

스토리지(볼륨)

리소스 위치
Docker 인터페이스 --storage-opt size=
HCS 인터페이스 StorageSandboxSize
공유 커널 JOBOBJECT_IO_RATE_CONTROL_INFORMATION
Hyper-V 격리 JOBOBJECT_IO_RATE_CONTROL_INFORMATION

추가 참고 사항 또는 세부 정보

메모리 요구 사항

Windows 컨테이너는 일반적으로 사용자 관리, 네트워킹 등과 같은 컨테이너별 기능을 제공하는 일부 시스템 프로세스를 각 컨테이너에서 실행합니다. 이러한 프로세스에 필요한 메모리의 대부분은 컨테이너 간에 공유되지만 메모리 한도는 이를 허용할 만큼 충분히 높아야 합니다. 테이블은 Hyper-V 격리와 함께 또는 사용하지 않고 각 기본 이미지 유형에 대한 시스템 요구 사항 문서에 제공됩니다.

CPU 공유(Hyper-V 격리 없음)

CPU를 사용하는 경우 기본 구현(Hyper-V 격리를 사용하지 않는 경우)은 JOBOBJECT_CPU_RATE_CONTROL_INFORMATION 구성하며, 특히 컨트롤 플래그를 JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED 설정하고 적절한 가중치를 제공합니다. 작업 개체의 유효한 가중치 범위는 1 – 9이며, 기본값은 5이며, 이는 호스트 컴퓨팅 서비스 값 1 – 10000보다 낮은 충실도입니다. 예를 들어 공유 가중치가 7500이면 가중치가 7이거나 공유 가중치가 2500이면 값이 2가 됩니다.