Linux 서버를 운영하다 보면 커널 로그에서 Soft Lockup, Hard Lockup, Watchdog Timeout과 같은 메시지를 접하게 됩니다. 이름은 비슷하지만 원인과 심각도, 대응 방법은 서로 다릅니다.
실무에서는 이 세 가지를 정확히 구분해야 장애 원인을 빠르게 찾을 수 있습니다. 특히 Hard Lockup은 CPU 자체가 인터럽트를 처리하지 못하는 매우 심각한 상태이며, Soft Lockup은 커널 스케줄링이 장시간 이루어지지 않는 상태를 의미합니다.
이번 글에서는 Soft Lockup과 Hard Lockup의 차이점, 확인 방법, 실무 진단 절차를 자세히 알아보겠습니다.
Soft Lockup과 Hard Lockup이란?
먼저 두 오류의 의미를 이해해야 합니다.
Soft Lockup
CPU는 동작하고 있지만 커널 스케줄러가 일정 시간 이상 실행되지 못하는 상태입니다.
대표 로그
BUG: soft lockup - CPU#1 stuck for 22s!
Hard Lockup
CPU가 인터럽트(NMI 포함)조차 처리하지 못하는 상태입니다.
대표 로그
NMI watchdog: Watchdog detected hard LOCKUP
Hard Lockup은 Soft Lockup보다 훨씬 심각한 장애입니다.
Soft Lockup과 Hard Lockup 비교
| 항목 | Soft Lockup | Hard Lockup |
|---|---|---|
| CPU 동작 | 일부 동작 | 거의 멈춤 |
| 인터럽트 처리 | 가능 | 불가능 |
| SSH 접속 | 가능한 경우 있음 | 대부분 불가능 |
| 시스템 응답 | 느림 | 거의 없음 |
| Watchdog | Soft Watchdog | NMI Watchdog |
| 심각도 | 높음 | 매우 높음 |
실무에서는 Hard Lockup이 발생하면 하드웨어 문제까지 함께 의심해야 합니다.
1. Soft Lockup 로그 확인하기
다음 명령으로 확인합니다.
dmesg | grep -i "soft lockup"
또는
journalctl -k | grep -i "soft lockup"
발생 시간과 CPU 번호를 확인합니다.
2. Hard Lockup 로그 확인하기
dmesg | grep -i "hard lockup"
또는
journalctl -k | grep -i "hard lockup"
다음과 같은 로그가 대표적입니다.
NMI watchdog: Watchdog detected hard LOCKUP on cpu 3
3. Watchdog 로그 함께 확인하기
두 오류 모두 Watchdog과 관련되어 있습니다.
dmesg | grep -i watchdog
또는
journalctl -k | grep -i watchdog
Watchdog Timeout이 함께 발생하는지 확인합니다.
4. Call Trace 분석하기
대부분 Call Trace가 함께 출력됩니다.
journalctl -k | grep -A 50 "Call Trace"
또는
dmesg | grep -A 50 "Call Trace"
Call Trace를 통해 CPU가 어떤 함수에서 멈췄는지 확인합니다.
5. CPU 사용률 확인하기
CPU 상태를 확인합니다.
top
또는
mpstat -P ALL 1
특정 CPU 코어만 사용률이 비정상적으로 높은지 확인합니다.
6. 인터럽트 확인하기
인터럽트 처리 상태를 확인합니다.
cat /proc/interrupts
특정 CPU의 인터럽트 증가가 멈추거나 한쪽 CPU에 집중되어 있다면 원인을 분석해야 합니다.
7. Load Average 확인하기
uptime
또는
cat /proc/loadavg
CPU 코어 수보다 Load Average가 훨씬 높다면 CPU 병목이 발생했을 가능성이 있습니다.
8. 하드웨어 이벤트 로그 확인하기
서버에서는 반드시 확인해야 합니다.
ipmitool sel list
다음 항목을 확인합니다.
- CPU Error
- Machine Check Exception
- Thermal Event
- ECC Error
- Voltage Error
Hard Lockup은 하드웨어 이벤트와 함께 발생하는 경우가 많습니다.
9. CPU 온도 확인하기
과열 여부를 확인합니다.
sensors
또는
ipmitool sdr
90℃ 이상이라면 Thermal Throttling이나 Hard Lockup의 원인이 될 수 있습니다.
10. Crash Dump 분석하기
kdump가 활성화되어 있다면 Crash Dump를 분석합니다.
ls /var/crash
분석
crash vmcore
CPU가 어떤 상태에서 멈췄는지 확인할 수 있습니다.
Soft Lockup과 Hard Lockup 진단 순서
실무에서는 다음 순서대로 점검하는 것이 가장 효율적입니다.
- Soft Lockup 로그 확인
- Hard Lockup 로그 확인
- Watchdog 로그 확인
- Call Trace 분석
- CPU 사용률 확인
- 인터럽트 상태 확인
- Load Average 확인
- IPMI 이벤트 로그 확인
- CPU 온도 확인
- Crash Dump 분석
이 순서대로 진행하면 대부분의 원인을 빠르게 파악할 수 있습니다.
재발을 예방하는 방법
Soft Lockup과 Hard Lockup은 CPU 과부하와 하드웨어 이상이 주요 원인인 경우가 많습니다.
다음과 같은 관리 방법을 권장합니다.
- 최신 안정 커널 사용
- BIOS 및 CPU Microcode 업데이트
- CPU 온도 상시 모니터링
- IRQ Balance 활성화
- ECC 메모리 사용
- 정기적인 하드웨어 점검
- CPU 부하 분산
- Watchdog 활성화
특히 장시간 CPU 사용률이 높은 서버에서는 온도와 인터럽트 상태를 주기적으로 확인하는 것이 중요합니다.
자주 묻는 질문
Soft Lockup이 발생하면 반드시 Hard Lockup으로 이어지나요?
아닙니다. Soft Lockup이 항상 Hard Lockup으로 발전하는 것은 아니지만, 반복적으로 발생한다면 원인을 분석하고 조치해야 합니다.
Hard Lockup은 소프트웨어 문제인가요?
커널 버그로도 발생할 수 있지만 CPU, 메모리, 메인보드, BIOS 등 하드웨어 문제와 관련된 경우가 많습니다.
Watchdog Timeout과 Hard Lockup은 같은 의미인가요?
아닙니다. Watchdog Timeout은 감시 기능이 일정 시간 동안 응답이 없음을 감지한 것이고, Hard Lockup은 CPU가 인터럽트를 처리하지 못하는 상태를 의미합니다. 두 현상은 함께 발생하는 경우가 많습니다.
마무리
Soft Lockup과 Hard Lockup은 모두 Linux 커널의 중요한 경고이지만, 원인과 심각도는 다릅니다. dmesg, journalctl, Call Trace, mpstat, ipmitool, crash 등을 함께 활용하면 CPU 병목과 하드웨어 문제를 효과적으로 분석할 수 있습니다. 특히 Hard Lockup이 반복된다면 단순 재부팅으로 끝내지 말고 CPU, 메모리, BIOS, 메인보드까지 종합적으로 점검하는 것이 안정적인 서버 운영의 핵심입니다.