23.2. 시스템 토폴로지 유형
최신 컴퓨팅에서 단일 CPU에 대한 개념은 대부분의 최신 시스템에 여러 프로세서가 있으므로 잘못된 CPU입니다. 시스템의 토폴로지는 이러한 프로세서가 서로 그리고 다른 시스템 리소스에 연결된 방법입니다. 이는 시스템 및 애플리케이션 성능과 시스템의 튜닝 고려 사항에 영향을 미칠 수 있습니다.
다음은 최신 컴퓨팅에서 사용되는 두 가지 주요 토폴로지 유형입니다.
- 대칭 SMP(Multi-Processor) 토폴로지
- SMP 토폴로지를 사용하면 모든 프로세서가 동일한 시간 내에 메모리에 액세스할 수 있습니다. 그러나 공유 및 동일한 메모리 액세스가 본질적으로 모든 CPU에서 직렬화된 메모리 액세스를 강제 적용하므로 이제 SMP 시스템 확장 제약 조건이 일반적으로 허용되지 않는 것으로 간주됩니다. 이러한 이유로, 거의 모든 최신 서버 시스템은 NUMA 시스템입니다.
- NUMA(Non-Uniform Memory Access) 토폴로지
NUMA 토폴로지는 최근 SMP 토폴로지보다 더 최근에 개발되었습니다. NUMA 시스템에서 여러 프로세서는 물리적으로 소켓에 그룹화됩니다. 각 소켓에는 전용 메모리 영역이 있으며 해당 소켓의 프로세서는 이 메모리에 대한 로컬 액세스 권한을 갖습니다. 소켓, 해당 메모리 및 관련 프로세서가 함께 노드라고 하는 것을 형성합니다. 동일한 노드의 프로세서는 노드의 메모리 뱅크에 대한 고속 액세스와 다른 노드의 메모리 뱅크에 대한 액세스 속도가 느려집니다.
결과적으로 로컬이 아닌 메모리에 액세스할 때 성능이 저하됩니다. 따라서 NUMA 토폴로지가 있는 시스템에서 성능에 민감한 애플리케이션은 애플리케이션을 실행하는 프로세서와 동일한 노드에 있는 메모리에 액세스해야 하며 가능한 경우 원격 메모리에 액세스하지 않아야 합니다.
성능에 민감한 다중 스레드 애플리케이션은 특정 프로세서가 아닌 특정 NUMA 노드에서 실행되도록 구성할 수 있습니다. 이것이 적합한지 여부는 시스템 및 애플리케이션의 요구 사항에 따라 달라집니다.
- 여러 애플리케이션 스레드가 동일한 캐시된 데이터에 액세스하는 경우 동일한 프로세서에서 실행되도록 해당 스레드를 구성하는 것이 적합할 수 있습니다.
-
다른 데이터에 액세스하고 캐시하는 여러 스레드가 동일한 프로세서에서 실행되는 경우 각 스레드는 이전 스레드에서 액세스하는 캐시된 데이터를 제거할 수 있습니다. 즉, 각 스레드가 캐시를 '허용하고 메모리에서 데이터를 가져와서 캐시에서 교체하는 실행 시간을 삭제합니다.
perf툴을 사용하여 과도한 수의 캐시 누락을 확인합니다.