JVM internals - what does the JVM do? — Ian Rogers

Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: JVM internals - what does the JVM do? — Ian Rogers

Post by Сабина »

Хорошая презентация, я его слушала вживую, понравилось - http://mrkn.co/s/video_learn_about_jvm_ ... index.html.
Еще если кому интересно:
http://marakana.com/s/tuning_jvm_for_a_ ... index.html
https://www.youtube.com/watch?v=wOwblaKmyVw
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: JVM internals - what does the JVM do? — Ian Rogers

Post by Сабина »

dotcom wrote:Мне всегда интересовало, что Azul при всех великих обещаниях, всех этих умных людях, оставшись практически в одиночку на рынке java процессоров и ускорителей, никак не может ни родить ни продать за столько лет.
Тот же Ян Роджерс так говорил об Азуле перед своей презентацией, что это чуть ли не официальная должность на кoторой ему надо отсиживать, но для фана он делает кучи других интересных и прибыльных вешей. Может это CIA sponsored or something :mrgreen: ?
https://www.youtube.com/watch?v=wOwblaKmyVw
User avatar
rzen
Уже с Приветом
Posts: 24375
Joined: 18 Nov 2003 16:42

Re: JVM internals - what does the JVM do? — Ian Rogers

Post by rzen »

Сабина wrote:
dotcom wrote:Мне всегда интересовало, что Azul при всех великих обещаниях, всех этих умных людях, оставшись практически в одиночку на рынке java процессоров и ускорителей, никак не может ни родить ни продать за столько лет.
Тот же Ян Роджерс так говорил об Азуле перед своей презентацией, что это чуть ли не официальная должность на кoторой ему надо отсиживать, но для фана он делает кучи других интересных и прибыльных вешей. Может это CIA sponsored or something :mrgreen: ?
он уже оттуда ушёл в андроид
Don't code today what you can't debug tomorrow.
Сабина
Уже с Приветом
Posts: 19041
Joined: 11 Jan 2012 09:25
Location: CA

Re: JVM internals - what does the JVM do? — Ian Rogers

Post by Сабина »

rzen wrote:
Сабина wrote:
dotcom wrote:Мне всегда интересовало, что Azul при всех великих обещаниях, всех этих умных людях, оставшись практически в одиночку на рынке java процессоров и ускорителей, никак не может ни родить ни продать за столько лет.
Тот же Ян Роджерс так говорил об Азуле перед своей презентацией, что это чуть ли не официальная должность на кoторой ему надо отсиживать, но для фана он делает кучи других интересных и прибыльных вешей. Может это CIA sponsored or something :mrgreen: ?
он уже оттуда ушёл в андроид
Вам виднее - я за ним не следила после той презентации, просто запало что он как-то отмежевался от Азула еше тогда
https://www.youtube.com/watch?v=wOwblaKmyVw
User avatar
rzen
Уже с Приветом
Posts: 24375
Joined: 18 Nov 2003 16:42

Re: JVM internals - what does the JVM do? — Ian Rogers

Post by rzen »

дык от интернета не скроешься :)

I was a researcher working on the Jamaica project, designing future computer architectures, compilers, binary translators and operating systems. I have had research interests in network security, real-time network protocols and e-learning. I had a senior position working for Azul Systems, solving the design of virtual machines for server environments (you can get involved too!). I have recently joined the Android mobile group at Google.

http://www.cs.man.ac.uk/~irogers/
Don't code today what you can't debug tomorrow.
User avatar
Albert_al
Уже с Приветом
Posts: 2305
Joined: 14 Apr 1999 09:01
Location: Ural->CA

Re: JVM internals - what does the JVM do? — Ian Rogers

Post by Albert_al »

Alcohol, Tobacco, Firearms, and Explosives. The makings of a great weekend in West Virginia!
User avatar
dotcom
Уже с Приветом
Posts: 9035
Joined: 25 Oct 2011 19:02
Location: SVO->ORD->SFO

