Heartbeat 검출기는 침묵을 장애 보고로 바꿉니다. 이 변환에는 timeout이 필요하고 timeout에는 충돌하는 두 역할이 있습니다. CPU scheduling, network queue, OS 처리에서 생기는 정상 지연보다 길어야 하지만, crash한 참여자를 서비스가 멈추기 전에 제거할 만큼 짧아야 합니다. 일반 경로의 꼬리가 길기 때문에 운영자는 보수적인 값을 택하고 느린 복구를 감수합니다.

FiDe는 반대 방향을 선택합니다[1]. 예측하기 어려운 스택에 timeout 하나를 더 맞추는 대신 지연이 의도적으로 안정된 process-to-process 경로를 만듭니다. Core isolation과 반응형 packet processing이 종단 host의 jitter를 줄이고 traffic engineering이 용량을 예약합니다. 서로 분리된 multicast tree가 link와 switch 장애를 보완합니다. 경로 지연을 경험적으로 제한할 수 있으면 heartbeat 부재를 일반적인 false suspicion 여유 없이 crash로 해석할 수 있습니다.

원문은 SAP 데이터센터 시험에서 원격 process crash를 30µs 아래에 알렸고 비교한 최신 방식보다 7.2배 빨랐다고 보고합니다. 더 중요한 결과는 정확도 때문에 장애가 없는 protocol message pattern도 바꿀 수 있다는 점입니다. 참여자는 detector의 heartbeat 결정에 따라 진행할 수 있으므로, detector가 살아 있는 process 집합에 일관된 관점을 제공한다는 전제 아래 또 한 번의 majority round를 줄일 수 있습니다.

라이브러리가 아닌 인프라 구성요소로 만든 검출기

일반 장애 검출은 애플리케이션 안의 라이브러리입니다. Heartbeat는 application thread, kernel work, interrupt, 일반 트래픽과 경쟁합니다. 여러 계층을 관측하면 deadlock과 gray failure도 찾을 수 있지만 probe와 감시 대상 구성요소가 더 늘어납니다. FiDe는 crash failure로 목표를 좁히고 detector를 별도로 설계한 인프라 구성요소로 다룹니다.

애플리케이션은 먼저 감시할 프로세스를 등록합니다. 제어기는 heartbeat frequency와 message size에 따라 서로 분리된 network path를 고르고 대역폭을 예약합니다. FiDe process는 작은 heartbeat를 주기적으로 보내며 protocol decision을 함께 실을 수 있습니다. 네트워크는 내부 노드가 겹치지 않는 multicast tree 여러 개에 이를 복제해 forwarding component 하나가 모든 복사본을 없애지 못하게 합니다.

각 host에서는 dedicated core, XDP, 조정한 송수신 pipeline으로 heartbeat를 처리합니다. Detector는 감시 대상 서비스의 event loop 뒤에서 기다리지 않습니다. Kernel watchdog은 process가 실행을 멈춘 상태를 확인하고 별도 active component는 애플리케이션과 모든 장애 원인을 공유하지 않습니다. Timing assumption이 scheduler 동작에 대한 막연한 기대가 아니라 명시적인 resource contract가 됩니다.

FiDe는 애플리케이션 옆에 예약된 crash 검출 경로를 만듭니다. 제어기는 내부 노드가 겹치지 않는 multicast tree를 설치하고 heartbeat 트래픽 예산을 잡습니다. 격리 코어와 XDP는 애플리케이션 event loop 밖에서 heartbeat를 처리합니다. Kernel watchdog과 active detector는 제한 시간을 넘긴 상호작용을 하나의 일관된 장애 알림으로 바꿉니다. 이 글을 위해 새로 만든 도판.

설계 대상은 crash이며 모든 부분 장애가 아닙니다. Local watchdog이 진행 중단을 관측하면 deadlock process를 실패로 볼 수 있지만, 잘못된 데이터를 반환하거나 한 방향만 느린 서비스에는 다른 진단이 필요합니다. FiDe가 timing을 단순화할 수 있는 이유가 이 전문화이며, gray-failure system은 더 넓은 범위를 유지합니다.

안정된 지연이 timeout을 상한으로 바꾸는 조건

평가는 SAP 운영 데이터센터의 server 여섯 대와 Arista 7280CR-48 switch에서 실행했고 더 큰 topology는 CloudLab에서 시험했습니다. 주요 비교에서 peer-to-peer interaction은 45µs 아래였고 대안보다 5.4배 넘게 빨랐습니다. Detection threshold가 48µs를 넘으면 false positive가 없는 경험적 정확도에 도달했으며, 비교한 detector 두 개가 같은 정확도에 필요한 약 800µs보다 대략 16배 짧았습니다.

실제 crash notification에는 local observation, network delivery, remote upcall이 포함됩니다. 분포는 대부분 평균 근처에 모였고 99.999 percentile 부근에서만 넓어졌습니다. Preemption과 queueing을 경로에서 제거해 신뢰할 최악 상호작용을 일반 경로에 가깝게 만들었으므로 millisecond급 안전 계수를 둘 필요가 줄었습니다.

Redundancy에는 비용이 있습니다. Heartbeat마다 여러 tree의 용량을 사용하고 예약 대역폭은 다른 트래픽이 쓸 수 없습니다. 100µs heartbeat interval과 약 400byte piggyback 한계에서 원문은 decision payload를 약 32Mb/s로 추정합니다. Group size, frequency, tree height가 커질수록 자원 요구가 늘기 때문에 데이터센터 전체 process를 제한 없이 all-to-all 감시하기보다 일정한 coordination participant 집합에 맞습니다.

