Skip to content

GraalVM

GraalVM is a universal virtual machine for running applications written in JavaScript, Python, Ruby, R, JVM-based languages like Java, Scala, Groovy, Kotlin, Clojure, and LLVM-based languages such as C and C++.

See also

GraalVM이 Spark 워크로드를 가속화하는 방법

Spark 성능 향상에 가장 크게 기여한 몇 가지 최적화는 다음과 같습니다.

다형성 인라인
전통적인 인라인은 컴파일러가 메서드 호출이 대상으로 하는 정확한 메서드를 결정할 수 있는 경우에만 작동합니다.
GraalVM은 추상 메서드도 인라인 될 수 있는 추가 프로파일 링 정보를 수집하여 이 지점을 넘어 인라인을 가능하게 합니다.
부분 탈출 분석
부분 이스케이프 분석의 개념은 개체가 탈출하지 않는 분기에서 스칼라 교체를 수행하여 불필요한 개체 할당을 제거하고 개체가 탈출해야 하는 분기의 힙에 존재하는지 확인하는 것입니다.
이렇게 하면 애플리케이션의 메모리 공간과 GC에서 발생하는 CPU 로드가 모두 줄어듭니다.
이러한 최적화는 Spark와 같이 데이터가 많은 애플리케이션에서 훨씬 더 중요합니다.
특히 Facebook에서 관찰한 바와 같이 GraalVM 은 java/lang/Double.valueOf 와 같은 메서드들에서 CPU 소비를 5 배까지 줄였습니다.
GraalVM의 고급 추측 최적화
동적 런타임 피드백을 활용하여 더 빠른 기계 코드를 생성합니다.
프로그램의 특정 부분이 프로그램 실행 중에 실행되지 않을 것이라고 추측함으로써 GraalVM 컴파일러는 코드를 전문화하고 더 효율적으로 만들 수 있습니다.
Spark의 경우 이 최적화는 분기(예: 긴 if-then-else체인)를 제거하고, 제어 흐름을 단순화하고, 루프 본문에서 동적 검사의 양을 줄이고, 추가 최적화를 가능하게 하는 앨리어싱 제약 조건을 설정함으로써 특히 잘 작동 합니다.

Favorite site