서버실에서 근무하거나 라즈베리 파이 같은 임베디드 보드를 다루다 보면 가장 두려운 순간이 있습니다.
바로 시스템이 아무런 에러 로그도 없이 "그냥 멈춰버리는(Hang)" 상황입니다.
키보드도 안 먹고, SSH 접속도 안 되고, 화면은 정지해 있죠.
내 옆에 있는 PC라면 리셋 버튼을 누르면 그만입니다.
하지만 그 장비가 저 멀리 제주도 무인 기지국에 있거나, 혹은 우주를 날고 있는 인공위성이라면 어떨까요?
사람이 가서 버튼을 누를 수가 없습니다.
이럴 때를 대비해 시스템 엔지니어들이 심어 놓는 최후의 보루가 있습니다.
시스템이 멍때리고 있으면 가차 없이 강제로 재부팅 시켜버리는 녀석, 바로 "와치독 타이머(Watchdog Timer, WDT)"입니다.
오늘은 이 든든한 감시견에 대해 알아보겠습니다.

1. 살아 계신가요? (경비견 비유)
이 기술의 이름이 왜 "와치독(Watchdog, 감시견/맹견)"인지 알면 이해가 빠릅니다.
아주 사나운 맹견 한 마리를 시스템 안에 키운다고 상상해 보세요.
이 맹견은 성격이 급해서 주기적으로 밥을 주지 않으면 "주인(CPU/OS)이 죽었다"고 판단하고 집 전체를 부숴버린 뒤 새로 짓습니다(재부팅).
시스템(CPU): 맹견의 주인입니다.
와치독 타이머: 맹견입니다. 내부에 시간을 재는 카운터(시한폭탄)를 가지고 있습니다.
밥 주기(Kicking/Feeding): 주인이 주기적으로 맹견에게 "나 살아있어!"라고 신호를 보내는 행위입니다.
이 신호를 받으면 맹견은 카운터를 다시 초기화합니다.
시스템 멈춤(Hang): 주인이 기절해서 밥을 못 주는 상황입니다. 맹견의 카운터가 0이 되면 시스템을 리셋합니다.
즉, 와치독 타이머는 "주기적으로 리셋해 주지 않으면 터지는 시한폭탄"을 시스템에 달아두는 것과 같습니다.
정상적일 땐 계속 폭발 시간을 뒤로 미루다가, 문제가 생겨서 미루지 못하면 터지는 것이죠.

2. 작동 원리 및 구조 (Step-by-Step)
기술적으로 들어가 보면, 와치독 타이머는 CPU 내부 혹은 외부에 독립적으로 존재하는 "카운터(Counter) 회로"입니다.
정상 작동 프로세스
타이머 설정: 시스템이 부팅되면서 와치독을 활성화하고 시간을 설정합니다. (예: 60초)
카운트다운: 와치독은 60, 59, 58... 숫자를 줄여나갑니다.
킥(Kick) / 펫(Pat): OS나 펌웨어의 특정 프로세스가 주기적으로(예: 30초마다) 와치독 레지스터에 특정 값을 씁니다.
초기화: 값을 받으면 타이머는 다시 60초로 돌아갑니다. 이 과정이 무한 반복됩니다.
장애 발생 프로세스 (Hang 상황)
시스템 프리징: 무한 루프나 커널 패닉으로 인해 CPU가 멈춥니다.
밥 주기 실패: CPU가 멈췄으니 30초마다 밥을 주던 프로세스도 동작을 멈춥니다.
타임아웃: 와치독 카운터가 계속 줄어들어 결국 "0"이 됩니다.
하드웨어 리셋: 카운터가 0이 되는 순간, 와치독 회로는 CPU의 RESET 핀에 전기 신호를 쏴버립니다. 컴퓨터는 전원을 껐다 켠 것처럼 재부팅 됩니다.