저자들의 배치 분석에서는 switch level이 하나 추가될 때 forwarding delay가 약 5~10µs 늘어납니다. 제어기는 path height를 threshold에 포함해야 합니다. 이 결과는 어디서나 30µs라는 보장이 아니라 특정 isolated pipeline과 reserved topology에서 도출한 상한입니다.

장애가 없는 coordination을 바꾸는 정확도

일반 consensus protocol은 느리지만 정상인 process를 의심할 수 있어 timeout을 증명처럼 사용할 수 없습니다. FiDe의 강한 정확성 목표는 heartbeat-synchronous uniform consensus 변형을 가능하게 합니다. Process는 proposal이나 decision을 detector multicast에 함께 보내고 모든 정상 참여자는 일관된 failure view를 받습니다. Failure detector가 별도 background traffic으로만 움직이지 않고 유용한 protocol information을 운반합니다.

논문은 이 algorithm을 Redis와 ZooKeeper 형태의 coordination에 연결했습니다. 장애가 없는 실행에서 RedisFiDe의 최대 처리량은 1.7배가 되고 지연은 기준 방식의 0.46배로 줄었습니다. ZooKeeper 연결은 처리량 최대 2.23배와 지연 0.57배를 기록했습니다. Recovery benchmark가 아니라, 신뢰도가 낮은 detector에서는 정상 중에도 필요했던 message round를 제거한 결과입니다.

이 결과는 배치 책임도 키웁니다. Timing contract가 깨지면 최적화한 protocol이 단순히 늦게 복구하는 것이 아니라 안전하지 않은 가정을 할 수 있습니다. Reservation, detector isolation, controller correctness, network-failure probability가 service safety case의 일부가 되며, 운영자는 예약 경로가 설치돼 있고 측정 latency envelope 안에 남는지 계속 증명해야 합니다.

장애 격리와 남은 가정

FiDe는 path diversity로 network fault를 견디지만 물리 diversity가 실제여야 합니다. 논리 경로 두 개가 line card, power domain, 잘못된 configuration을 공유하면 함께 실패할 수 있습니다. 원문의 probability analysis는 독립 장애 가정에 의존하므로 운영 검토는 switch identifier뿐 아니라 failure domain에 tree를 매핑해야 합니다.

중앙 controller는 할당 이후 heartbeat 데이터 경로에서 빠져 매번의 메시지가 controller에 의존하지 않습니다. 그래도 controller 장애는 새 등록과 재구성을 막을 수 있습니다. 용량은 수요가 오기 전에 예약해야 하며 이미 oversubscribed된 fabric에서 priority marking만으로 같은 상한을 약속할 수 없습니다.

Dedicated core와 bandwidth는 비용 비교를 바꿉니다. 일반 detector는 공유 자원을 사용하고 긴 timeout을 지불하지만 FiDe는 가볍게 쓰일 수 있는 전용 자원으로 정확도를 구매합니다. 장애 하나가 많은 machine을 멈추게 하는 작은 coordination service에는 유리하지만 모든 application process에 같은 구조가 맞는 것은 아닙니다.

보고한 신뢰성은 평가한 hardware와 software 안의 경험적 결과입니다. Datacenter clock, switch firmware, XDP behavior, watchdog scheduling, topology 변화가 있으면 다시 검증해야 합니다. Protocol safety에 쓰는 보장에는 configured bound를 넘을 때 닫힌 상태로 실패하는 admission control과 runtime alarm이 필요합니다.

적용하기 좋은 coordination 범위

가장 잘 맞는 대상은 저지연 서비스에 metadata, lock, membership, synchronization을 제공하는 작은 replica 집합입니다. 예약할 트래픽은 작고 failure decision은 더 큰 데이터 경로에 영향을 줍니다. 정상 consensus round 하나를 없애면 reserved-core 비용보다 큰 이점을 얻을 수 있습니다.

수천 개 ephemeral member, multi-region path, heartbeat는 보내면서 동작이 잘못된 gray failure에는 약합니다. Cross-region propagation만으로 마이크로초 목표를 넘고 공유 WAN에서 bandwidth reservation을 강제하기 어렵습니다. 이런 시스템에는 lease, adaptive suspicion, application-level health check, reconciliation이 계속 필요합니다.

일반화할 교훈은 장애 검출 성능이 algorithm timeout 선택만의 문제가 아니라 전체 observation path의 속성이라는 점입니다. Execution을 격리하고 네트워크를 예약하며 redundancy를 명시하면 상위 protocol을 바꿀 만큼 불확실성을 줄일 수 있습니다. 같은 이점이 한계이기도 합니다. 변경한 protocol이 그 상한에 의존하면 상한을 유지하는 모든 구성요소가 correctness의 일부가 되며 그 수준으로 운영해야 합니다.

출처와 저작권 안내

이 글은 Silicon & Systems가 작성한 편집 분석으로, detector 구조와 측정, 가정을 우리 표현으로 다시 썼습니다. 원문의 문장, 표, 도판은 재수록하지 않았고 도판은 이 글을 위해 새로 만들었습니다. 전체 논문은 USENIX ATC 2025 발표 페이지에서 확인할 수 있으며, 저작권은 저자에게 있습니다. 2025.