주요 컨텐츠로 이동

텅스텐이란 무엇일까요?

Tungsten 프로젝트는 스마트한 메모리 사용, 캐시 인식 알고리즘 및 코드 생성을 통해 Spark의 실행 엔진을 최적화하여 성능을 하드웨어 수준에 가깝게 끌어올립니다.

작성자: Databricks 직원

Archived. This article has not been updated since the publish date above. The dynamic nature of information means that previously accurate content can become outdated or even obsolete over time. Readers are advised to exercise due diligence and cross-check any information found in this blog post before making decisions or adopting any practices based on said information.

  • Tungsten이 Spark 실행 엔진의 메모리 및 CPU 효율성을 개선하여 Spark 애플리케이션의 최신 하드웨어 성능 한계에 더욱 근접하도록 하는 데 어떻게 집중하는지 알아보세요.
  • 명시적 메모리 관리, 캐시 인식 연산, 코드 생성 및 가상 함수 디스패치 감소를 포함한 Tungsten의 주요 이니셔티브에 대해 자세히 알아보세요.
  • CPU 레지스터에 중간 데이터 유지, 루프 언롤링 및 SIMD 지원과 같은 기술이 Spark SQL 및 DataFrame 워크로드에서 어떻게 상당한 속도 향상을 가져오는지 이해해 보세요.

Tungsten Project란 무엇입니까?

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

보고서

기업을 위한 에이전틱 AI 플레이북

Tungsten Project의 이니셔티브:

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

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

추가 자료

최신 게시물을 이메일로 받아보세요

블로그를 구독하고 최신 게시물을 이메일로 받아보세요.