3. 비교 분석: 하드웨어 WDT vs 소프트웨어 WDT
와치독은 구현 방식에 따라 신뢰도가 완전히 다릅니다.
| 구분 | 하드웨어 와치독 (HW WDT) | 소프트웨어 와치독 (SW WDT) |
| 구현 위치 | 별도의 칩셋(IC) 또는 PMIC 내부 독립 회로 | OS 커널 내부의 타이머 기능 활용 |
| 독립성 | 매우 높음 (CPU가 완전히 뻗어도 작동) | 낮음 (OS 커널 자체가 죽으면 같이 죽음) |
| 신뢰도 | 최상 (미션 크리티컬 시스템용) | 중간 (일반적인 애플리케이션 감시용) |
| 비용 | 회로 설계 비용 발생 | 무료 (소프트웨어 구현) |
| 주요 용도 | 인공위성, 자동차 ECU, 서버, 키오스크 | 간단한 프로그램 오류 감지 및 재시작 |
특히 임베디드나 서버 쪽이라면 "하드웨어 와치독"을 의미하는 경우가 99%입니다.
소프트웨어 와치독은 OS 자체가 멈추는 상황에서는 무용지물이 될 수 있기 때문입니다.
4. 와치독 관련 팁
와치독은 양날의 검입니다. 잘못 설정하면 시스템이 무한 재부팅에 빠지는 지옥(Boot Loop)을 맛볼 수 있습니다.
A. 부팅 시간(Boot Time) 고려하기
가장 흔한 실수입니다. 리눅스 서버가 부팅되는 데 3분이 걸리는데, 와치독 타임아웃을 1분으로 설정하면?
부팅이 다 되기도 전에(와치독 데몬이 뜨기도 전에) 와치독이 시스템을 강제로 리셋합니다.
영원히 켜지지 않는 서버가 되는 거죠. 부팅 단계에서는 와치독 시간을 넉넉하게 잡거나, 부팅 완료 후 활성화하는 전략이 필요합니다.
B. 디버깅할 때는 끄세요
개발 중에 코드 한 줄씩 실행하며 디버깅(Break point)을 하고 있는데 갑자기 PC가 재부팅 된다면?
십중팔구 와치독 때문입니다.
디버깅 중에는 CPU가 멈춰 있는 것으로 간주되므로, 개발 모드에서는 반드시 와치독을 비활성화해야 합니다.
C. 유저 공간(User Space) 감시
단순히 "커널이 살아있나"만 보는 게 아니라, "내 핵심 프로그램(웹 서버, DB 등)이 살아있나"를 확인하고 싶을 때가 있습니다.
리눅스에서는 watchdog 데몬을 설정하여, 특정 프로세스가 죽거나 메모리가 부족할 때도 와치독을 트리거(Trigger)하도록 설정할 수 있습니다. 이를 통해 좀 더 정교한 장애 대응이 가능합니다.

요약
와치독 타이머는 시스템이 멈췄을 때(Hang), 외부 개입 없이 스스로 재부팅 하여 복구하는 하드웨어 안전장치입니다.
정상 작동 중에는 주기적으로 타이머를 초기화(밥 주기)해주어야 하며, 이를 놓치면 타임아웃이 발생해 강제 리셋됩니다.
부팅 시간보다 짧게 타임아웃을 설정하면 무한 재부팅에 빠질 수 있으니, 여유 시간을 두고 설정하는 것이 엔지니어의 핵심 역량입니다.
'IT > 서버' 카테고리의 다른 글
| 서버 전기세가 왜 이렇게 많이 나오나? 전력 소비의 모든 것 (0) | 2026.03.23 |
|---|---|
| 서버가 '터졌다'는 의미: 진짜로 폭발한 걸까? 접속 불가와 트래픽 초과의 진실 (0) | 2026.03.06 |
| 서버 끄지 않고 하드디스크 교체하는 법? 백플레인(Backplane)과 핫스왑의 비밀 (1) | 2026.03.01 |
| 서버 한 대가 고장 나도 끄떡없는 이유, "클러스터(Cluster)" 완벽 이해 (1) | 2026.02.13 |
| 서버 안 끄고 디스크를 교체한다? "핫스왑"과 "핫플러그"의 완벽한 차이 (0) | 2026.02.12 |