mold: 링크 속도를 112배까지 끌어올린 병렬 링커

mold: A Parallel Linker

mold: 링크 속도를 112배까지 끌어올린 병렬 링커

소프트웨어 빌드 과정에서 컴파일된 오브젝트 파일을 하나의 실행 파일이나 공유 라이브러리로 결합하는 링킹은 필수적이지만, 특히 대규모 C++ 프로그램에서 링크 시간은 여전히 주요 병목으로 남아 있습니다. 기존 링커들은 제한된 병렬성만 활용하여 대부분의 CPU 코어를 유휴 상태로 둡니다. 이 논문은 Unix/Linux용 링커인 mold를 소개합니다. mold는 링킹 파이프라인 전체에 데이터 병렬성을 체계적으로 적용하여, 얽힌 심볼 해석과 아카이브 처리를 분리하는 새로운 설계를 통해 기존 링커의 확장성을 저해하는 제약을 극복합니다. 대규모 실제 프로그램에서 mold는 수 기가바이트의 디버그 바이너리를 수 초, 때로는 1초 미만으로 링크하며, 최신 lld 링커보다 2.4~16.1배, 기존 GNU ld보다 최대 112배 빠릅니다. 제거 연구(ablation study)는 특정 최적화 하나가 지배적이지 않으며, 모든 패스의 병렬화가 누적되어 속도 향상을 가져온다는 것을 보여줍니다.

기존 링커는 제한된 병렬성만 활용하여 링킹 중 대부분의 CPU 코어를 유휴 상태로 둡니다.
  1. gabeochoa

    Rui의 오래된 트윗인데, 최근 zig 비디오에서 보고 정말 마음에 들었습니다:

    (https://x.com/rui314/status/1560277403787997185)

    > 제 전략은 공공재의 가치를, 예를 들어, 100만큼 높이고 1을 돌려받는 것입니다. 그러니 참아주세요. mold를 무료로 사용하고 싶다면, 그냥 그렇게 하면 됩니다. 이것이 제 오픈소스 비즈니스 전략입니다.

    mold와 Rui에게 행운을 빕니다.

  2. dochtman

    Wild는 현재 mold보다 상당히 빠릅니다:

    https://github.com/wild-linker/wild

    (README에 벤치마크가 있습니다.)

  3. lrvick

    우리는 Stagex 리눅스 배포판에서 기본 링커로 mold를 사용합니다. 전체 트리 빌드 시간에서 몇 시간을 절약했습니다.

이 날의 다른 글

2026-08-26