ASPM

From HPCWIKI
Revision as of 15:32, 16 July 2026 by Clara (talk | contribs) (Added Knowledge Graph section)
Jump to navigation Jump to search

Template:Status

Template:TOC

Overview

ASPM(Active-State Power Management)는 PCI Express(PCIe) 기반 장치의 전력 관리 기능으로, 장치가 데이터 전송 중이 아닐 때 저전력 상태로 진입하여 전력을 절약합니다. PCIe Gen3부터 지원됩니다.

Summary

  • 무엇인가? PCIe 장치의 활성 상태 전력 관리 기능 (저전력 상태 진입)
  • 왜 필요한가? 장치 idle 시 전력 절약, 모바일/데이터센터 에너지 효율 향상
  • 언제 사용하는가? PCIe 장치 (네트워크, SSD, GPU 등)의 전력 관리 — 성능 vs 전력 트레이드오프 고려

---

Purpose

이 문서가 존재하는 이유

  • Goal: ASPM의 작동 원리, 상태(L0s/L1), BIOS/커널 설정 방법 설명
  • Scope: ASPM 상태, BIOS 설정, 커널 파라미터, 성능 영향
  • Non-goals: PCIe 프로토콜 상세, 다른 PCIe 전력 관리 기능(PCIe Power Management Controller)

---

Key Concepts

Concept Description Related
ASPM Active-State Power Management — PCIe 장치 전력 관리 PCIe
L0s 저전력 대기 상태 — 빠른 복귀, 낮은 지연시간 ASPM
L1 더 낮은 전력 상태 — 더 큰 전력 절약, 더 높은 지연시간 ASPM
PCIe Peripheral Component Interconnect Express — 고속 확장 버스 ASPM
Exit Latency 저전력 상태에서 복귀하는 데 걸리는 시간 ASPM

---

Architecture

ASPM은 PCIe 링크의 활성 상태를 모니터링하여 사용하지 않을 때 저전력 상태로 전환합니다:

graph TD
    A[PCIe Device] --> B{Data Transmission?}
    B -->|Yes| C[L0 State - Active]
    B -->|No| D[L0s State - Low Power]
    D --> E{Idle Duration?}
    E -->|Short| F[Quick Resume - Low Latency]
    E -->|Long| G[L1 State - Deeper Sleep]
    G --> H[Higher Latency - More Power Saving]
    C --> I[Full Performance]

---

Workflow

ASPM 작동 흐름:

  1. 장치 데이터 전송 중 — L0 상태 (활성) 유지
  2. 전송 완료 후 idle 상태 진입
  3. 짧은 idle 시간 — L0s 상태 진입 (빠른 복귀)
  4. 긴 idle 시간 — L1 상태 진입 (더 큰 전력 절약)
  5. 데이터 전송 요청 — 저전력 상태에서 L0으로 복귀 (지연시간 발생)
Stage Input Output
Transmission 데이터 전송 요청 L0 상태 (활성)
Idle Detection 전송 완료, idle 시간 시작 L0s 또는 L1 진입 결정
L0s Entry 짧은 idle 시간 (<512ns 복귀) 저전력 대기 상태
L1 Entry 긴 idle 시간 (<4us 복귀) 더 깊은 저전력 상태
Resume 데이터 전송 요청 L0 상태로 복귀 (지연시간 발생)

---

Detailed Explanation

ASPM State

ASPM은 두 가지 주요 저전력 상태를 제공합니다:

  • L0s (Link State 0) — 빠른 복귀 지연시간, 최소 지연으로 에너지 절약 "대기" 상태
  • L1 (Link State 1) — 더 높은 지연시간, 더 낮은 전력의 "대기" 상태 — L0s보다 더 큰 전력 절약 제공. 모바일 장치에서 전력 절약 극대화를 위해 자주 구현

ASPM 상태 확인 (Linux)

# ASPM 상태 확인
$ sudo lspci -vvvs c1:00.0 | grep -i speed
                LnkCap: Port #0, Speed 8GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <512ns, L1 <4us
                LnkSta: Speed 2.5GT/s (downgraded), Width x16 (ok)
                LnkCap2: Supported Link Speeds: 2.5-8GT/s, Crosslink- Retimer- 2Retimers- DRS-
                LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-

BIOS에서 ASPM 설정

BIOS 설정에서 ASPM을 구성할 수 있으며, 일반적으로 L0/L0s/L1/L0sL1 옵션이 있습니다.

예: SMC X10SAE BIOS 옵션

  • L0 — 모든 PCI Express 트랜잭션 및 기타 작업 활성화
  • L0s — 빠른 복귀 지연시간, 에너지 절약 "대기" 상태
  • L1 — 더 높은 지연시간, 더 낮은 전력 "대기" 상태 (옵션)
  • L0sL1 — L0s와 L1 모두 활성화

커널 파라미터에서 ASPM 제어

GRUB에서 pcie_aspm=off 파라미터를 사용하여 "powersave" 또는 "default" 정책 사용을 방지하고 ASPM을 비활성화할 수 있습니다.

# /etc/default/grub 수정
GRUB_CMDLINE_LINUX="pcie_aspm=off"

# GRUB 업데이트
sudo update-grub

---

Configuration

BIOS 설정

BIOS에서 ASPM 모드 선택:

  • 성능 우선 — L0sL1 또는 L1 활성화
  • 전력 절약 우선 — L0sL1 활성화
  • 호환성 우선 — L0 (ASPM 비활성화)

커널 파라미터

# /etc/default/grub
GRUB_CMDLINE_LINUX="pcie_aspm=off"

적용:

sudo update-grub
sudo reboot

---

Examples

Example 1: ASPM 상태 확인

# 특정 장치의 ASPM 상태 확인
$ sudo lspci -vvvs c1:00.0 | grep -i asp
                LnkCap: Port #0, Speed 8GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <512ns, L1 <4us
                LnkSta: Speed 2.5GT/s (downgraded), Width x16 (ok), ASPM L0s L1

Example 2: ASPM 비활성화

# GRUB에 pcie_aspm=off 추가
sudo sed -i 's/GRUB_CMDLINE_LINUX="/GRUB_CMDLINE_LINUX="pcie_aspm=off /' /etc/default/grub
sudo update-grub
sudo reboot

# 재부팅 후 확인
$ cat /proc/cmdline | grep pcie_aspm
pcie_aspm=off

---

Best Practices

  • 고성능 워크로드 (네트워크, 스토리지, GPU) — ASPM 비활성화 또는 L0s만 권장
  • 모바일/배터리 장치 — L0sL1 활성화로 전력 절약 극대화
  • 데이터센터 — 전력 비용 절감을 위해 L0sL1 활성화 고려
  • 성능 문제 발생 시 — ASPM 비활성화로 지연시간 문제 해결
  • BIOS와 커널 파라미터 일관성 유지 — 양쪽에서 동일한 설정 권장

---

Limitations

  • ASPM 활성화 시 복귀 지연시간 발생 — 실시간 워크로드에 영향
  • 일부 장치/마더보드에서 ASPM 호환성 문제
  • L1 상태 진입 시 더 긴 복귀 시간 (최대 수 ms)
  • PCIe 레인 속도 저하와 혼동 가능 (LnkSta에서 "downgraded" 표시)
  • 일부 가상화 환경에서 ASPM 지원 제한

---

References

---

Related Pages

---

Knowledge Graph

Related

LinuxServerHardwareNetwork