CPUs online or offline
Overview
Linux 시스템에서 CPU의 online/offline 상태를 확인하고 관리하는 방법입니다. CPU 상태를 통해 시스템 리소스를 효율적으로 관리하고 성능을 최적화할 수 있습니다.
Summary
- 무엇인가? Linux에서 CPU online/offline 상태 확인 및 제어
- 왜 필요한가? CPU 리소스 관리, 전원 절약, 디버깅, 성능 최적화
- 언제 사용하는가? 서버 관리, CPU 문제 진단, 리소스 할당
---
Purpose
이 문서가 존재하는 이유
- Goal: CPU 상태 확인 방법, online/offline 전환, smpboot 오류 해결 가이드 제공
- Scope: CPU 상태 확인 명령어, online/offline 설정, x2APIC/IOMMU 설정
- Non-goals: CPU 하드웨어 교체, BIOS 상세 설정
---
Key Concepts
| 개념 | 설명 | Related |
|---|---|---|
| online | 활성화된 CPU — 작업 처리 가능 | CPUs online or offline |
| offline | 비활성화된 CPU — 전원 절약 모드 | CPUs online or offline |
| x2APIC | 확장된 APIC 아키텍처 — 255개 이상 CPU 지원 | BIOS |
| IOMMU | I/O 메모리 관리 유닛 — DMA 보호 | x2APIC |
| IRQ remapping | 인터럽트 리매핑 — x2APIC 필수 | IOMMU |
---
Architecture
CPU online/offline 상태 관리:
graph TD
A[CPU 상태 파일] --> B[/sys/devices/system/cpu/]
B --> C[cpu0/]
B --> D[cpu1/]
B --> E[cpuN/]
C --> F[online 파일]
D --> F
E --> F
F --> G[echo 1 > online = online]
F --> H[echo 0 > online = offline]---
Workflow
CPU 상태 관리 워크플로우:
- CPU 상태 확인
- cat /sys/devices/system/cpu/online
- cat /sys/devices/system/cpu/offline
- CPU online 설정
- echo 1 > /sys/devices/system/cpu/cpu<number>/online
- CPU offline 설정
- echo 0 > /sys/devices/system/cpu/cpu<number>/online
---
Detailed Explanation
CPU 상태 확인
CPU online/offline 상태를 확인하는 여러 방법이 있습니다:
1. offline CPU 목록 확인
cat /sys/devices/system/cpu/offline
2. online CPU 목록 확인
cat /sys/devices/system/cpu/online
3. 전체 CPU 목록 확인
ls -ld /sys/devices/system/cpu/cpu*
4. 개별 CPU online/offline 상태 확인
cat /sys/devices/system/cpu/cpu*/online
5. CPU online 설정
# CPU <number>를 online으로 설정
echo 1 > /sys/devices/system/cpu/cpu<number>/online
# 또는
sudo chcpu -e <number>
6. CPU offline 설정
# CPU <number>를 offline으로 설정
echo 0 > /sys/devices/system/cpu/cpu<number>/online
# 또는
sudo chcpu -d <number>
smpboot: native_cpu_up: bad cpu 255
이 문제 AMD EPYC 7702 64코어 시스템에서 254개 CPU만 online이고 1개가 offline인 경우와 관련이 있습니다. 시스템 IOMMU가 BIOS에서 활성화되어야 Gigabyte 시스템에서 마지막 CPU 코어를 활성화할 수 있습니다. 다른 시스템의 BIOS 구성에도 관련될 수 있습니다.
x2APIC 아키텍처를 BIOS Setup에서 활성화 또는 비활성화할 수 있습니다. x2APIC은 IOMMU가 활성화되고 IRQ 리매핑이 활성화되어야 합니다.
This thread에 따르면 BIOS에서 x2APIC을 활성화하는 일반적인 단계는 다음과 같습니다:
1. BIOS에서 IOMMU 활성화
많은 시스템에서 기본값으로 비활성화되어 있습니다. 예를 들어 2020년 7월형 Gigabyte R282-Z93 (EPYC 7742 CPU)에서도 기본값이 비활성화입니다.
2. BIOS에서 x2APIC 활성화
3. 커널에서 IOMMU support 활성화
- Intel CPU:
CONFIG_INTEL_IOMMU=y - AMD CPUs:
CONFIG_AMD_IOMMU=y및CONFIG_AMD_IOMMU_V2=y
4. 커널에서 x2APIC 지원 활성화
CONFIG_X86_X2APIC=y
5. 커널에서 IRQ 리매핑 활성화
CONFIG_IRQ_REMAP=y
OS별 x2APIC 제한
x2APIC은 OS 유형/버전에 따라 의존성이 다릅니다:
Windows Server 2016
- Windows Server 2016은 AMD EPYC 7xx2 시리즈 CPU를 지원하지만, 최대 255개 논리 프로세서로 제한됩니다.
- Windows Server 2016은 X2APIC 모드를 지원하지 않으며, BIOS에서 이 모드를 비활성화해야 합니다.
- ASUS BIOS: AMD CBS -> CPU Common Options -> Performance -> CCD/Core/Thread Enablement -> Accept -> SMT control -> Disabled
Linux
- 다음 커널 부트 파라미터는 x2APIC 모드 활성화를 방지할 수 있습니다:
intremap=no_x2apic_optoutnox2apic
---
Configuration
커널 설정
# IOMMU 활성화 (AMD)
CONFIG_AMD_IOMMU=y
CONFIG_AMD_IOMMU_V2=y
# x2APIC 활성화
CONFIG_X86_X2APIC=y
# IRQ 리매핑 활성화
CONFIG_IRQ_REMAP=y
커널 부트 파라미터
# GRUB 부트 파라미터 (x2APIC 비활성화 필요시)
# /etc/default/grub
GRUB_CMDLINE_LINUX="intremap=no_x2apic_optout nox2apic"
# GRUB 업데이트
sudo update-grub
---
Examples
Example 1: CPU 상태 확인
입력:
# online CPU 확인
cat /sys/devices/system/cpu/online
# 출력 예: 0-253
# offline CPU 확인
cat /sys/devices/system/cpu/offline
# 출력 예: 254-255
# 전체 CPU 확인
ls -ld /sys/devices/system/cpu/cpu*
Example 2: CPU online/offline 전환
입력:
# CPU 254를 online으로
echo 1 > /sys/devices/system/cpu/cpu254/online
# CPU 255를 offline으로
echo 0 > /sys/devices/system/cpu/cpu255/online
# chcpu 명령어 사용
sudo chcpu -e 254 # online
sudo chcpu -d 255 # offline
---
Best Practices
- IOMMU 활성화 — x2APIC 사용 시 필수
- x2APIC 활성화 — 255개 이상 CPU 시스템에서 필수
- Windows Server 2016 — 255개 논리 프로세서 제한, x2APIC 비활성화 필요
- 커널 부트 파라미터 — x2APIC 문제 시
nox2apic파라미터로 우회 - BIOS 설정 — IOMMU/x2APIC은 BIOS에서 먼저 확인
---
Limitations
- Windows Server 2016은 최대 255개 논리 프로세서만 지원
- x2APIC은 IOMMU 및 IRQ 리매핑 필수
- 일부 시스템 BIOS에서 IOMMU 기본값이 비활성화
- chcpu 명령어는 아키텍처에 따라 제한적 지원
---
References
- https://community.amd.com/t5/server-gurus-discussions/dual-socket-epyc-7702-64-cores-shows-254-cpu-online-1-cpu/m-p/350409
- https://stackoverflow.com/questions/60219639/kernel-error-irq-remapping-doesnt-support-x2apic-mode-disabled-x2apic
---
Related Pages
---