Size: a a a

2020 November 09

TT

Taika Tytto in graalvm_ru
А почему нативное долгоиграющее будет работать медленнее?

Если сравнить GraalVM JVM, оно даёт преймущества для подобных приложений?
источник

AB

Andrey Belyaev in graalvm_ru
Taika Tytto
А почему нативное долгоиграющее будет работать медленнее?

Если сравнить GraalVM JVM, оно даёт преймущества для подобных приложений?
JIT компиляции и runtime оптимизаций для native приложений нет, поэтому, в теории, на длинном временном промежутке, native может проиграть по быстродействию.  Но, как всегда, надо замерять.
источник

TT

Taika Tytto in graalvm_ru
Andrey Belyaev
JIT компиляции и runtime оптимизаций для native приложений нет, поэтому, в теории, на длинном временном промежутке, native может проиграть по быстродействию.  Но, как всегда, надо замерять.
Может я неправильно выразился,

Сам GraalVM JVM если сравнить с запуском приложения в обычной JVM
источник

λ

λoλdog in graalvm_ru
Если не native то нужно смотреть)
источник

λ

λoλdog in graalvm_ru
В целом скала работает лучше
источник

A

Alex in graalvm_ru
jit позволяет более точный профиль собрать
у jvm версии получше gc (можно выбрать который в первую очередь на уменьшение пауз заточен)

у native image более быстрый стартап (нету этапа интерпретации и прогрева пока jit сработает)
меньше памяти ест (так как не нужно классфайлы загружать и много другой метаинфы)

лучше native image:
поэтому если у вас лямбда (максимально быстрый стартап и потребление памяти)
долгоиграющее приложение без нагрузки (чем меньше есть, тем меньше нужно ресурсов, можно на те же ресурсы что для jvm поднять 3 native image и получить ha)
вашему сервису нужно быстро скейлится (прилетело +100% нагрузки, подняли контейнеры, через пол часа их заглушили)

лучше jvm:
высоконагруженный долгоиграющий сервис (тут важна пиковая производительсность, а то что он разогревается пол часа то и фиг с ним, всё равно рестарты редки. это всякие сервера кафки и hbase и тд)
источник

A

Alex in graalvm_ru
@taikatutto поэтому что лучше никто не скажет
источник

AB

Andrey Belyaev in graalvm_ru
Taika Tytto
Может я неправильно выразился,

Сам GraalVM JVM если сравнить с запуском приложения в обычной JVM
А, GraalVM в режиме JVM - надо замерять. @shelajevoleg точно знает ссылки на бенчмарки.
источник

E

EgorBo in graalvm_ru
а нельзя native image код со временем перекомпилировать на более эффективный джитом? 😊
источник

TT

Taika Tytto in graalvm_ru
Alex
jit позволяет более точный профиль собрать
у jvm версии получше gc (можно выбрать который в первую очередь на уменьшение пауз заточен)

у native image более быстрый стартап (нету этапа интерпретации и прогрева пока jit сработает)
меньше памяти ест (так как не нужно классфайлы загружать и много другой метаинфы)

лучше native image:
поэтому если у вас лямбда (максимально быстрый стартап и потребление памяти)
долгоиграющее приложение без нагрузки (чем меньше есть, тем меньше нужно ресурсов, можно на те же ресурсы что для jvm поднять 3 native image и получить ha)
вашему сервису нужно быстро скейлится (прилетело +100% нагрузки, подняли контейнеры, через пол часа их заглушили)

лучше jvm:
высоконагруженный долгоиграющий сервис (тут важна пиковая производительсность, а то что он разогревается пол часа то и фиг с ним, всё равно рестарты редки. это всякие сервера кафки и hbase и тд)
Спасибо, так яснее.
источник

AB

Andrey Belyaev in graalvm_ru
EgorBo
а нельзя native image код со временем перекомпилировать на более эффективный джитом? 😊
Можно. Если собрать профиль. GraalVM EE умеет компилировать с профилем выполнения, если я не ошибаюсь.
источник

E

EgorBo in graalvm_ru
Andrey Belyaev
Можно. Если собрать профиль. GraalVM EE умеет компилировать с профилем выполнения, если я не ошибаюсь.
ну это не то
источник

A

Alex in graalvm_ru
Taika Tytto
Может я неправильно выразился,

Сам GraalVM JVM если сравнить с запуском приложения в обычной JVM
graal jvm это свежий грааль jit интегрированный и протестированный
в обычной jvm он почти всегда с задержкой идёт

а для 8ки не до конца ещё ci интерфейс ещё доработан
в 11+ большинство фиксов уже есть и можно как зависимость использовать или как jit

разница уже начинается что в graal jvm сразу идёт ещё и тулинг в виде нейтив имейджа и плагинов (js, python и тд)
источник

AB

Andrey Belyaev in graalvm_ru
EgorBo
ну это не то
В рантайме хочется, без перезапуска приложения? Это навряд ли 😊
источник

E

EgorBo in graalvm_ru
Andrey Belyaev
В рантайме хочется, без перезапуска приложения? Это навряд ли 😊
ну у нас в дотнете так :p
источник

A

Alex in graalvm_ru
EgorBo
а нельзя native image код со временем перекомпилировать на более эффективный джитом? 😊
сложно

чтобы перекомпилировать нужно собрать профиль выполнения
чтобы собрать этот профиль нужно расставить метки и счётчики которые не бесплатны
плюс нужно иметь оригинал классфайла (а это значит верификатор байтинструкций и jit)
источник

TT

Taika Tytto in graalvm_ru
Alex
graal jvm это свежий грааль jit интегрированный и протестированный
в обычной jvm он почти всегда с задержкой идёт

а для 8ки не до конца ещё ci интерфейс ещё доработан
в 11+ большинство фиксов уже есть и можно как зависимость использовать или как jit

разница уже начинается что в graal jvm сразу идёт ещё и тулинг в виде нейтив имейджа и плагинов (js, python и тд)
Просто я слегка путаюсь в продукте.

Native image это плагин, для компиляции в нативное приложение.

GraalVM это JVM с jit, так? Ну и плагинами для общения между языками.
источник

E

EgorBo in graalvm_ru
Alex
сложно

чтобы перекомпилировать нужно собрать профиль выполнения
чтобы собрать этот профиль нужно расставить метки и счётчики которые не бесплатны
плюс нужно иметь оригинал классфайла (а это значит верификатор байтинструкций и jit)
да, но нативный код с счетчиками все равно во много раз быстрее чем интерп
источник

AB

Andrey Belyaev in graalvm_ru
EgorBo
ну у нас в дотнете так :p
У вас в дотнете CLR, не?
источник

E

EgorBo in graalvm_ru
Andrey Belyaev
У вас в дотнете CLR, не?
да
источник