프로세스 고정 고려 사항

완료됨

프로세스 및 스레드를 고정하는 이유는 무엇인가요?

항상 프로세스를 특정 코어에 고정하면 최대 성능을 실현하고 실행 간에 더욱 일관된 성능을 얻을 수 있기 때문입니다.

프로세스 고정:

  • 모든 메모리 채널을 사용하고 해당 채널을 코어 간에 균등하게 분산하는 위치에 프로세스를 배치하거나 고정하여 메모리 대역폭을 최대화합니다.

  • 각 프로세스가 고유한 코어에 있는지를 보장하여 부동 소수점 성능을 개선합니다. 이렇게 하면 두 프로세스가 동일한 코어에 있을 가능성이 없어집니다.

  • NUMA(Non-Uniform Memory Access) 도메인 노드에서 통신하는 프로세스를 배치하여 프로세스 간 데이터 이동을 최적화합니다. 이렇게 하면 대기 시간은 가장 낮고 대역폭은 가장 높습니다.

  • 운영 체제가 프로세스를 다른 코어 또는 NUMA 도메인으로 옮길 수 없기 때문에 운영 체제 오버헤드가 감소하고 더욱 일관된 결과를 얻을 수 있습니다.

프로세스 및 스레드는 어디에 고정하나요?

프로세스 및 스레드를 고정할 위치를 결정하려면 프로세서 및 메모리 토폴로지뿐 아니라 특히 NUMA 도메인의 수 및 위치를 이해해야 합니다.

lstopo-no-graphics 유틸리티(hwloc RPM)와 Intel MLC(메모리 대기 시간 검사기)가 프로세서 및 메모리 토폴로지를 확인하는 데 유용한 도구입니다. 예: VM에 포함된 NUMA 도메인은 몇 개인가요? 각 NUMA 도메인을 구성하는 코어는 무엇인가요? 각 NUMA 도메인에서 프로세스가 서로 통신할 때 대기 시간 및 대역폭은 무엇인가요?

다음 이미지는 Intel MLC에서 생성되는 HB120_v2 NUMA 도메인 대기 시간 맵입니다. NUMA 도메인 간의 대기 시간이 낮을수록 통신 속도가 빨라집니다. 해당 일러스트레이션은 HB120_v2에 NUMA 도메인이 30개라는 것과 각 NUMA 도메인이 어느 소켓에 있는지를 확실하게 보여 줍니다. 또한 가장 낮은 데이터 전송 및 통신 대기 시간을 얻기 위해 함께 그룹화할 수 있는 NUMA 도메인을 보여 줍니다.

HB120_v2 NUMA 도메인 대기 시간 맵을 보여 주는 이미지

Intel 프로세서에는 6개의 메모리 채널이 있고 AMD EPYC 프로세서에는 8개의 메모리 채널이 있습니다. 사용 가능한 메모리 대역폭을 최대화하려면 모든 메모리 채널을 사용합니다. NUMA 노드 도메인 간에 병렬 프로세스를 균등하게 분산하면 이렇게 할 수 있습니다. 하이브리드 병렬 애플리케이션의 경우 동일한 NUMA 도메인에서 프로세스/스레드 그룹화를 유지합니다. 동일한 L3 캐시를 공유하는 것이 가장 좋습니다. 총 스레드 수가 총 코어 수를 초과하지 않는지 확인합니다.

다음 이미지는 2개의 NUMA 도메인과 44개의 코어가 있는 HC44 SKU입니다.

HC44 NUMA 도메인을 보여 주는 이미지

다음 이미지는 15개의 NUMA 도메인과 60개의 코어가 있는 HB60 SKU입니다.

HB60 NUMA 도메인을 보여 주는 이미지

메모리 대역폭에 바인딩되는 애플리케이션

메모리 대역폭으로 바인딩되는 애플리케이션이 있는 경우 각 NUMA 노드 도메인의 병렬 프로세스 및 스레드 수를 줄여 VM에서 성능을 향상할 수 있습니다. 이렇게 하면 프로세스당 메모리 대역폭을 더 확보하고 실제 소요 시간을 단축할 수 있습니다.

예를 들어 NUMA 노드 도메인이 30개 있는 HB120_v2 SKU를 사용하는 경우 NUMA 노드 도메인당 프로세스 및 스레드를 1개, 2개, 3개로(예: VM당 30개, 60개, 90개 프로세스 및 스레드) 실행할 수 있습니다. 이렇게 하면 최상의 성능을 제공하는 구성을 찾을 수 있습니다.