9장. NUMA 인식 워크로드 예약


NUMA 인식 스케줄링 및 이를 사용하여 OpenShift Container Platform 클러스터에 고성능 워크로드를 배포하는 방법을 알아봅니다.

NUMA 리소스 Operator를 사용하면 동일한 NUMA 영역에 고성능 워크로드를 예약할 수 있습니다. 사용 가능한 클러스터 노드 NUMA 리소스와 워크로드를 관리하는 보조 스케줄러에 보고하는 노드 리소스를 배포합니다.

9.1. NUMA 인식 스케줄링 정보

NUMA 소개

NUMA(Non-Uniform Memory Access)는 서로 다른 CPU가 다른 속도로 다른 메모리 영역에 액세스할 수 있도록 하는 컴퓨팅 플랫폼 아키텍처입니다. NUMA 리소스 토폴로지는 계산 노드에서 서로 상대적인 CPU, 메모리 및 PCI 장치의 위치를 나타냅니다. 배치된 리소스는 동일한 NUMA 영역에 있다고 합니다. 고성능 애플리케이션의 경우 클러스터는 단일 NUMA 영역에서 Pod 워크로드를 처리해야 합니다.

성능 고려 사항

NUMA 아키텍처를 사용하면 여러 메모리 컨트롤러가 있는 CPU에서 메모리가 있는 위치에 관계없이 CPU 복잡한 CPU에서 사용 가능한 메모리를 사용할 수 있습니다. 이렇게 하면 성능이 저하될 때 유연성이 향상됩니다. NUMA 영역 외부에 있는 메모리를 사용하여 워크로드를 처리하는 CPU는 단일 NUMA 영역에서 처리된 워크로드보다 느립니다. 또한 I/O가 제한적인 워크로드의 경우 원격 NUMA 영역의 네트워크 인터페이스가 애플리케이션에 도달하는 속도가 느려집니다. 통신 워크로드와 같은 고성능 워크로드는 이러한 조건에서 사양에 따라 작동할 수 없습니다.

NUMA 인식 스케줄링

NUMA 인식 스케줄링은 동일한 NUMA 영역에 요청된 클러스터 컴퓨팅 리소스(CPU, 메모리, 장치)를 조정하여 대기 시간에 민감하거나 고성능 워크로드를 효율적으로 처리합니다. NUMA 인식 스케줄링은 리소스 효율성을 높이기 위해 컴퓨팅 노드당 Pod 밀도를 향상시킵니다.

Node Tuning Operator와의 통합

Node Tuning Operator의 성능 프로필을 NUMA 인식 스케줄링과 통합하면 대기 시간에 민감한 워크로드에 대한 성능을 최적화하도록 CPU 선호도를 추가로 구성할 수 있습니다.

기본 스케줄링 논리

기본 OpenShift Container Platform Pod 스케줄러 스케줄링 논리는 개별 NUMA 영역이 아닌 전체 컴퓨팅 노드의 사용 가능한 리소스를 고려합니다. kubelet 토폴로지 관리자에서 가장 제한적인 리소스 정렬이 요청되면 노드에 Pod를 허용할 때 오류 상태가 발생할 수 있습니다. 반대로, 가장 제한적인 리소스 정렬을 요청하지 않으면 적절한 리소스 정렬 없이 Pod를 노드에 허용하여 성능이 저하되거나 예측할 수 없습니다. 예를 들어 Pod 스케줄러에서 Pod의 요청된 리소스를 사용할 수 있는지 확인하지 않고 보장된 Pod 워크로드에 대한 하위 스케줄링 결정을 내릴 때 Topology Affinity Error 를 사용한 runaway Pod 생성이 발생할 수 있습니다. 예약 불일치 결정으로 인해 Pod 시작 지연이 발생할 수 있습니다. 또한 클러스터 상태 및 리소스 할당에 따라 잘못된 Pod 예약 결정으로 인해 시작 시도가 실패했기 때문에 클러스터에 추가 로드가 발생할 수 있습니다.

NUMA 인식 Pod 스케줄링 다이어그램

NUMA 리소스 Operator는 사용자 정의 NUMA 리소스 보조 스케줄러 및 기타 리소스를 배포하여 기본 OpenShift Container Platform Pod 스케줄러의 단점에 대해 완화합니다. 다음 다이어그램에서는 NUMA 인식 Pod 예약에 대한 개괄적인 개요를 보여줍니다.

그림 9.1. NUMA 인식 스케줄링 개요

클러스터에서 다양한 구성 요소가 서로 상호 작용하는 방법을 보여주는 NUMA 인식 스케줄링 다이어그램
NodeResourceTopology API
NodeResourceTopology API는 각 컴퓨팅 노드에서 사용 가능한 NUMA 영역 리소스를 설명합니다.
NUMA 인식 스케줄러
NUMA 인식 보조 스케줄러는 NodeResourceTopology API에서 사용 가능한 NUMA 영역에 대한 정보를 수신하고 최적으로 처리할 수 있는 노드에서 고성능 워크로드를 예약합니다.
노드 토폴로지 내보내기
노드 토폴로지 내보내기는 각 컴퓨팅 노드에 대해 사용 가능한 NUMA 영역 리소스를 NodeResourceTopology API에 노출합니다. 노드 토폴로지 내보내기 데몬은 PodResources API를 사용하여 kubelet의 리소스 할당을 추적합니다.
PodResources API

PodResources API는 각 노드에 로컬이며 리소스 토폴로지 및 사용 가능한 리소스를 kubelet에 노출합니다.

참고

PodResources API의 List 끝점은 특정 컨테이너에 할당된 전용 CPU를 노출합니다. API는 공유 풀에 속하는 CPU를 노출하지 않습니다.

GetAllocatableResources 끝점은 노드에서 사용 가능한 할당 가능한 리소스를 노출합니다.

추가 리소스

  • 클러스터에서 보조 Pod 스케줄러를 실행하는 방법 및 보조 Pod 스케줄러를 사용하여 Pod를 배포하는 방법에 대한 자세한 내용은 보조 스케줄러 를 사용하여 Pod 예약을 참조하십시오.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.