BIOS/SMT Control

From HPCWIKI
Revision as of 14:26, 16 July 2026 by Clara (talk | contribs) (Phase 6.1: LLM-Optimized Wiki Template 적용)
Jump to navigation Jump to search

Template:Status

Template:TOC

Overview

SMT(Simultaneous Multithreading)은 단일 물리적 CPU 코어에서 여러 실행 스레드를 동시에 처리하는 기술입니다. Intel에서는 Hyper-Threading(HT)이라는 이름으로 알려져 있습니다.

Summary

  • 무엇인가? 단일 CPU 코어에서 여러 스레드 동시 실행 기술 (Intel: Hyper-Threading)
  • 왜 필요한가? CPU 코어 활용도 향상, 멀티스레드 워크로드 성능 개선
  • 언제 사용하는가? 컴파일, 가상화, 데이터베이스, 웹 서버 등 멀티스레드 애플리케이션

---

Purpose

이 문서가 존재하는 이유

  • Goal: SMT의 개념, 확인 방법, 제어 방법, AMD SMT 설정 가이드 제공
  • Scope: SMT 기본 개념, 리눅스 커널 SMT 제어, BIOS SMT 설정
  • Non-goals: CPU 아키텍처 상세 프로토콜, 코어 내부 파이프라인 설계

---

Key Concepts

Concept Description Related
SMT Simultaneous Multithreading — 단일 코어에서 여러 스레드 동시 실행 CPU preferred computing
Hyper-Threading Intel의 SMT 구현체 — HT라고도 불림 SMT
Logical CPU OS가 인식하는 가상 코어 — 물리적 코어 x 스레드 수 lscpu
Thread Siblings 같은 물리적 코어를 공유하는 스레드 그룹 CPUs online or offline
L1TF L1 Terminal Fault — SMT 관련 보안 취약점 SMT

---

Architecture

SMT 동작 원리:

graph TD
    A[물리적 CPU 코어] --> B[Execution Units]
    A --> C[Register File]
    A --> D[L1 Cache]
    B --> E[스레드 0 실행]
    B --> F[스레드 1 실행]
    C --> E
    C --> F
    D --> E
    D --> F
    E --> G[결과 출력]
    F --> G

---

Workflow

SMT 확인 및 제어 워크플로우:

  1. SMT 상태 확인 — lscpu 명령어
  2. $ lscpu | grep -e Socket -e Core -e Thread
  3. Thread(s) per core: 2 (SMT 활성화)
  4. Thread(s) per core: 1 (SMT 비활성화)
  1. SMT 활성화 (런타임)
  2. # echo on > /sys/devices/system/cpu/smt/control
  1. SMT 비활성화 (런타임)
  2. # echo off > /sys/devices/system/cpu/smt/control
  1. BIOS에서 SMT 설정
  2. Supermicro: CPU Configuration > SMT Control
  3. HPE ProLiant Gen10: UEFI > CPU Configuration > SMT Control

---

Detailed Explanation

SMT 기본 개념

SMT(Simultaneous Multithreading)은 단일 물리적 CPU 코어에서 여러 실행 스레드를 동시에 처리하는 기술입니다. Intel에서는 Hyper-Threading(HT)이라는 이름으로 알려져 있으며, AMD EPYC에서도 SMT라는 이름으로 제공됩니다.

SMT가 활성화되면 각 물리적 코어는 두 개의 논리적 코어로 OS에게 표시됩니다.

Hyper-Thread Topology 확인

$ lscpu | grep -e Socket -e Core -e Thread
Thread(s) per core:                 2
Core(s) per socket:                 16
Socket(s):                          1
Model name:                         AMD EPYC 7282 16-Core Processor
  • Thread(s) per core: 2 — SMT 활성화 (각 코어당 2스레드)
  • Thread(s) per core: 1 — SMT 비활성화 (각 코어당 1스레드)

SMT 제어

/sys/devices/system/cpu/smt/control 파일은 SMT 제어 상태를 읽고 SMT를 비활성화/활성화할 수 있습니다.

/sys/devices/system/cpu/smt/active 파일은 SMT가 활성화되어 있는지 보고합니다.

상태 설명
on SMT가 CPU에 의해 지원되고 활성화됨. 모든 논리적 CPU를 제한 없이 온라인/오프라인 할 수 있음
off SMT가 CPU에 의해 지원되지만 비활성화됨. 기본 SMT 스레드만 제한 없이 온라인/오프라인 가능
forceoff 'off'와 동일하지만 상태 제어가 불가능함. control 파일에 쓰기 시도 거부
notsupported 프로세서가 SMT를 지원하지 않음. L1TF의 영향을 받지 않음. control 파일에 쓰기 시도 거부

SMT 비활성화 (런타임):

# echo off > /sys/devices/system/cpu/smt/control

SMT 활성화 (런타임):

# echo on > /sys/devices/system/cpu/smt/control

하나의 Hyper-Thread 비활성화 스크립트:

for CPU in $( ls /sys/devices/system/cpu/cpu[0-9]* -d | sort); do 
awk -F '[-,]' '{if(NF > 1) {HOTPLUG="/sys/devices/system/cpu/cpu"$NF"/online"; print "0" > HOTPLUG; close(HOTPLUG)}}' $CPU/topology/thread_siblings_list 2>/dev/null; done

AMD Simultaneous Multithreading (SMT)

AMD 프로세서 서버에서 사용 가능한 SMT 설정:

설명 비고
Enabled 각 물리적 프로세서 코어가 두 개의 논리적 프로세서 코어로 작동. 활성화 시 코어 수가 높아져 멀티스레드 애플리케이션 성능 향상
Disabled 각 물리적 프로세서 코어가 하나의 논리적 프로세서 코어로 작동

Typical BIOS menu path

  • Supermicro — CPU Configuration > SMT Control
  • HPE ProLiant Gen10 — UEFI > CPU Configuration > SMT Control

---

Configuration

SMT 활성화/비활성화

# SMT 활성화
# echo on > /sys/devices/system/cpu/smt/control

# SMT 비활성화
# echo off > /sys/devices/system/cpu/smt/control

BIOS SMT 설정

Supermicro:
BIOS > CPU Configuration > SMT Control → Enabled/Disabled

HPE ProLiant Gen10:
UEFI > CPU Configuration > SMT Control → Enabled/Disabled

---

Examples

Example 1: SMT 상태 확인

입력:

$ lscpu | grep -e Socket -e Core -e Thread

출력:

Thread(s) per core:                 2
Core(s) per socket:                 16
Socket(s):                          1
Model name:                         AMD EPYC 7282 16-Core Processor

Example 2: SMT 비활성화

입력:

# echo off > /sys/devices/system/cpu/smt/control

출력:

$ cat /sys/devices/system/cpu/smt/active
off

---

Best Practices

  • 컴파일/데이터베이스 워크로드 — SMT 활성화 권장 (코어 수 증가)
  • 보안 민감 워크로드 — SMT 비활성화 권장 (L1TF 취약점 방지)
  • 가상화 호스트 — SMT 활성화 권장 (VM당 스레드 할당 유연성)
  • BIOS 설정 변경 후 반드시 재부팅
  • IPMI를 통한 원격 BIOS 접근 권장

---

Limitations

  • SMT 활성화 시 애플리케이션에 따라 성능이 저하될 수 있음 (Intel 문서 참조)
  • SMT 비활성화 시 논리적 코어 수가 절반으로 줄어듦
  • 일부 레거시 애플리케이션은 SMT를 지원하지 않음
  • BIOS 설정은 마더보드 제조사/모델별로 상이

---

References

---

Related Pages

---