Re: JVM internals - what does the JVM do? — Ian Rogers

Post by dotcom »

crypto5 wrote: Жабисты на этой почве сильно больше страдают. :D
Та нет.[/quote]
Да да. Сколько с Жабистами общаюсь, разговор об одном. ;)
User avatar
rzen
Уже с Приветом
Posts: 24375
Joined: 18 Nov 2003 16:42

JVM internals - what does the JVM do? — Ian Rogers

Post by rzen »

dotcom wrote:
crypto5 wrote:
dotcom wrote: Жабисты на этой почве сильно больше страдают. :D
Та нет.
Да да. Сколько с Жабистами общаюсь, разговор об одном. ;)
а больше пижониться не о чем. Бьюсь на спор что 99% обсуждающих ни разу не пострадали фатально от этих "провалов". Одиночный OOM и настройка GC не в счёт.
Don't code today what you can't debug tomorrow.
Zorkus
Уже с Приветом
Posts: 6969
Joined: 26 Feb 2011 17:40

Re: JVM internals - what does the JVM do? — Ian Rogers

Post by Zorkus »

Ну можно пойти дальше в пижонстве, и начатьт рассуждать о производительности JIT, и как его оптимизировать ;)
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: JVM internals - what does the JVM do? — Ian Rogers

Post by crypto5 »

dotcom wrote:
crypto5 wrote:
dotcom wrote: Жабисты на этой почве сильно больше страдают. :D
Та нет.
Да да. Сколько с Жабистами общаюсь, разговор об одном. ;)
У джавистов с которыми вы общаетесь возможно и много проблем с выделением памяти.
In vino Veritas!
Palych
Уже с Приветом
Posts: 13684
Joined: 16 Jan 2001 10:01

Re: JVM internals - what does the JVM do? — Ian Rogers

Post by Palych »

rzen wrote: а больше пижониться не о чем. Бьюсь на спор что 99% обсуждающих ни разу не пострадали фатально от этих "провалов". Одиночный OOM и настройка GC не в счёт.
Главный источник мучений - memory leaks проявляющиеся неожиданным образом. Особенно когда они загоняют GC в vicious cycle и он продолжает молотить даже когда нагрузка спала.
Но с другой стороны - приложение работает, просто ест CPU больше чем надо...
Как говорил Иван Васильевич - "Чего же тебе ещё надо, собака?!"
Zorkus
Уже с Приветом
Posts: 6969
Joined: 26 Feb 2011 17:40

Re: JVM internals - what does the JVM do? — Ian Rogers

Post by Zorkus »

Ну если приложение (CPU) проводит в GC больше чем какой то процент времени (скажем 95), то JVM выкинет OOM, даже если память на самом деле под запрашиваемые аллокации есть.
User avatar
dotcom
Уже с Приветом
Posts: 9035
Joined: 25 Oct 2011 19:02
Location: SVO->ORD->SFO

Re: JVM internals - what does the JVM do? — Ian Rogers

Post by dotcom »

crypto5 wrote: У джавистов с которыми вы общаетесь возможно и много проблем с выделением памяти.
Я не виноват, они сами жалуются. :D Помню в 95-96-м годах я очень сильно удивился, когда тестовые аппы с UI'ем повисали неожиданно после нажатия кнопочки. Оказалось, что GC работает в этот момент. UI Thread типа засыпал и тут включался GC... А выключаться быстро он не умел. :D
Как оно началось через пень в первой версии, так и до сих пор несмотря на все извращения и оптимизации все также неэффективна из коробки. Что ни программа, то первым делом она выделяет большой массив при запуске, чтобы не жрать лишней памяти и избавиться от GC overhead'а. Ну и кастомных менджеров для Жабы по-моему уже на порядок больше, чем для C/C++. ;)
Прикол то в том, что Гослинг хотел освободить разработчиков от манипуляций с памятью, а получилось то все задом наперед. Хорошему разработчику приходится знать кучу всякого ненуженого хлама типа этого:
http://www.ibm.com/developerworks/java/ ... index.html

