32.2 History 폴리시의 KEEP_LAST 및 KEEP_ALL 전략 동적 자원 비용 분석

32.2 History 폴리시의 KEEP_LAST 및 KEEP_ALL 전략 동적 자원 비용 분석

ROS2 환경에서 발행자(Publisher)가 데이터를 송출하는 속도와 구독자(Subscriber) 측의 콜백(Callback) 함수가 알고리즘 연산을 마치고 다음 데이터를 받아들이는 속도 사이에는 필연적인 주파수 불일치(Frequency Mismatch)가 존재한다. 수신 측 제어 루프가 일시적인 CPU 스파이크로 처리가 지연될 때, 쏟아져 들어오는 텔레메트리 패킷들을 버리지 않고 미들웨어 계층의 대기열(Queue) 버퍼에 안전하게 정박시키는 임시 저장소가 바로 QoS의 History 폴리시(Policy)이다. 본 절에서는 대기열의 크기와 보존 규칙을 통제하는 두 가지 핵심 전략인 KEEP_LASTKEEP_ALL 체계를 비교하고, 각 전략이 무인 이동체 시스템의 동적 자원에 미치는 거시적 비용(Resource Cost)을 학술적으로 분석한다.

1. 통신 비동기성과 미들웨어 큐(Queue) 캐싱의 역학

통신 미들웨어는 본질적으로 송신자와 수신자 사이에 존재하는 비동기적 강물(Asynchronous Stream)과 같다. 드론의 카메라 노드가 30Hz로 이미지를 송출하더라도, 컴퓨터 비전 노드의 추론 연산이 20Hz로 지연되면 초당 10프레임의 데이터 잉여분이 발생한다.

만약 미들웨어 내부에 버퍼링 큐(Queueing Buffer)가 존재하지 않는다면 이 잉여 패킷들은 커널 영역에서 가차 없이 폐기(Drop)되어 정보 스파스(Sparse) 상태를 유발할 것이다. History 폴리시는 메모리 공간 일부를 임대하여 이러한 비동기적 속도 차이를 완충하는 댐(Dam)의 역할을 수행한다. 그러나 임베디드 엣지 컴퓨팅 환경에서 RAM(Random Access Memory) 자원은 극도로 제한적이기에, 이 댐의 수위(Water Level)를 어떻게 제어할 것인가가 시스템 전체의 안정성을 좌우하는 공학적 난제로 떠오른다.

2. KEEP_LAST 전략과 링 버퍼(Ring Buffer) 기반 최신성 지향 모델

가장 널리 채택되는 표준 캐싱 모델은 KEEP_LAST 전략이다. 이 폴리시는 Depth라는 정수형 매개변수를 동반하여, 미들웨어가 큐에 보관할 수 있는 최대 패킷의 개수(N)를 엄격히 제한한다.

자료구조 관점에서 이는 원형 연결 리스트 알고리즘인 링 버퍼(Ring Buffer)로 구현된다. 큐가 꽉 찬 상태에서 새로운 데이터가 도착하면, 큐의 가장 오래된(Oldest) 패킷의 헤드 포인터를 덮어씌워 강제 폐기(Evict)하고 최신 패킷을 삽입한다. 이 전략의 웅장함은 시스템 메모리 점유율의 상한선(Upper Bound)을 \mathcal{O}(1)로 고정시킬 수 있다는 데 있다. 1000Hz로 쏟아지는 IMU 데이터라도 depth=10으로 설정하면, 메모리 폭주 없이 항상 최신의 물리적 관성 상태(Recency)를 수신자에게 제공하므로, 수 마이크로초 단위의 위상 지연(Phase Lag)조차 용납하지 않는 고속 위치 추정(Odometry) 알고리즘에 절대적으로 부합한다.

3. KEEP_ALL 전략의 자원 고갈(Resource Exhaustion) 아킬레스건

반면 KEEP_ALL 전략은 어플리케이션 계층이 패킷을 읽어가기(Consume) 전까지는 단 하나의 과거 데이터도 스스로 폐기하지 않는 절대 보존의 법칙을 따른다. 이는 이력의 무손실을 보장하지만, 시스템 자원 관리 측면에서는 잠재적인 시한폭탄(Time Bomb)과 같다.

만약 드론의 메인 제어 프로세서가 우선순위 역전(Priority Inversion) 현상에 휘말려 수 초간 서브스크라이버 콜백을 처리하지 못한다면, KEEP_ALL 큐는 유입되는 센서 스트림을 적재하기 위해 끝도 없이 힙(Heap) 메모리의 동적 할당을 요청하게 된다. 제한된 RAM을 지닌 임베디드 단말기에서 이 무제한(Unbounded) 팽창은 결국 OOM(Out of Memory) 패닉을 촉발시켜 운영체제 레벨의 강제 프로세스 종료(OOM Killer)를 초래한다. 따라서 KEEP_ALL은 센서 스트리밍망에서는 철저히 금기시되며, 자원 고갈 한계치(Resource Limits QoS) 매개변수와의 연동 없이는 하드 리얼타임 스케줄링 환경에 단독으로 배치될 수 없는 구조적 취약성을 내포한다.

4. 자율 비행 서브시스템별 History 채택 공간 모델링

이러한 두루마리 캐싱 역학의 차이로 인해, 로보틱스 소프트웨어 엔지니어는 데이터의 의미론(Semantics)에 기반하여 타겟 서브시스템별로 상이한 History 정책을 매핑해야 한다.

드론의 경로 이탈을 막기 위해 1ms 단위로 제어 표면을 조작하는 하위 모션 컨트롤러 토픽 층은 무조건적으로 최신 좌표만을 좇아야 하므로 KEEP_LAST(depth=1~5)의 극단적 축소형으로 세팅된다. 과거에 지나쳐버린 자세 좌표는 현재 시점에서는 낡은(Stale) 오차 덩어리에 불과하기 때문이다. 반대로, 글로벌 관제소(GCS)에서 드론으로 전송하는 100개의 웨이포인트(Waypoint) 궤적 배열이나 맵(Map) 메타데이터 수신망은 단 하나의 꼭짓점이라도 유실될 시 전체 기하학적 임무가 어그러지므로, 보존이 최우선되는 KEEP_ALL 모델 하에서 설계되거나 예외적인 자원 통제 알고리즘의 보호를 받게 된다.