JRuby 및 JDK 25 시작 시간 개선: Project Leyden 후속 조치

JRuby and Leyden: Even Better Startup – Charles Oliver Nutter – Java, Ruby, and JVM guy trying to make sense of it all

작성자
Ruby Weekly
발행일
2025년 09월 26일

핵심 요약

  • 1 Project Leyden의 최신 개선 사항으로 JRuby 시작 시간이 353ms로 단축되어, 이전 최고 기록 대비 16% 이상 빠른 성능을 달성했습니다.
  • 2 AOTCache를 활용한 `gem list` 명령은 훈련 없이도 919ms를 기록했으며, 맞춤형 훈련 시 714ms로 단축되어 JRuby 명령 실행 효율이 크게 향상되었습니다.
  • 3 Project Leyden은 아직 개발 초기 단계이나, JRuby의 고질적인 시작 시간 문제를 해결하며 JVM 기반 Ruby 애플리케이션의 성능 향상에 긍정적인 미래를 제시하고 있습니다.

도입

JRuby 및 JDK 25 시작 시간 기능에 대한 이전 게시물의 후속 조치로, Project Leyden의 최신 개선 사항이 JRuby 시작 시간을 더욱 단축시킨다는 소식을 전합니다. OpenJDK 프로젝트 중 활발한 활동을 보이는 Leyden은 지난 한 달간 527건 이상의 커밋을 기록하며 지속적인 발전을 이루고 있습니다. 특히 Aleksey Shipilëv의 제안에 따라 'premain' Leyden JDK 빌드를 직접 구축하여 그 성능을 검증했습니다. 이 글은 Project Leyden의 최신 패치가 JRuby의 기준 시작 시간과 `gem list` 명령 실행에 어떤 놀라운 개선을 가져왔는지 자세히 다룹니다.

Project Leyden은 OpenJDK 프로젝트 중 가장 활발하게 진행되는 프로젝트 중 하나로, 지난 한 달간 527건 이상의 커밋이 이루어질 정도로 개발이 가속화되고 있습니다. 특히 Aleksey Shipilëv의 제안은 “premain” Leyden JDK 빌드를 직접 구축하여 성능을 테스트하는 계기가 되었습니다.

기준 시작 시간 개선

  • 이전 최고 기록: AOTCache와 JRuby의 “dev” 모드를 사용하여 423ms를 기록했습니다.

  • 최신 Leyden 패치 적용: --dev 플래그를 제외하고 JRuby와 JVM의 완전한 최적화를 허용하여 353ms의 시작 시간을 달성했습니다. 이는 이전 최고 기록보다 16% 이상 빠른 성능입니다.

  • AOTCache 크기: 이번에 생성된 AOTCache는 110MB로, 이전 60MB 대비 약 50MB 증가했으나, 이는 성능 향상에 기여하는 것으로 보입니다.

gem list 명령 성능 향상

gem list 명령의 성능은 JRuby의 실제 활용 시나리오에서 중요한 지표입니다.

  • 훈련 없는 gem list: 기본 JRuby 시작을 위해 훈련된 AOTCache만 사용했을 때, 88개의 젬 목록을 가져오는 데 919ms가 소요되었습니다. 이는 아무런 도움 없이 1546ms가 걸리던 것에 비해 40% 단축된 수치이며, 특정 훈련 없이도 서브-세컨드(sub-second) 실행 시간을 달성했습니다. 이는 일반적인 JRuby 개발 환경에서 광범위한 개선 효과를 기대할 수 있음을 의미합니다.

  • 맞춤형 훈련을 통한 gem list: gem list 명령을 위해 AOTCache를 특별히 훈련한 결과, 실행 시간이 714ms로 단축되었습니다. 이는 이전 최고 기록인 825ms보다 13% 빠른 성능이며, 어떠한 최적화도 비활성화하지 않은 결과입니다.

  • 맞춤형 AOTCache 크기: 이 경우 AOTCache 크기는 175MB에 달했습니다.

이러한 결과는 Project Leyden의 “premain” 패치가 JRuby의 시작 시간과 특정 명령 실행 시간을 획기적으로 개선하고 있음을 명확히 보여줍니다.

결론

Project Leyden은 초기 단계임에도 JRuby 시작 시간 개선에 놀라운 진전을 보이고 있습니다. '콜드' `gem list` 실행 시간이 인-프로세스 루프 실행 시간에 미치지 못하고 AOTCache 크기가 커질 수 있다는 과제는 여전히 존재합니다. 그러나 JRuby의 빠른 시작이라는 오랜 꿈이 현실화되고 있다는 점은 매우 고무적입니다. 향후 Project CRaC 및 IBM Semeru(OpenJ9)와 같은 다른 최적화 옵션도 탐색될 예정입니다. JRuby 개발은 Headius Enterprises의 지원과 GitHub 후원을 통해 지속되고 있으며, 이는 Ruby를 확장하고 JVM의 강력한 기능을 활용하고자 하는 이들에게 중요한 기회를 제공합니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!