За 17 лет активного C/C++ с кастомным менджментом памяти я сталкивался серьезно только раз. Остальные случаи относились к рабочим моментам, когда надо было выравнивать байтики для железа или подгонять совместимость библиотек.
User avatar
dotcom
Уже с Приветом
Posts: 9035
Joined: 25 Oct 2011 19:02
Location: SVO->ORD->SFO

Re: JVM internals - what does the JVM do? — Ian Rogers

Post by dotcom »

rzen wrote: а больше пижониться не о чем. Бьюсь на спор что 99% обсуждающих ни разу не пострадали фатально от этих "провалов". Одиночный OOM и настройка GC не в счёт.
Да нет, не только пижонство. Когда люди строят большие сервисы и становится дорого добавлять железо, начинают подумывать, а почему оно так дорого получается.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: JVM internals - what does the JVM do? — Ian Rogers

Post by crypto5 »

dotcom wrote:
crypto5 wrote: У джавистов с которыми вы общаетесь возможно и много проблем с выделением памяти.
Я не виноват, они сами жалуются. :D Помню в 95-96-м годах
Ну за 17 лет кое что таки изменилось
Что ни программа, то первым делом она выделяет большой массив при запуске, чтобы не жрать лишней памяти и избавиться от GC overhead'а. [/quote]
А я вот ни одной такой программы не знаю, более того, совсем не представляю как выделение памяти upfront может помочь с "не жрать лишней памяти и избавиться от GC overhead'а"
In vino Veritas!
User avatar
dotcom
Уже с Приветом
Posts: 9035
Joined: 25 Oct 2011 19:02
Location: SVO->ORD->SFO

Re: JVM internals - what does the JVM do? — Ian Rogers

Post by dotcom »

rzen wrote:Azul Systems, solving the design of virtual machines for server environments (you can get involved too!). I have recently joined the Android mobile group at Google.
Пропадет хороший человек в этом бардаке. :D
User avatar
dotcom
Уже с Приветом
Posts: 9035
Joined: 25 Oct 2011 19:02
Location: SVO->ORD->SFO

Re: JVM internals - what does the JVM do? — Ian Rogers

Post by dotcom »

crypto5 wrote: А я вот ни одной такой программы не знаю, более того, совсем не представляю как выделение памяти upfront может помочь с "не жрать лишней памяти и избавиться от GC overhead'а"
Что за 17 лет изменилось - я неплохо знаю. Не отлично, но как-то отслеживаю. Но у вас опыт сильно поменьше, на сколько я понял, поэтому историю этого грустного вопроса и метаний архитектуры JVM от встроенных приложений до Java процессоров, а потом прямиком в JEE вы видимо не знаете. История дает ответы на многие вопросы, в том числе и почему memory manager не экономит на metadata, почему GC так intrusive и.т.п. Что касательно выделения большого куска память про запас, то я удивлен. Memory fragmentation - одна из главных проблем менджера.
User avatar
rzen
Уже с Приветом
Posts: 24375
Joined: 18 Nov 2003 16:42

JVM internals - what does the JVM do? — Ian Rogers

Post by rzen »

dotcom wrote:
rzen wrote: а больше пижониться не о чем. Бьюсь на спор что 99% обсуждающих ни разу не пострадали фатально от этих "провалов". Одиночный OOM и настройка GC не в счёт.
Да нет, не только пижонство. Когда люди строят большие сервисы и становится дорого добавлять железо, начинают подумывать, а почему оно так дорого получается.
имелись ввиду страдания по GC здесь в этом топике. И я тут первый страдал, но _реально_ в жизни неудобств на самом деле не встречаю. Старые версии джавы не в счет.

