주요 컨텐츠로 이동

Tungsten

Databricks 무료로 시작하기

Tungsten Project란 무엇입니까?

Tungsten은 Apache Spark의 실행 엔진에 변경 사항을 적용하여 메모리 및 CPU를 Spark 애플리케이션에 적합하게 효율성을 개선하는 데 중점을 두어 성능을 최신 하드웨어 한도에 더 가깝게 밀어붙이고자 추진한 엄브렐라 프로젝트의 코드명입니다.

Tungsten Project의 이니셔티브:

  • 메모리 관리와 이진수 처리: 애플리케이션 의미 체계를 활용하여 메모리를 명시적으로 관리하며 JVM 개체 모델과 가비지 수집의 오버헤드 제거
  • 캐시 인식형 연산: 메모리 계층 구조를 활용하는 알고리즘과 데이터 구조
  • 코드 생성: 코드 생성을 사용해 최신 컴파일러와 CPU 활용
  • 가상 함수 발송 안 함: 이렇게 하면 CPU 호출을 여럿 줄일 수 있어 발송 횟수가 수십억 번에 달하는 경우 성능에 현저한 영향을 미치게 됩니다.
  • 메모리 대 CPU 레지스터 내 중간 데이터: Tungsten Phase 2에서는 중간 데이터를 CPU 레지스터에 배치합니다. 이렇게 하면 메모리에서가 아니라 CPU 레지스터에서 데이터를 가져와 주기 수가 엄청나게 줄어듭니다.
  • 루프 언롤링과 SIMD: Apache Spark의 실행 엔진을 최적화하여 최신 컴파일러와 CPU 기능을 활용해 효율적으로 컴파일링하고 루프에 맞춰 단순하게 실행합니다(복잡한 함수 호출 그래프에 비해).

CPU 효율성에 중점을 둔 것은 Spark 워크로드가 IO와 네트워크 통신보다 CPU와 메모리 사용 때문에 병목 현상을 일으키는 경우가 많아졌다는 사실에 기인합니다. 이 추세는 빅데이터 워크로드 성능을 주제로 최근 실시한 리서치를 통해 확인되었습니다.

추가 자료

용어집으로 돌아가기