MoveIt 2 빌드에 RAM 몇 GB가 필요할까: 8GB에서 실패, 순차 빌드는 2.4GB (실측)

Read in English

Nav2는 RAM 8GB에서 기본 설정 그대로 빌드가 끝났다(Nav2 RAM 실측 글). MoveIt 2도 그럴까. 같은 방법으로 MoveIt 2(Jazzy 브랜치, 41개 패키지)를 RAM 상한을 바꿔 가며 다섯 번 빌드했다. 결과는 달랐다. 8GB에서 기본 설정 빌드가 실패했다.

결론부터

  • 기본 설정(colcon build)은 8GB에서 실패했다. 41개 중 24개를 빌드한 뒤 컴파일러가 메모리 부족으로 강제 종료됐다. 4GB에서는 4개만 빌드하고 멈췄다.
  • 16GB에서는 성공했고 최대 8.7GiB까지 올라갔다.
  • 순차 빌드(--parallel-workers 1 + MAKEFLAGS=-j1)는 최대 2.4GiB였고, 8GB와 4GB 모두 끝까지 빌드됐다.
  • OS·브라우저·IDE 몫까지 생각하면 MoveIt 2를 기본 설정으로 빌드하려면 16GB는 있어야 한다. 8GB 노트북이라면 순차 빌드가 사실상 유일한 방법이다.

측정 조건

Nav2 때와 같다. 4 vCPU·16GB 리눅스 서버(AWS Lightsail)에서 Docker 컨테이너마다 메모리 상한을 걸고, 스왑은 껐다(--memory-swap을 --memory와 같게). 그래서 “성공”은 RAM 안에서 끝났다는 뜻이다. 이미지는 ros:jazzy(다이제스트 066420e07f60…), MoveIt 2는 jazzy 브랜치 커밋 e34dffb0이다. 최대 메모리는 컨테이너 cgroup의 memory.peak로 읽었다.

조건 RAM 상한 결과 최대 메모리
기본 설정 (4 워커 × make -j4) 16GiB 성공 (41/41) 8.7GiB
기본 설정 8GiB 실패 — cc1plus Killed, 24개 완료 후 중단 8.0GiB (상한)
기본 설정 4GiB 실패 — cc1plus Killed, 4개 완료 후 중단 4.0GiB (상한)
순차 빌드 (워커 1 × make -j1) 8GiB 성공 (41/41) 2.4GiB
순차 빌드 4GiB 성공 (41/41) 2.4GiB

Nav2와 나란히 놓으면

Nav2 (45개) MoveIt 2 (41개)
기본 설정, 16GiB 최대 메모리 8.1GiB 8.7GiB
기본 설정, 8GiB 성공 실패
순차 빌드 최대 메모리 2.7GiB 2.4GiB

패키지 수는 MoveIt 2가 더 적지만, 기본 설정에서 동시에 돈 컴파일러들의 메모리 합이 8GB를 넘겼다. 순차 빌드에서는 한 번에 파일 하나만 컴파일하므로 두 프로젝트 모두 2GiB대에 머문다. “8GB면 ROS 2 빌드는 된다”는 말은 Nav2까지만 맞고, MoveIt 2를 소스로 빌드하기 시작하면 틀린다.

숫자를 읽을 때 주의할 점

  • memory.peak에는 파일 캐시도 들어간다. 16GB에서 잡힌 8.7GiB에는 여유가 있어서 쓴 캐시가 섞여 있다. 그래도 8GB에서는 커널이 캐시를 비워도 버티지 못하고 컴파일러가 죽었다. 기본 설정에 꼭 필요한 양은 8GiB보다 크다.
  • 빌드 시간은 참고만 한다. 기본 설정 16GB는 1시간 37분, 순차 빌드는 1시간 56분~57분이 걸렸다. 측정 서버는 CPU 크레딧을 쓰는 버스트형이라 중간에 속도가 묶였을 수 있다. 제 속도가 나오는 PC라면 순차 빌드와 기본 설정의 시간 차이가 이보다 커진다.
  • 코어 수에 따라 달라진다. 기본 설정은 동시에 도는 컴파일러 수가 대략 워커 수 × make -j만큼 늘어난다. 8코어·16코어 PC는 같은 MoveIt 2라도 기본 설정에서 더 많은 RAM을 쓴다.

8GB 노트북이라면

내 노트북은 2020년 인텔 맥북 프로 13형(4코어, RAM 8GB)이다. 측정은 위 리눅스 서버에서 했고 이 맥에서 MoveIt 2를 직접 빌드하지는 않았다. 다만 측정 서버도 4코어였고 8GB 상한에서 기본 설정이 실패했으니, OS 몫까지 쓰는 이 사양에서는 순차 빌드로 돌린다.

MAKEFLAGS="-j1" colcon build --parallel-workers 1

MoveIt 2를 직접 고칠 일이 없다면 소스 빌드 대신 sudo apt install ros-jazzy-moveit로 바이너리를 설치하는 편이 낫다. 순차 빌드는 메모리 대신 시간을 쓰는 방법이라, 빌드 자체를 피하는 게 가장 빠르다.

RAM을 사거나 바꾼다면

  • 새 노트북: MoveIt 2를 소스로 빌드할 생각이면 RAM 16GB가 최소다. 코어가 8개 이상이면 기본 설정 빌드의 동시 컴파일 수가 늘어나니 32GB가 편하다.
  • 지금 노트북 업그레이드: RAM 슬롯이 있는 모델이면 16GB 모듈로 올리는 게 가장 싸다. 맥북처럼 RAM이 메인보드에 붙어 있는 모델은 교체가 안 되니 순차 빌드나 바이너리 설치로 버틴다.

위 기준에 맞춰 고른 상품이다. 써 보고 고른 게 아니라 사양으로 고른 것이니, 사기 전에 내 노트북과 맞는지 꼭 확인한다.

  • 삼성 노트북용 DDR5 16GB 5600MHz: 최근 노트북에 많이 쓰는 규격이다. 내 노트북이 DDR5 SO-DIMM 슬롯을 쓰는지 먼저 확인한다. RAM이 메인보드에 붙은(LPDDR) 모델은 교체할 수 없다.
  • 삼성전자 노트북용 DDR4 16GB: 그 이전 세대 노트북용이다. DDR4와 DDR5는 슬롯 모양이 달라 서로 끼울 수 없다.

재현

측정 스크립트(measure.sh)와 다섯 번의 원본 결과(results.tsv, 조건별 빌드 로그)는 실험 공개 폴더에 있다. Docker가 있는 리눅스에서 bash measure.sh로 같은 순서를 다시 돌릴 수 있다.

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

비슷한 글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다