12.2. NUMA 인식 스케줄링에 관하여
NUMA 인식 스케줄링은 요청된 클러스터 컴퓨팅 리소스(CPU, 메모리, 장치)를 동일한 NUMA 영역에 정렬하여 지연에 민감한 작업이나 고성능 작업을 효율적으로 처리합니다. NUMA 인식 스케줄링은 더욱 큰 리소스 효율성을 위해 컴퓨팅 노드당 포드 밀도도 개선합니다.
12.2.1. 노드 튜닝 운영자와의 통합 링크 복사링크가 클립보드에 복사되었습니다!
Node Tuning Operator의 성능 프로필을 NUMA 인식 스케줄링과 통합하면 대기 시간에 민감한 워크로드의 성능을 최적화하기 위해 CPU 친화성을 추가로 구성할 수 있습니다.
12.2.2. 기본 스케줄링 로직 링크 복사링크가 클립보드에 복사되었습니다!
기본 OpenShift Container Platform Pod 스케줄러 스케줄링 논리는 개별 NUMA 영역이 아닌 전체 컴퓨팅 노드의 사용 가능한 리소스를 고려합니다. Kubelet 토폴로지 관리자에서 가장 제한적인 리소스 정렬이 요청되면 포드를 노드에 허용할 때 오류 상황이 발생할 수 있습니다. 반대로, 가장 제한적인 리소스 정렬이 요청되지 않으면 포드가 적절한 리소스 정렬 없이 노드에 입장할 수 있으며, 이로 인해 성능이 저하되거나 예측할 수 없게 됩니다. 예를 들어, 토폴로지 친화성 오류
상태가 있는 폭주형 포드 생성은 포드 스케줄러가 포드의 요청된 리소스가 사용 가능한지 알지 못한 채 보장된 포드 워크로드에 대해 최적이 아닌 스케줄링 결정을 내릴 때 발생할 수 있습니다. 예약 불일치 결정으로 인해 Pod 시작 지연이 발생할 수 있습니다. 또한 클러스터 상태와 리소스 할당에 따라 잘못된 Pod 스케줄링 결정으로 인해 시작 시도가 실패하여 클러스터에 추가 부하가 발생할 수 있습니다.
12.2.3. NUMA 인식 Pod 스케줄링 다이어그램 링크 복사링크가 클립보드에 복사되었습니다!
NUMA 리소스 운영자는 사용자 지정 NUMA 리소스 보조 스케줄러와 기타 리소스를 배포하여 기본 OpenShift Container Platform Pod 스케줄러의 단점을 완화합니다. 다음 다이어그램은 NUMA 인식 Pod 스케줄링에 대한 간략한 개요를 제공합니다.
그림 12.1. 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
엔드포인트는 노드에서 사용 가능한 할당 가능한 리소스를 노출합니다.