AMD-Vi (IOMMU) Completion-Wait timeout 메커니즘 정본 신설
incus-kr2 freeze 사건 분석으로 확정된 IOMMU 부분 hang 메커니즘과 운영 규칙(`iommu=pt` 선제 적용)을 별도 reference 문서로 분리. 호스트 사연(history)과 메커니즘(reference)을 분리해 다른 AMD Ryzen 호스트 도입 시 재사용 가능한 정본으로 정리. - infra/compute/amd-vi-iommu.md 신규 (메커니즘 + 차단 + 운영 규칙) - compute _index.md, hosts/incus-kr2.md, history 문서에 링크
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: incus-kr2
|
||||
updated: 2026-05-04
|
||||
updated: 2026-05-05
|
||||
tags: [infra, host, incus, k3s, seoul, amd, iommu]
|
||||
type: host
|
||||
host_kind: server
|
||||
@@ -39,17 +39,9 @@ Incus + K3s control-plane 호스트 (서울존). Mini PC 폼팩터, AMD Ryzen 9
|
||||
|
||||
## 알려진 hang 패턴 — AMD-Vi (IOMMU) Completion-Wait Timeout
|
||||
|
||||
호스트 freeze가 반복 발생한 근본 원인 (2026-05-04 확정, [[2026-05-04-amd-iommu-freeze]]).
|
||||
호스트 freeze 반복의 근본 원인. 메커니즘 정본은 [[amd-vi-iommu]], 사건 사연은 [[2026-05-04-amd-iommu-freeze]].
|
||||
|
||||
**증상**:
|
||||
- ICMP/이미 매핑된 프로세스(node-exporter, LXC 컨테이너 nginx)는 응답 유지
|
||||
- containerd, incus 데몬, sshd 새 세션 fork만 동시에 hang
|
||||
- kubelet `container runtime is down`, `/var/log/pods readdirent: input/output error`
|
||||
- procs_blocked 0, MemoryPressure False — 자원 고갈 아님
|
||||
|
||||
**원인**: AMD Ryzen 6900HX IOMMU(AMD-Vi) Completion-Wait queue stall. `dmesg`에 `AMD-Vi: Completion-Wait loop timed out` 반복 후 누적되어 DMA 의존 디바이스(NVMe, USB 컨트롤러 등)가 stall.
|
||||
|
||||
**조치 (2026-05-04 적용)**: GRUB cmdline `iommu=pt` 추가 → IOMMU passthrough 모드. dmesg `iommu: Default domain type: Passthrough` 확인.
|
||||
요약: AMD Ryzen 6900HX IOMMU의 Completion-Wait queue가 stall되면서 DMA 의존 디바이스(NVMe, USB 컨트롤러 등)가 멈춤 → containerd/incus/sshd login만 죽고 ICMP/이미 매핑된 프로세스(nginx, node-exporter)는 살아남는 부분 hang. 조치: GRUB cmdline `iommu=pt` 추가 (2026-05-04 적용, 17시간 timeout 0건 검증).
|
||||
|
||||
**과거 freeze 이력 비교**:
|
||||
| 일자 | 원인 | 조치 |
|
||||
|
||||
Reference in New Issue
Block a user