У компилятора джавы изрядное преимущество перед тем же C++. например он может _динамически_ собирать статистику по переходом с тем чтобы пере компилировать код налету с более удачным с точки зрения предсказателя переходов кодом. В итоге ваш код через сутки использования может ускориться в разы, а у C++ такой возможности нет, компиляция статическая.
Don't code today what you can't debug tomorrow.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: JVM internals - what does the JVM do? — Ian Rogers

Post by crypto5 »

dotcom wrote:
crypto5 wrote: А я вот ни одной такой программы не знаю, более того, совсем не представляю как выделение памяти upfront может помочь с "не жрать лишней памяти и избавиться от GC overhead'а"
Что за 17 лет изменилось - я неплохо знаю. Не отлично, но как-то отслеживаю. Но у вас опыт сильно поменьше, на сколько я понял, поэтому историю этого грустного вопроса и метаний архитектуры JVM от встроенных приложений до Java процессоров, а потом прямиком в JEE вы видимо не знаете. История дает ответы на многие вопросы, в том числе и почему memory manager не экономит на metadata, почему GC так intrusive и.т.п.
Все может быть, но я все равно придерживаюсь мнения что ситуация с GC сейчас и 17 лет назад - это две большие разницы, и некоректно приводить столь давний опыт в качестве какого либо аргумента.
Что касательно выделения большого куска память про запас, то я удивлен. Memory fragmentation - одна из главных проблем менджера.
Ок, предположим, хотя пока что не встречал что бы кто-то таким заморачивался, а в ц++ с этим как то по другому дела обстоят?
In vino Veritas!
User avatar
dotcom
Уже с Приветом
Posts: 9035
Joined: 25 Oct 2011 19:02
Location: SVO->ORD->SFO

Re: JVM internals - what does the JVM do? — Ian Rogers

Post by dotcom »

Уважаемые, я разве я пытался поднять флейм C++ vs Java? Memory management как его не реализовывай, всегда будет иметь overhead. В Java много мета-данных засовывается рядом с самими данными, GC intrusive, к нему нет нормального API'я, чтобы давать подсказки. Нет стандартаного API и к самому JVM. Hotspot, а потом и оптимизатор для него, который вы упомянули выше, появился еще во второй Жабе. Я помню hype вокруг него оч-чень хорошо. После его появления я забросил свои доморощенные попытки написать что-то на Жабе окончательно. Кто-нибудь еще помнит IDE конца 90-х? JBuilder? У-у-ух! Скоростная штука была!
Во-первых, статистику как бы он не собирал, прирост производительности происходит по сравнению с аналогичной статитческой оптимизацией только в частных случаях. Я, к сожалению, не могу выложить публично реферат, который у нас делал человек, савнивая алгоритмы обработки изображений на Java vs Intel IPP, но разница в производительности была не на порядок лучше у последнего, а на два порядка! Кстати, профайлер показал, что чуть больше половины производительности на x86 терялось в JVM, а остальное - это memory management. Надеюсь, что результаты все-таки опубликуют, чтобы больше на конкретики разговаривать.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: JVM internals - what does the JVM do? — Ian Rogers

Post by crypto5 »

dotcom wrote:Уважаемые, я разве я пытался поднять флейм C++ vs Java?
Ну вы сами написали что у ц++ програм/программистов проблем с памятью меньше, вот и интересно узнать почему.
Во-первых, статистику как бы он не собирал, прирост производительности происходит по сравнению с аналогичной статитческой оптимизацией только в частных случаях.
Если речь о хотспот, то его основная заслуга вроде как что он может на основе статистики о вызове методов инлайнить виртуальные вызовы, чего ц++ теоретически не может сделать, и выигрышь вполне очевиден
Я, к сожалению, не могу выложить публично реферат, который у нас делал человек, савнивая алгоритмы обработки изображений на Java vs Intel IPP, но разница в производительности была не на порядок лучше у последнего, а на два порядка!
Это все возможно не из-за памяти или хотспот, а из за того что в джаве медленные операции над матрицами и масивами, почему точно не знаю, может компилер плохо векторизирует операции, а может джава все время границы масива проверяет
In vino Veritas!
User avatar
M. Ridcully
Уже с Приветом
Posts: 12017
Joined: 08 Sep 2006 20:07
Location: Силиконка

