## 0.1 논리 코어 수 기반 이그제큐터 스레드 동적 자원 할당 메커니즘
운영체제 수준에서 최적의 빌드 처리량(Throughput)을 달성하기 위한 선제 조건은 호스트 시스템이 보유한 연산 자원(Computing Resource)의 한계를 정확히 인지하고, 이를 초과하지 않는 범위 내에서 워커(Worker) 스레드를 동적으로 할당하는 것이다. Colcon 빌드 프레임워크는 시스템의 논리 코어(Logical Core) 수를 기반으로 빌드 익스큐터(Executor)의 풀(Pool) 파라터를 자동 설정하는 자원 매핑 알고리즘을 선행 작동시킨다.
0.1.1 하드웨어 토폴로지 탐색 및 논리 코어 식별
Colcon의 코어 엔진이 실행되면 가장 먼저 운영체제의 하드웨어 추상화 계층(HAL, Hardware Abstraction Layer)에 질의(Query)하여 현재 시스템의 CPU 토폴로지를 스캔한다. 파이썬 환경의 os.cpu_count() 등의 인터페이스를 활용하여 단순 물리적 코어(Physical Core) 뿐만 아니라, 하이퍼스레딩(Hyper-threading)이나 SMT(Simultaneous Multithreading) 기술이 적용된 프로세서의 논리적 실행 공간 개수를 도출해 낸다.
예를 들어, 8개의 물리 코어를 지니고 하이퍼스레딩이 적용된 프로세서의 경우, 운영체제 단위에서는 16개의 논리 코어로 인식된다. Colcon은 이 반환값을 기준 차원(Baseline Dimension)으로 삼아, 패키지 단위의 동작을 병렬로 처리할 수 있는 워커 스레드의 최대 동시성 임계치(Maximum Concurrency Threshold)를 설정한다. 명시적인 CLI 파라미터(예: --executor-config) 입력이 없는 환경에서 기본(Default) 익스큐터 워커 수는 이 논리 코어 수와 1:1로 매핑되는 전략을 취한다.
0.1.2 동적 익스큐터(Executor) 인스턴스화 및 스레드 풀링(Thread Pooling)
논리 코어 수 기반의 워커(Worker) 할당 목표값이 결정되면, Colcon 스케줄러는 패키지 처리를 전담할 스레드 풀 또는 프로세스 풀을 동적으로 인스턴스화한다.
- 익스큐터(Executor) 추상화: Colcon 구조에서 익스큐터 클래스는 작업 큐(Task Queue)로부터 실행 대기 중인 개별 패키지 빌드 잡(Job)을 가져와 가용한 스레드에 할당하는 제어 주체이다. 스레드 풀 환경에서는 각 스레드가 OS 스케줄러에 의해 논리 코어 중 하나에 점유되어 패키지 빌드 스크립트(예: CMake 래퍼 스크립트)를 비동기적으로 실행한다.
- 오버헤드 방지 목적의 풀링(Pooling): 빌드가 트리거될 때마다 개별 패키지를 위해 새로운 스레드를 생성하고 소멸하는 것은 컨텍스트 스위칭(Context Switching) 및 메모리 할당 관점에서 비효율적이다. 따라서 Colcon은 미리 산정된 코어 수만큼 스레드를 생성해 두고 큐 모니터링 모드(Waiting State)로 진입시키는 스레드 풀 패턴(Thread Pool Pattern)을 적용하여 생성 오버헤드를 원천적으로 제거한다.
0.1.3 CGroup 기반의 자원 제한 (Resource Quota) 인식
현대의 ROS 2 개발 환경은 클라우드 가상 머신(VM)이나 Docker 기반 컨테이너 환경에서 실행되는 경우가 빈번하다. 이러한 환경에서는 논리 코어의 전체 수(nproc 출력)가 현재 컨테이너에 논리적으로 제한된 코어 할당량(CPU Quota)과 불일치할 수 있다.
이러한 불일치는 자원 컨텐션(Contention)을 유발하여 오히려 병렬화 성능을 하락시킬 수 있다. 따라서 최신 모델의 설계에서는 단순한 스레드 수 감지뿐만 아니라, 리눅스 커널의 Control Groups(CGroup) V1 및 V2의 가상 파일 시스템(/sys/fs/cgroup/) 정책을 확인하여 프로세스의 실행 할당 시간을 해석한다. 이를 통해 CPU 할당 시간과 주기(Period)의 비율을 계산하여 ’유효 논리 코어 수(Effective Logical Cores)’를 파악하고, 이에 맞추어 동적 스레드 풀의 크기를 자동으로 조절(Scale-down)하는 방어적 메커니즘을 포함하고 있다. 이는 클라우드 네이티브 기반 지속적 통합(CI) 환경에서 Colcon 빌드 파이프라인의 자원 효율성을 안정적으로 보장하는 기술적 토대가 된다.