Компания Azul Systems давно известна своей платной JVM Zing, делающей упор на прирост производительности Java-приложений (в некоторых случаях в разы). А теперь при выходе версии Zing 17.03 компания заявила, что появившийся в этой версии just-in-time компилятор Falcon быстрее стандартного C2, используемого в HotSpot, и прирост производительности составляет «от 5 до 250 процентов, в зависимости от приложения».
Ещё четыре года назад в Azul начали размышлять, каким будет следующий шаг в производительности компилятора. В итоге пришли к выводу, что самой современной и поддерживаемой инфраструктурой является LLVM, и основали Zing на нём. По словам компании, это обеспечивает важное преимущество: LLVM активно развивается благодаря участию ведущих университетов и десятков корпоративных разработчиков (включая Adobe, Apple, Google, NVIDIA и Intel), постоянно получает новые оптимизации и поддержку новых наборов инструкций процессора и аппаратных платформ, а значит, и Falcon будет активно развиваться не только силами своей команды, но и силами всего LLVM-сообщества.
В то же время, как пишет CTO Azul Systems Гил Тене, в компании не просто удачно используют чужой труд, а сами проделали большую работу над LLVM и уже на протяжении трёх лет отдают в его апстрим много улучшений, способных помочь другим проектам (причем не только в Java-мире, но и в других рантаймах). Также Гил пишет, что теперь в Zing собралась взаимодополняющая «троица»:
- ReadyNow — технология Azul, уменьшающая время «прогрева» виртуальной машины
- C4 Garbage Collector — сборщик мусора, минимизирующий спады скорости, связанные со «Stop-The-World»-паузами
- Собственно Falcon
И доступной картинкой он показывает, как это всё повышает производительность: благодаря первому график быстрее идёт вверх, благодаря второму меньше проседает, а третье повышает «потолок». Закончил свой пост Гил язвительными словами, что можно уже сейчас использовать всю эту красоту, а можно страдать и слушать россказни о том, что кто-то когда-то найдёт Святой Грааль. В этих словах легко увидеть камень в огород проекта Graal, и в ответ глава этого проекта заявил о желании помериться бенчмарками:
@giltene Can you share an evaluation version of Zing for benchmarking purposes? We would like to compare Zing with the real "holy graal". #GraalVM
— Thomas Wuerthinger (@thomaswue) May 3, 2017
В итоге между сторонами возникло целых два треда о том, как надо бенчмаркать, надо ли вообще, и не прихорашивают ли в Azul искусственно свою разработку подбором выгодных для них ситуаций. Действительно, не стоит забывать, что тут коммерческая компания нахваливает свой платный продукт — насколько эффектные слова соответствуют улучшению производительности в реальных ситуациях, и стоит ли оно того? Azul предлагают желающим проверить это практикой: взять бесплатную 30-дневную пробную версию и посмотреть, какими окажутся реальные результаты. После бесплатного периода базовая цена Zing составляет $3500 за сервер, но со скидками как для крупных оптовых клиентов, так и для нищих стартапов. Нитсан Вакарт вот считает, что по факту всё может получаться «дешевле бесплатной альтернативы» (но оговаривается «конечно, это не для всех»):
Consider the time spent configuring GC(which needs revisiting as workload/code changes), this is cheaper than the free alternative! 3/n
— Nitsan Wakart (@nitsanw) May 3, 2017
Если хочется узнать больше технических деталей о том, как устроен Falcon — Гил сегодня в 21:00 по московскому времени проведёт вебинар на эту тему, ответив там на вопросы.
- Nitsan WakartA coder with a pedantic passion for performance. His work has spanned army intelligence systems, dot.com era startups, financial institutions and innovative product companies. Also a blogger and active Open Source developer (importantly JCTools but a modest contributor to RxJava/Netty/Akka and others as well). @nitsanw
- Gil Tene(Azul Systems, CTO, Сo-founder) has been involved with virtual machine technologies for the past 20 years and has been building Java technology-based products since 1995. He co-founded Azul Systems in 2002, where he pioneered Pauseless Garbage Collection, Java Virtualization, and various managed runtime and systems stack technologies that deliver the industry’s most scalable and robust Java platform. Gil is a frequent speaker at technology conferences worldwide, and an official JavaOne Rock Star. @giltene