다음을 통해 공유


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

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

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

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

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

리소스

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

기억

자원 위치
Docker 인터페이스 --기억
HCS 인터페이스 메모리최대MB
공유 커널 JOB_OBJECT_LIMIT_JOB_MEMORY (작업 객체 메모리 제한)
Hyper-V 격리 가상 머신 메모리

메모

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

CPU(개수)

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

CPU(백분율)

자원 위치
Docker 인터페이스 --cpu-percent (CPU 사용률)
HCS 인터페이스 프로세서 최대값
공유 커널 JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP
Hyper-V 격리 가상 프로세서에 대한 하이퍼바이저 제한

CPU(공유)

자원 위치
Docker 인터페이스 --cpu-shares (CPU 공유 비율 설정)
HCS 인터페이스 ProcessorWeight
공유 커널 작업 개체 CPU 비율 제어 (가중치 기반)
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 크기 지정=
HCS 인터페이스 저장소샌드박스크기
공유 커널 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가 됩니다.