핵심 인사이트 (3줄 요약)
- 과거의 PCI 버스 시절에는 그래픽카드나 랜카드가 전기를 잘못 뱉거나 신호가 꼬이면, 마더보드가 당황해서 CPU를 멈춰 세우고 즉시 **치명적 오류(NMI, 블루스크린)**를 띄우며 다 같이 죽어버렸다.
- **PCIe AER (Advanced Error Reporting)**은 디바이스 통신 중 에러가 발생하면 무조건 뻗는 대신, 이 에러가 **'고칠 수 있는 가벼운 에러(Correctable)'**인지 **'당장 기계를 멈춰야 하는 치명적 에러(Fatal)'**인지 하드웨어적으로 분류하는 똑똑한 오류 보고 시스템이다.
- 이를 통해 가벼운 에러는 랜카드가 찰나의 순간에 재전송을 통해 스스로 고쳐내고, 시스템(OS)은 아무 일 없었다는 듯 100% 정상 가동(Uptime 보장)을 이어갈 수 있다.
Ⅰ. 무지성 시스템 셧다운의 비극
서버에 100Gbps 고성능 랜카드가 꽂혀 있습니다. 초당 수백만 개의 패킷이 메인보드(PCIe 버스)를 타고 CPU로 날아갑니다.
어느 날 램 슬롯 근처에 먼지가 껴서 미세한 정전기가 튀었습니다.
- 과거 (AER 없음): 랜카드가 보낸 데이터의 1비트가 0에서 1로 깨졌습니다. 메인보드 칩셋은 패리티 에러를 감지하자마자 "악! 데이터가 오염됐다!"라며 NMI(초특급 비상 알람)를 울리고 윈도우/리눅스 서버를 **그 자리에서 기절(블루스크린/커널 패닉)**시켜 버렸습니다.
- 수만 명의 고객이 쓰던 서버가 먼지 한 톨 때문에 다 날아갔습니다.
📢 섹션 요약 비유: 택배 기사(랜카드)가 가져온 상자 하나에 살짝 스크래치가 났습니다. 회사 경비원(메인보드)이 그걸 보자마자 "비상사태다! 폭탄일지 몰라!"라며 회사 건물 전체의 전원을 차단하고 전 직원을 대피시키는 미련한 과잉 대응입니다.
Ⅱ. AER의 등장: 에러의 계급 나누기
PCIe 규격에 AER (고급 오류 보고) 기능이 추가되면서, 시스템은 침착해졌습니다. 에러를 3가지 등급으로 나누어 대처합니다.
1. Correctable Error (교정 가능한 에러)
- 물리적인 선의 노이즈 때문에 데이터 패킷(TLP)이 한 번 깨졌습니다.
- 조치: PCIe 컨트롤러 하드웨어가 스스로 "이봐 랜카드, 방금 데이터 깨졌으니까 다시 쏴봐"라고 조용히 요구(Replay)합니다. 재전송받아 성공하면, OS(리눅스)에게 "방금 에러 나서 내가 고쳤음"이라고 알림(Log)만 띄우고 시스템은 정상 가동됩니다.
2. Uncorrectable - Non-Fatal Error (치명적이지 않은 복구 불가 에러)
- 랜카드가 고장 나서 엉뚱한 메모리 주소(권한 없는 곳)에 데이터를 쓰려다 걸렸습니다(Poisoned TLP).
- 조치: 이 데이터를 받아주면 메모리가 오염되므로 그 패킷을 휴지통에 버립니다. 서버 전체를 죽이지 않고, 해당 랜카드를 쓰는 특정 앱이나 컨테이너 하나만 에러 코드를 띄우고 종료시킵니다. (나머지 서버 기능은 멀쩡히 생존)
3. Uncorrectable - Fatal Error (치명적 에러)
- 그래픽카드의 물리적 칩이 타버려서 PCIe 버스 연결 자체가 완전히 끊겼습니다(Link Down).
- 조치: 이건 답이 없으므로 옛날처럼 NMI를 띄우고 하드웨어 보호를 위해 시스템 전원을 끕니다.
AER 동작 파이프라인 (ASCII)
[ 물리적 PCIe 버스 ] ──(노이즈 발생!)──▶ [ 데이터 깨짐 ]
│
┌────────────────────── 메인보드 (PCIe Root Complex) ───────────────────────────────┐
│ [ AER 하드웨어 로직 ] │
│ 1. CRC 검사: 깨짐 확인 │
│ 2. 분류: "다시 받으면 고칠 수 있네? (Correctable)" │
│ 3. 복구: 랜카드에 재전송(Replay) 지시 ──(0.001초 지연 후 복구 완료)──▶ OS로 패스 │
└───────────────────────────────────────────────────────────────────────────────────┘
📢 섹션 요약 비유: 택배 상자에 스크래치가 나면, 경비원(AER)이 살펴보고 "내용물은 안 깨졌네(Correctable). 택배 기사한테 상자만 다시 달라고 해"라며 조용히 처리합니다. 폭탄(Fatal)이 확실할 때만 비상벨을 울립니다.
Ⅲ. AER 로그의 진정한 가치 (예지 정비)
AER은 단순히 시스템이 뻗는 걸 막아줄 뿐만 아니라, 클라우드 서버 관리자의 훌륭한 나침반이 됩니다.
dmesg (리눅스 커널 로그)를 쳤을 때, 서버는 안 죽었지만 PCIe Bus Error: severity=Corrected라는 로그가 하루에 1,000번씩 찍히고 있다면?
이는 "랜카드나 라이저 카드(연장 케이블)의 금속 핀 접불이 나거나 칩이 서서히 죽어가고 있다"는 뜻입니다. 하드웨어 엔지니어는 서버가 치명적으로 죽기 전에 미리 부품을 닦거나 새것으로 교체하여 사고를 100% 예방(AIOps 연계)할 수 있게 됩니다.