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
'HPC > Slurm' 카테고리의 다른 글
[Slurm] slurm.conf에서 SelectTypeParameters와 하이퍼 스레딩의 연관성 (0) | 2025.02.02 |
---|---|
[Slurm]Slurm 환경에서 Abaqus 작업 프로세스가 잔존하는 문제 해결 (0) | 2024.12.23 |
[SLURM] SBATCH(2) (0) | 2024.09.09 |
[SLURM] SBATCH(1) (0) | 2024.09.06 |
[SLURM] SRUN 명령어 (1) | 2024.09.05 |