CPUs online or offline: Difference between revisions

From HPCWIKI
Jump to navigation Jump to search
(Add categories: Hardware, Reference)
(Phase 6.1: LLM-Optimized Wiki Template 적용)
Line 1: Line 1:
{{Status
|status=Draft
|owner=Knowledge Agent
|last_update=2026-07-16
|review=Pending
}}
{{TOC}}
== 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 ==
{| class="wikitable"
! 개념
! 설명
! 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 상태 관리:
<syntaxhighlight lang="mermaid">
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]
</syntaxhighlight>
---
== 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 목록 확인'''


== Check CPU status ==
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
# get the list of offline CPUs
cat /sys/devices/system/cpu/offline
cat /sys/devices/system/cpu/offline
</syntaxhighlight>


cat /sys/devices/system/cpu/online
'''2. online CPU 목록 확인'''
# get the list of online CPUs


# get the list of CPUs
<syntaxhighlight lang="bash">
ls -ld /sys/devices/system/cpu/cpu*
cat /sys/devices/system/cpu/online
</syntaxhighlight>


# print individual CPU's online/offline status
'''3. 전체 CPU 목록 확인'''
cat /sys/devices/system/cpu/cpu*/online


# set online CPU <number>
<syntaxhighlight lang="bash">
echo 1 > /sys/devices/system/cpu/cpu<number>/online  
ls -ld /sys/devices/system/cpu/cpu*
or
</syntaxhighlight>
 
'''4. 개별 CPU online/offline 상태 확인'''
 
<syntaxhighlight lang="bash">
cat /sys/devices/system/cpu/cpu*/online
</syntaxhighlight>
 
'''5. CPU online 설정'''
 
<syntaxhighlight lang="bash">
# CPU <number>를 online으로 설정
echo 1 > /sys/devices/system/cpu/cpu<number>/online
 
# 또는
sudo chcpu -e <number>
sudo chcpu -e <number>
</syntaxhighlight>
'''6. CPU offline 설정'''


# set offline CPU <number>
<syntaxhighlight lang="bash">
# CPU <number>를 offline으로 설정
echo 0 > /sys/devices/system/cpu/cpu<number>/online
echo 0 > /sys/devices/system/cpu/cpu<number>/online
or
 
# 또는
sudo chcpu -d <number>
sudo chcpu -d <number>
</syntaxhighlight>
=== 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: <code>CONFIG_INTEL_IOMMU=y</code>
* [[AMD CPUs]]: <code>CONFIG_AMD_IOMMU=y</code> 및 <code>CONFIG_AMD_IOMMU_V2=y</code>
'''4. 커널에서 x2APIC 지원 활성화'''
<syntaxhighlight lang="bash">
CONFIG_X86_X2APIC=y
</syntaxhighlight>
'''5. 커널에서 IRQ 리매핑 활성화'''
<syntaxhighlight lang="bash">
CONFIG_IRQ_REMAP=y
</syntaxhighlight>
=== OS별 x2APIC 제한 ===
x2APIC은 OS 유형/버전에 따라 의존성이 다릅니다:
'''Windows Server 2016'''
* Windows Server 2016은 [[AMD EPYC]] 7''xx''2 시리즈 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 모드 활성화를 방지할 수 있습니다:
** <code>intremap=no_x2apic_optout</code>
** <code>nox2apic</code>
---
== Configuration ==
=== 커널 설정 ===
<syntaxhighlight lang="bash">
# IOMMU 활성화 (AMD)
CONFIG_AMD_IOMMU=y
CONFIG_AMD_IOMMU_V2=y
# x2APIC 활성화
CONFIG_X86_X2APIC=y
# IRQ 리매핑 활성화
CONFIG_IRQ_REMAP=y
</syntaxhighlight>
</syntaxhighlight>


== smpboot: native_cpu_up: bad cpu 255 ==
=== 커널 부트 파라미터 ===
This thread<ref>https://community.amd.com/t5/server-gurus-discussions/dual-socket-epyc-7702-64-cores-shows-254-cpu-online-1-cpu/m-p/350409</ref> shows system IOMMU enable in [[BIOS]] would be required to enable the last CPU core on Gigabyte system. However, it would be also related to other systems' BIOS configuration.


<syntaxhighlight lang="bash">
# GRUB 부트 파라미터 (x2APIC 비활성화 필요시)
# /etc/default/grub
GRUB_CMDLINE_LINUX="intremap=no_x2apic_optout nox2apic"


We can enable or disable the [[x2APIC]] architecture from the BIOS Setup cause x2APIC requires that the IOMMU be enabled and that IRQ remapping is enabled.
# GRUB 업데이트
sudo update-grub
</syntaxhighlight>


[https://stackoverflow.com/questions/60219639/kernel-error-irq-remapping-doesnt-support-x2apic-mode-disabled-x2apic This thread] shows a general steps to enable x2APIC in BIOS,
---


# Enable IOMMU in the BIOS. (It's disabled by default on many systems. Even on my brand new (July 2020) Gigabyte R282-Z93 with EPYC 7742 CPUs!)
== Examples ==
# Enable x2APIC in the BIOS.
# Enable IOMMU [[support]] in the kernel:
#* For Intel CPUs: <code>CONFIG_INTEL_IOMMU=y</code>
#* For [[AMD CPUs]]:  <code>CONFIG_AMD_IOMMU=y</code> and <code>CONFIG_AMD_IOMMU_V2=y</code>
# Enable x2APIC support in the kernel: <code>CONFIG_X86_X2APIC=y</code>
# Enable IRQ remapping in the kernel: <code>CONFIG_IRQ_REMAP=y</code>


=== Example 1: CPU 상태 확인 ===


However, x2APIC is also dependingn on the type/version of OS,
입력:


* '''Windows Server 2016'''  
<syntaxhighlight lang="bash">
** Windows Server 2016 supports AMD EPYC 7''xx''2-series CPUs, but this O.S. is limited to no more than 255 logical processors. Windows Server 2016 does not support X2APIC mode, and you should disable this mode in BIOS.
# online CPU 확인
** '''AMD CBS-> CPU Common Options-> Performance-> CCD/Core/Thread Enablement ->Accept-> SMT control->Disabled (For ASUS BIOS)'''
cat /sys/devices/system/cpu/online
* On [[Linux]]
# 출력 예: 0-253
** Following kernel boot parameter can prevent enabling of the x2APIC mode
 
*** intremap=no_x2apic_optout nox2apic
# offline CPU 확인
cat /sys/devices/system/cpu/offline
# 출력 예: 254-255
 
# 전체 CPU 확인
ls -ld /sys/devices/system/cpu/cpu*
</syntaxhighlight>
 
=== Example 2: CPU online/offline 전환 ===
 
입력:
 
<syntaxhighlight lang="bash">
# 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
</syntaxhighlight>
 
---
 
== Best Practices ==
 
* '''IOMMU 활성화''' — x2APIC 사용 시 필수
* '''x2APIC 활성화''' — 255개 이상 CPU 시스템에서 필수
* '''Windows Server 2016''' — 255개 논리 프로세서 제한, x2APIC 비활성화 필요
* '''커널 부트 파라미터''' — x2APIC 문제 시 <code>nox2apic</code> 파라미터로 우회
* '''BIOS 설정''' — IOMMU/x2APIC은 BIOS에서 먼저 확인
 
---
 
== Limitations ==
 
* Windows Server 2016은 최대 255개 논리 프로세서만 지원
* x2APIC은 IOMMU 및 IRQ 리매핑 필수
* 일부 시스템 BIOS에서 IOMMU 기본값이 비활성화
* chcpu 명령어는 아키텍처에 따라 제한적 지원
 
---


== References ==
== References ==
<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 ==
 
* [[BIOS]]
* [[x2APIC]]
* [[IOMMU]]
* [[AMD CPUs]]
* [[Linux]]
* [[CPU]]
 
---
 
[[Category:Hardware]]
[[Category:Hardware]]
[[Category:Reference]]
[[Category:Reference]]

Revision as of 14:37, 16 July 2026

Template:Status

Template:TOC

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 상태 관리 워크플로우:

  1. CPU 상태 확인
  2. cat /sys/devices/system/cpu/online
  3. cat /sys/devices/system/cpu/offline
  1. CPU online 설정
  2. echo 1 > /sys/devices/system/cpu/cpu<number>/online
  1. CPU offline 설정
  2. 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=yCONFIG_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_optout
    • nox2apic

---

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

---

Related Pages

---