Ubuntu 패키지 재구축으로 90% 더 빨라진 속도

6 hours ago 1

Ubuntu 패키지 재구성을 통한 성능 향상

  • 설정

    • jq를 사용하여 GeoJSON 파일을 처리하는 작업을 수행 중이며, 500MB 크기의 Alameda County Assessor의 지적도를 사용함.
    • 특정 조건에 맞는 데이터를 추출하는 쿼리를 실행하는데 약 5초가 소요됨.
  • 1단계: 패키지 재구성

    • Launchpad에서 jq 소스 코드를 가져와 플래그 없이 재구성하면 Ubuntu 바이너리 패키지보다 2-4% 더 빠름.
    • hyperfine를 사용하여 반복 가능한 결과를 얻음.
  • 2단계: clang과 최적화 플래그 사용하여 재구성

    • 최적화 수준을 높이고, LTO 및 디버깅과 프로파일링을 위한 플래그를 추가하여 프로그램을 재구성함.
    • 성능 차이를 만드는 플래그: -O3, -flto, -DNDEBUG.
    • 결과적으로 20% 더 빠른 성능을 달성함.
  • 3단계: TCMalloc 추가

    • 메모리 할당 최적화를 위해 TCMalloc을 사용하여 성능을 향상시킴.
    • TCMalloc을 사용하여 40% 이상의 성능 향상을 이룸.
  • 4단계: TCMalloc 동적 프리로드

    • 동적 프리로드를 통해 libc 할당자를 숨기고 성능을 13% 향상시킴.
  • 5단계: 다른 할당자 동적 로딩

    • jemalloc과 mimalloc을 포함한 다른 할당자를 시도함.
    • mimalloc이 가장 뛰어난 성능을 보이며, 44%의 성능 향상을 달성함.
  • 6단계: mimalloc로 재구성

    • mimalloc을 사용하여 프로그램을 재구성하면 성능이 1.9배 향상됨.
    • 다른 응용 프로그램에서도 비슷한 성능 향상을 보임.

이러한 방법을 통해 Ubuntu 패키지를 재구성하여 성능을 크게 향상시킬 수 있음.

Read Entire Article