Chapter 19. 다중 노드 분산 처리를 위한 이그제큐터(Executor) 최적화
자율 에이전트 드론 소프트웨어 스택은 수십 개의 센서, 인식, 경로 계획, 비행 제어 알고리즘이 짧은 주기 내에 병렬적으로 상호작용하는 거대한 유향 비순환 그래프(Directed Acyclic Graph)의 형태를 띤다. ROS2 아키텍처에서 노드(Node) 간의 이벤트 주도적(Event-driven) 메시지 교환과 콜백(Callback) 함수의 스케줄링을 담당하는 핵심 엔진은 이그제큐터(Executor)이다. 시스템의 규모가 커지고 데이터의 해상도가 높아짐에 따라, 이그제큐터 계층에서의 병목 현상과 스케줄링 비효율성은 드론의 반응성과 제어 주파수에 결정적인 악영향을 미치게 된다.
ROS2가 기본적으로 제공하는 단일 스레드 이그제큐터(Single-Threaded Executor)는 콜백 큐에서 라운드 로빈(Round-Robin) 방식으로 이벤트를 처리한다. 이는 개발의 단순성과 디버깅의 용이성을 제공하지만, 연산 비용이 높은 이미지 프로세싱 콜백이 실행되는 동안 밀리초(ms) 단위의 응답성을 요구하는 PID 제어 콜백이 대기 상태에 빠지는 우선순위 역전(Priority Inversion) 현상을 구조적으로 수반한다. 자율 드론과 같은 안전 필수(Safety-Critical) 하드웨어 종속 시스템에서 이러한 블로킹(Blocking)과 콜백 기아(Starvation) 현상은 제어기 발산을 초래하는 치명적인 원인이 된다.
이를 해결하기 위해 멀티 스레드 이그제큐터(Multi-Threaded Executor)를 도입하여 다중 코어 프로세서의 자원을 활용할 수 있으나, 이 역시 운영체제의 스레드풀 메커니즘과 스케줄러에 의존하므로 완전한 실시간성(Real-Time) 제어를 보장하지는 못한다. 따라서 고도화된 자율 비행 시스템은 콜백 그룹(Callback Group)을 세밀하게 분할하고, 상호 배타적(Mutually Exclusive) 그룹과 재진입 가능(Reentrant) 그룹을 전략적으로 혼합하여 이그제큐터의 스레드 스케줄링에 명시적인 힌트를 제공해야 한다.
본 장에서는 ROS2 이그제큐터의 내부 동작 사양과 스케줄링 큐 구조를 학술적으로 분석한다. 더 나아가 단일 스레드, 멀티 스레드, 그리고 최신 이벤트 구조 기반 이그제큐터(Events Executor) 모델을 비교 분석하고, 다중 노드 분산 환경에서 발생하는 병목의 구조적 한계를 극복하기 위한 이그제큐터 메모리 관리와 최적화 할당 전략을 심층적으로 논의한다.