6장. NUMA 인식 워크로드 예약
NUMA 인식 스케줄링과 이를 사용하여 OpenShift Container Platform 클러스터에서 고성능 워크로드를 배포하는 방법에 대해 알아보십시오.
NUMA 인식 스케줄링은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
NUMA 리소스 Operator를 사용하면 동일한 NUMA 영역에 고성능 워크로드를 예약할 수 있습니다. 사용 가능한 클러스터 노드 NUMA 리소스에 보고하는 노드 리소스 내보내기 에이전트와 워크로드를 관리하는 보조 스케줄러를 배포합니다.
6.1. NUMA 인식 스케줄링 정보
NUMA(Non-Uniform Memory Access)는 다른 CPU가 다른 속도로 다양한 메모리에 액세스할 수 있도록 하는 컴퓨팅 플랫폼 아키텍처입니다. NUMA 리소스 토폴로지는 계산 노드에서 서로 상대적 CPU, 메모리 및 PCI 장치의 위치를 나타냅니다. 공동 배치 리소스는 동일한 NUMA 영역에 있다고 합니다. 고성능 애플리케이션의 경우 클러스터는 단일 NUMA 영역에서 Pod 워크로드를 처리해야 합니다.
NUMA 아키텍처를 사용하면 여러 메모리 컨트롤러가 있는 CPU는 메모리가 있는 위치와 관계없이 CPU 복잡성에서 사용 가능한 메모리를 사용할 수 있습니다. 이렇게 하면 성능이 저하될 때 유연성이 향상됩니다. NUMA 영역 외부에 있는 메모리를 사용하여 워크로드를 처리하는 CPU는 단일 NUMA 영역에서 처리된 워크로드보다 속도가 느립니다. 또한 I/O-constrained 워크로드의 경우 멀리 있는 NUMA 영역의 네트워크 인터페이스가 애플리케이션에 도달하는 속도가 얼마나 빠르게 느려집니다. 통신 워크로드와 같은 고성능 워크로드는 이러한 조건에서 사양으로 작동할 수 없습니다. NUMA 인식 스케줄링은 지연에 민감한 또는 고성능 워크로드를 효율적으로 처리하기 위해 동일한 NUMA 영역의 요청된 클러스터 컴퓨팅 리소스(CPU, 메모리, 장치)를 조정합니다. NUMA 인식 스케줄링은 리소스 효율성을 높이기 위해 컴퓨팅 노드당 Pod 밀도도 향상시킵니다.
기본 OpenShift Container Platform Pod 스케줄러 스케줄링 논리는 개별 NUMA 영역이 아닌 전체 컴퓨팅 노드의 사용 가능한 리소스를 고려합니다. kubelet 토폴로지 관리자에서 가장 제한적인 리소스 정렬을 요청하는 경우 노드에 Pod를 허용할 때 오류 조건이 발생할 수 있습니다. 반대로 가장 제한적인 리소스 정렬을 요청하지 않으면 Pod를 적절한 리소스 정렬 없이 노드에 허용하여 성능이 저하되거나 예측할 수 없는 성능이 저하될 수 있습니다. 예를 들어 Pod 스케줄러가 Pod의 요청된 리소스를 사용할 수 있는지 여부를 확인하지 않고 보장된 Pod 워크로드에 대한 하위 최적화 스케줄링 결정을 내릴 때 Topology Affinity
Errors를 사용한 실행 Pod 생성이 발생할 수 있습니다. 예약 불일치 결정으로 인해 Pod 시작 지연이 발생할 수 있습니다. 또한 클러스터 상태 및 리소스 할당에 따라 Pod 예약 결정이 실패한 시작 시도로 인해 클러스터에 추가 로드가 발생할 수 있습니다.
NUMA 리소스 Operator는 사용자 정의 NUMA 리소스 보조 스케줄러 및 기타 리소스를 배포하여 기본 OpenShift Container Platform Pod 스케줄러의 단점에 대해 완화합니다. 다음 다이어그램에서는 NUMA 인식 Pod 스케줄링에 대한 고급 개요를 제공합니다.
그림 6.1. NUMA 인식 스케줄링 개요
- NodeResourceTopology API
-
NodeResourceTopology
API는 각 컴퓨팅 노드에서 사용 가능한 NUMA 영역 리소스를 설명합니다. - NUMA 인식 스케줄러
-
NUMA 인식 보조 스케줄러는
NodeResourceTopology
API에서 사용 가능한 NUMA 영역에 대한 정보를 수신하고 최적으로 처리할 수 있는 노드에서 고성능 워크로드를 예약합니다. - 노드 토폴로지 내보내기
-
노드 토폴로지 내보내기자는 각 계산 노드에 대해 사용 가능한 NUMA 영역 리소스를
NodeResourceTopology
API에 노출합니다. 노드 토폴로지 내보내기 데몬은PodResources
API를 사용하여 kubelet에서 리소스 할당을 추적합니다. - PodResources API
-
PodResources
API는 각 노드의 로컬이며 리소스 토폴로지 및 사용 가능한 리소스를 kubelet에 노출합니다.
추가 리소스
- 클러스터에서 보조 Pod 스케줄러 실행 및 보조 Pod 스케줄러를 사용하여 Pod를 배포하는 방법에 대한 자세한 내용은 보조 스케줄러 를 사용하여 Pod 스케줄링을 참조하십시오.