BIOS/SMT Control
Jump to navigation
Jump to search
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 확인 및 제어 워크플로우:
- SMT 상태 확인 — lscpu 명령어
- $ lscpu | grep -e Socket -e Core -e Thread
- Thread(s) per core: 2 (SMT 활성화)
- Thread(s) per core: 1 (SMT 비활성화)
- SMT 활성화 (런타임)
- # echo on > /sys/devices/system/cpu/smt/control
- SMT 비활성화 (런타임)
- # echo off > /sys/devices/system/cpu/smt/control
- BIOS에서 SMT 설정
- Supermicro: CPU Configuration > SMT Control
- 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 | 각 물리적 프로세서 코어가 하나의 논리적 프로세서 코어로 작동 | — |
- 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
- https://access.redhat.com/solutions/rhel-smt
- https://techlibrary.hpe.com/docs/iss/proliant-gen10-uefi/GUID-F2A21BDE-7240-4604-9238-27290ECE82A4.html
---
Related Pages
- BIOS
- BIOS/UEFI
- BIOS/Global C-state Control
- CPU preferred computing
- CPUs online or offline
- AMD EPYC
- AMD CPUs
- lscpu
---