Re: JVM internals - what does the JVM do? — Ian Rogers

Post by M. Ridcully »

dotcom wrote:алгоритмы обработки изображений на Java vs Intel IPP
Я что, кто-то это на Java пишет?

А вообще, я не Жабе не писал, но выскажусь :mrgreen:

ИМХО - кесарю-кесарево, нефиг сравнивать Java c С++, вообще. Если Java хоть немного похожа на .NET, то она интересна именно как инфраструктура - я имею в виду JVM, самодостаточные файлы классов (с метаданными), и т.д. Это всю делает её подходящей для всякого enterprisey программирования и т.д.

А вот как язык она полностью убога. Т.е. проблема не в GC overhead (если ваше приложение так критично к этому, то нефиг вообще managed code писать), а в том, что язык слишком низкого уровня, слишком многословен. Way to go - более высокоуровневые языки для JVM.
Мир Украине. Свободу России.
Zorkus
Уже с Приветом
Posts: 6969
Joined: 26 Feb 2011 17:40

Re: JVM internals - what does the JVM do? — Ian Rogers

Post by Zorkus »

M. Ridcully wrote:
dotcom wrote:алгоритмы обработки изображений на Java vs Intel IPP
Я что, кто-то это на Java пишет?

А вообще, я не Жабе не писал, но выскажусь :mrgreen:

ИМХО - кесарю-кесарево, нефиг сравнивать Java c С++, вообще. Если Java хоть немного похожа на .NET, то она интересна именно как инфраструктура - я имею в виду JVM, самодостаточные файлы классов (с метаданными), и т.д. Это всю делает её подходящей для всякого enterprisey программирования и т.д.

А вот как язык она полностью убога. Т.е. проблема не в GC overhead (если ваше приложение так критично к этому, то нефиг вообще managed code писать), а в том, что язык слишком низкого уровня, слишком многословен. Way to go - более высокоуровневые языки для JVM.
Ох, чую, понесется сейчас.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: JVM internals - what does the JVM do? — Ian Rogers

Post by crypto5 »

Zorkus wrote:
M. Ridcully wrote:
dotcom wrote:алгоритмы обработки изображений на Java vs Intel IPP
Я что, кто-то это на Java пишет?

А вообще, я не Жабе не писал, но выскажусь :mrgreen:

ИМХО - кесарю-кесарево, нефиг сравнивать Java c С++, вообще. Если Java хоть немного похожа на .NET, то она интересна именно как инфраструктура - я имею в виду JVM, самодостаточные файлы классов (с метаданными), и т.д. Это всю делает её подходящей для всякого enterprisey программирования и т.д.

А вот как язык она полностью убога. Т.е. проблема не в GC overhead (если ваше приложение так критично к этому, то нефиг вообще managed code писать), а в том, что язык слишком низкого уровня, слишком многословен. Way to go - более высокоуровневые языки для JVM.
Ох, чую, понесется сейчас.
Мысля правильная, только более прогресивных языков более менее поддерживаемых индустрией и средствами разработки пока что не видно.
In vino Veritas!
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: JVM internals - what does the JVM do? — Ian Rogers

Post by Интеррапт »

Zorkus wrote: Ох, чую, понесется сейчас.
Доля правды в этом есть. Например, по сравнению с тем же C# (если как язык сравнивать) или cо Scala (который JVM). Оба конкретно опережают Java по выразительности. К сожалению приходится признать, что Java довольно медленно эволюционирует. Не зря приходится пользоваться костылями вроде http://projectlombok.org/ (даже на коммерческих проектах).

Return to “Вопросы и новости IT”