본문 바로가기
HPC/Slurm

[HPC] 하이퍼스레딩(Hyper-Threading) & Slurm 관계

by Yoon_estar 2025. 1. 22.
728x90

1. 하이퍼 스레딩(Hyper-Threading)

1.1 정의

  • 하이퍼스레딩은 Intel에서 제공하는 CPU 기술로, 하나의 물리적 코어가 두 개의 논리적 코어처럼 작동하도록 만든다.
  • 이를 통해 단일 코어에서 더 많은 쓰레드를 처리하여 CPU 자원을 보다 효율적으로 사용할 수 있다.

1.2 작동 원리

  • 각 물리적 코어가 두 개의 하드웨어 스레드(Hardware Thread)를 관리한다.
  • 스레드 간에 사용하지 않는 CPU 자원을 공유하여 작업 병렬 처리를 개선
  • 특정 워크로드에서 성능이 향상되지만, 메모리 대역폭 또는 캐시 충돌이 심한 작업에서는 효과가 미미하거나 성능 저하가 발생할 수도 있음

1.3 장.단점

  • 장점 : IO 바운드 또는 멀티 스레드 작업에서 CPU 사용률을 극대화
  • 단점 : CPU 리소스가 스레드 간 공유되므로 과도하게 활용하면 오히려 병목 현상이 발생

 

2. 하이퍼 스레딩 활성화 시 발생 가능한 문제

2.1 과도한 리소스 공유로 인한 성능 저하

  • 하이퍼스레딩은 두 개의 논리적 코어(Logical Core)가 하나의 물리적 코어(Physical Core)를 공유한다.
  • CPU 집약적 작업에서 두 논리적 코어가 동일한 물리적 코어를 공유하게 되면, 실행 유닛, 캐시, 메모리 대역폭 등 하드웨어 자원이 부족해져 성능 병목이 발생
  • Slurm이 논리적 코어를 독립된 자원으로 인식해 작업을 스케줄링하면, CPU 집약적인 작업에서 물리적 코어 당 두 개의 작업이 실행되므로 성능이 예상보다 크게 떨어질 수 있음

2.2 작업 스케줄링 문제

  • SLURM이 논리적 코어를 별도의 CPU로 인식하면, 동일한 물리적 코어의 두 논리적 코어에 작업이 할당될 가능성이 높아짐
  • 이 경우, 물리적 코어릐 자원을 효율적으로 활용하지 못하고 오히려 부하가 증가하여 작업 간 간섭이 발생함

2.3 작업 격리 부족

  • 하이퍼스레딩 환경에서, 동일한 물리적 코어를 공유하는 논리적 코어들 간에 작업의 메모리 접근 또는 캐시 사용이 충돌할 수 있음
  • SLURM이 이를 고려하지 않고 자원을 할당하면, 작업 성능이 예기치 않게 저하될 수 있음

2.4 스레드 간 과부하

  • 일부 작업은 멀티 스레드로 설계되어 있으나, 논리적 코어를 독립적으로 처리하지 못함
  • 이런 경우, 물리적 코어에 두 개의 작업 스레드가 배치되면 오히려 성능이 감소하는 결과를 초래

2.5 메모리 및 NUMA 관련 이슈

  • 하이퍼스레딩이 활성화된 환경에서 NUMA(Non-Uniform Memory Access) 설정이 제대로 관리되지 않으면, 작업이 잘못된 메모리 영역에 접근하여 메모리 지연(latency) 문제가 발생할 수 있음
  • 특히 SLURM이 작업을 특정 NUMA 노드에 올바르게 할당하지 못할 경우 병목 현상이 나타남

3. 문제 해결 방안

하이퍼스레딩 비활성화

  • 하이퍼스레딩을 비활성화하여 논리적 코어 대신 물리적 코어만 SLURM에서 사용하도록 설정\
  • 하이퍼스레딩 비활성화 방법
    • BIOS/UEFI 설정에서 하이퍼스레딩 비활성화
# lscpu | grep Thread
Thread(s) per core:  1