발표자는 먼저 mruby와 mrbc(mruby compiler) 간의 메모리 소비량 차이에 대한 기존의 오해를 재조명합니다. 과거에는 mruby가 mrbc보다 메모리 사용량이 크다고 알려졌으나, 실제 대규모 애플리케이션에서는 mruby의 ‘Pre-sym’ 기능(심볼 테이블 및 IREP를 ROM에 미리 배치) 및 ‘Object Space’ 할당 방식이 더 효율적일 수 있다는 가설, 즉 ‘건배 포인트(Kanpai Point)’ 이론을 제시합니다. 이 이론은 애플리케이션 규모가 커질수록 MicroRuby(mruby 기반)의 램(RAM) 소비가 PicoRuby(mrbc 기반)에 비해 완만하게 증가하여 특정 지점에서 역전될 수 있음을 시사합니다.
이 가설을 증명하기 위해 발표자는 MicroRuby에 ‘선점형 태스크 스케줄링(Preemptive Task Scheduling)’ 기능을 구현하는 과정을 상세히 설명합니다. 이는 마이크로컨트롤러 환경에서 여러 태스크를 병렬로 실행하기 위한 필수적인 기능으로, mruby의 mrb_context
구조체를 활용하여 스레드와 유사한 동작을 구현했습니다. 이를 통해 R2P2와 같은 복잡한 애플리케이션을 MicroRuby 상에서 구동할 수 있는 기반을 마련했습니다.
실제 구현 단계에서는 PicoRuby에서 사용되던 방대한 C 확장(C extensions) 라이브러리를 MicroRuby로 이식하는 데 많은 노력이 투입되었습니다. AI 도구의 도움 없이 수동으로 1만 2천 라인 이상의 코드를 포팅하는 어려운 과정을 거쳤습니다. 메모리 소비량 측정의 정확성을 확보하기 위해 마이크로컨트롤러 상에서 작동하는 맞춤형 메모리 할당자(est_alloc
)를 개발하여 기존 newlib
의 한계를 극복했습니다.
측정 결과, R2P2 애플리케이션이 로드된 상태에서 MicroRuby는 약 109KB의 램을 사용했으며, 이는 PicoRuby가 유사한 기능 로드 시 78KB를 사용하는 것과 비교할 때 약 30%의 차이로, 초기 예상보다 훨씬 적은 차이를 보였습니다. 이는 ‘건배 포인트’ 가설을 부분적으로 뒷받침하며, 대규모 애플리케이션에서는 MicroRuby의 효율성이 더욱 부각될 수 있음을 시사합니다. 발표자는 Raspberry Pi Pico W와 같은 실제 임베디드 장치에서 MicroRuby 기반의 IoT 애플리케이션(온도 센서 데이터 전송)이 성공적으로 작동하는 시연을 통해 MicroRuby의 실용성을 명확히 보여주었습니다.