30.8 다중 장기 실행 모듈 병렬 처리를 위한 멀티스레드 기반 이그제큐터 모델
자율 이동체 로보틱스 시스템이 고도화됨에 따라 에이전트는 단일한 선형 연산에 머무르지 않고, 복합적인 행동 체계를 동시에 전개할 것을 요구받는다. 예를 들어 드론이 목표 웨이포인트(Waypoint)로 비행하는 동시에, 하단에 부착된 짐벌(Gimbal) 시스템을 통해 지상 타겟을 추적하며 비디오 스트림을 캡처하는 상황이 대표적이다. 이처럼 상호 독립적인 여러 개의 장기 실행 임무(Long-Running Tasks)가 다중 클라이언트의 호출로 단일 서버 프로세스 내에 쇄도(Flood)할 때, 이를 지연 없이 병렬적으로 수용(Concurrency)할 수 있는 하부 아키텍처가 필수적이다. 본 절에서는 대규모 액션(Action) 트랜잭션 스케줄링을 견인하는 멀티스레디드 이그제큐터(MultiThreadedExecutor) 모델과 콜백 그룹(Callback Group) 분리 이론을 학술적으로 논의한다.
1. 단일 스레드 시스템의 동시성 결여 및 콜백 지연(Latency) 파괴 현상
ROS2의 기본 실행 엔진인 단일 스레드 이그제큐터(SingleThreadedExecutor)는 한 번에 단 하나의 콜백 함수만을 큐에서 인출하여 처리한다. 만약 액션 서버의 제어 인터페이스가 단일 스레드 모델에 묶여 있다면, 클라이언트 A가 지시한 비행 태스크의 execute_callback 반복문이 CPU를 선점하는 수 분의 시간 동안, 클라이언트 B가 새롭게 짐벌 제어 태스크를 요청(send_goal)하더라도 이그제큐터는 이를 감지할 수단을 상실한다.
결과적으로 두 번째 요청에 대한 목표 수락(Accept) 응답은 첫 번째 연산이 끝날 때까지 큐 내부에 무기한 적체(Pending)되며 시스템의 동시성(Concurrency)은 붕괴된다. 액션 인터페이스가 지닌 ’비동기 응답’이라는 고유의 3원 통신 철학을 유지하기 위해서는, 무거운 실행 연산(Executing) 콜백들을 메인 네트워크 리스닝 스레드에서 물리적으로 완전히 분리해내는 확장성 모델이 전제되어야 한다.
2. MultiThreadedExecutor 도입과 스레드 풀(Thread Pool) 분배
다중 임무의 동시 관장을 실현하는 핵심 솔루션은 MultiThreadedExecutor 체계를 활용한 운영체제(OS) 수준의 스레드 풀(Thread Pool) 병렬화이다. 액션 서버 컴포넌트가 멀티스레드 이그제큐터 상에 편입되면 시스템은 가용 논리 코어 수에 비례하는 다수의 워커 스레드(Worker Thread) 인스턴스를 메모리에 상주시킨다.
이 모델 하에서는 네트워크 미들웨어 계층(Wait Set)에서 수신되는 개별 패킷들이 각기 다른 가용 스레드로 위임(Dispatch)된다. 이를 통해 클라이언트 A의 장기 주행 연산 루프가 스레드 1에서 점유 상태(Blocking)를 유지하고 있더라도, 잉여 스레드 2, 3이 여전히 네트워크 소켓을 리스닝(Listening)하며 클라이언트 B의 새로운 목표 수락(goal_callback)과 취소 쿼리(cancel_callback)에 즉각적으로 마이크로초 단위 응답을 반환할 수 있는 구조적 쾌적성을 확보하게 된다.
3. 콜백 그룹(Callback Group) 패턴을 통한 상호 배제(Mutex) 설계와 무결성 제어
단순한 멀티스레딩 전개는 공유 힙(Heap) 공간이나 하드웨어 레지스터(예: 모터 PWM 컨트롤러)에 동시다발적 스레드 접근을 허용함으로써 잠재적인 데이터 무결성 결함(Data Race)을 초래한다. 이를 정책적으로 통제하기 위하여 ROS2는 콜백 그룹(Callback Group) 파티셔닝 디자인을 적용한다.
개발자는 액션 서버를 생성할 때 Reentrant(재진입 가능)와 Mutually Exclusive(상호 배제)의 콜백 그룹 프로파일을 명시적으로 선언해야 한다. 만약 액션 모듈이 카메라 처리 알고리즘과 같이 하드웨어 동시 점유 자원이 존재하지 않고 CPU 연산만이 독립적인 순수 수학 모델이라면, Reentrant 그룹으로 맵핑하여 다수의 목표 요청 간 완벽한 동시 실행 매핑을 이끌어 낼 수 있다.
반면 단 하나뿐인 기체 구동부 축을 제어하는 액션 인터페이스라면, Mutually Exclusive 콜백 그룹 설정으로 다중 스위칭을 제약하여 동일 스코프 내의 동시 실행을 차단하면서도, 동시에 비동기 응답망(수락 또는 거절 분기)은 분리 스레드에서 활성시키는 논리적 잠금 프로파일링(Logical Lock Profiling) 철학을 적용해야 한다.
4. 다중 콜백 부하율(Load) 균형 및 시스템 점유율(Throughput) 최적 모델링
이상적인 분산 액션 네트워크 환경에서 액션 처리량(Throughput)은 단순히 생성한 스레드의 절대 수에 비례하여 선형적으로 개선되지 않는다. 장기간 점유되는 콜백의 수가 하드웨어 프로세서의 물리적 코어 한계를 초과하면 운영체제의 컨텍스트 스위칭(Context Switching)에 소모되는 인터럽트 과부하가 심각한 런타임 역성장을 유발한다.
따라서 대규모 다중 에이전트 체계(MAS)의 군집 코디네이터 서버나 병렬 플래닝 클러스터를 설계할 경우, 액션 서버 이그제큐터의 스레드 풀 사이즈는 허용 가능한 최대 병렬 태스크 단위와 임무의 I/O 블로킹 비율에 따라 고정 임계치로 조절되어야만 한다. 더불어 멀티스레드 경쟁 조건 속에서도 취소 호출(Cancellation Handle) 등 시스템의 생존을 관장하는 최우선순위 인터럽트 콜백에는 독립 제어형 병렬 패턴이나 특수 큐 포트를 맵핑하여 하드웨어 제어망의 회복 탄력성(Resilience)을 영구적으로 보호하는 공학적 신뢰성 설계가 필수적으로 병행되어야 한다.