|
|
|
Java JIT - всё? Берёмся за ум
|
|||
|---|---|---|---|
|
#18+
makhaonBasil A. Sidorov, Удивительно что вот всё так хорошо, и при этом почти всё более-менее распространенное написано на нативных языках. Фотошоп, Офисы (и MS и бесплатные), Skype, Telegram, Viber (кроме Андроида, то есть - под Андроид написали, но это не привело к мульти-платформенности, пришлось писать на разных языках), все распространенные браузеры. Серверные Nginx, Апач сервер, Mongo DB, Ms Sql, MySQL. native на мобильной платформе я могу объяснить. Очень сильно экономили энергию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2017, 14:42 |
|
||
|
Java JIT - всё? Берёмся за ум
|
|||
|---|---|---|---|
|
#18+
makhaonBasil A. Sidorov, Удивительно что вот всё так хорошо, и при этом почти всё более-менее распространенное написано на нативных языках... Far только под винду. Miranda тоже. Там где деньги - перепишут под что угодно, если на этом еще денег можно заработать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2017, 19:16 |
|
||
|
Java JIT - всё? Берёмся за ум
|
|||
|---|---|---|---|
|
#18+
makhaonBasil A. Sidorov, Удивительно что вот всё так хорошо, и при этом почти всё более-менее распространенное написано на нативных языках. Фотошоп, Офисы (и MS и бесплатные), Skype, Telegram, Viber (кроме Андроида, то есть - под Андроид написали, но это не привело к мульти-платформенности, пришлось писать на разных языках), все распространенные браузеры. Серверные Nginx, Апач сервер, Mongo DB, Ms Sql, MySQL. А все более-менее приносящее деньги, совершенно на других языках ))) Oracle E-Business Suite, SAP R3, etc... etc... Я так понимаю, по сравнению с баблом который течет с enterprise консалтингового рынка, даже MS Windows - детский лепет ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2017, 19:35 |
|
||
|
Java JIT - всё? Берёмся за ум
|
|||
|---|---|---|---|
|
#18+
SiemarglТ.е 180Мб этого мало?Вы правда считаете, что Seamonkey на скриншоте в двух местах - просто так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2017, 21:14 |
|
||
|
Java JIT - всё? Берёмся за ум
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovSiemarglТ.е 180Мб этого мало?Вы правда считаете, что Seamonkey на скриншоте в двух местах - просто так?Я думаю что надо пояснять свою мысль. У меня она была проста - компилятор в памяти => несколько сотен Мб. А в чем суть сравнения с Сеаманки я не понимаю - современный браузер гораздо сложнее текстового редактора jEdit и содержит внутри себя кучу интерпретаторов CSS/HTMLK/JS и мало ли что еще. Тогда уж с Netsurf сравнивать. Но повторяю, я идею из слинкованного скриншота не оценил - ну запросили зарезервировать память Яве - она и система сделали, но память виртуальная и пока что ни на что не влияет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2017, 21:24 |
|
||
|
Java JIT - всё? Берёмся за ум
|
|||
|---|---|---|---|
|
#18+
Siemarglчто надо пояснять свою мысль. У меня она была проста - компилятор в памяти => несколько сотен Мб. Хотелось бы видеть откуда взялась цифра "несколько сотен" По ощущениям, там даже несколько десятками не пахнет. Накладные расходы по памяти для Java 1.6 были порядка 32 Mb под скомпилированный код (можно уменьшить или увеличить). Сколько занимает собственно код самого компилятора, не знаю. Но сомневаюсь, что это больше десятка - двух десятков мегабайт. Т.е. на мой взгляд, накладные расходы и до 100 Mb не дотягивают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2017, 02:09 |
|
||
|
Java JIT - всё? Берёмся за ум
|
|||
|---|---|---|---|
|
#18+
By the way, Там очень большие накладные расходы совершенно в другом. В потоках. Если на компьютере 256 процессоров, Java по умолчанию под 200+ потоков компилятора и garbage collector'а запускает... занафига?... никому не известно.... ответ из Oracle на одном из форумов "у нас enterprise решение, нужно использовать все ресурсы компьютера" ))) Т.ч. даже примитивная программа Hello World начинает создавать под 400-500 потоков и больше... в ряде случаев, это приводит к пушному зверьку, который феерический отсвечивает всеми цветами радуги на системном мониторинге и грузит процессор под 100%. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2017, 12:26 |
|
||
|
Java JIT - всё? Берёмся за ум
|
|||
|---|---|---|---|
|
#18+
На одном из буржуйских форумов, читал негодование человека, у него какая-то примитивная программа на Java для мониторинга, которая на "обычном" компе потребляла десяток мегабайт, на сервере хотела > 2 Gb оперативки ))) просто на сервере 256 процессоров ))) Весь прикол заключался в том, что программа встроена была в ядро Солярки и доступа к ключам JVM не было. И, вроде, писец доходил до того, что она на сервере вообще запустится не могла.... в результате сервер "не все функции выполнял". В общем, дефолтные значения в Java Oracle менять отказался, сказав "что Java создана для серверов и должна использовать все возможные ресурсы " ))) пообещали наехать на коллег которые пишут Солярку и сделать патч для Солярки ))) чем дело кончилось, на форуме не сообщалось ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2017, 12:34 |
|
||
|
Java JIT - всё? Берёмся за ум
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevТ.ч. даже примитивная программа Hello World начинает создавать под 400-500 потоков и больше... в ряде случаев, это приводит к пушному зверьку, который феерический отсвечивает всеми цветами радуги на системном мониторинге и грузит процессор под 100%. Описано красочно. И... очень эмоционально. Я охотно верю в то что рантайм оставляет за собой право запускать нужное количество потоков под нужный getAvailableProcessors() но в то что это приводит к пушному зверьку для HelloWorld я не верю. Или надо детально разбираться уже имея доступ к консоли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2017, 13:01 |
|
||
|
Java JIT - всё? Берёмся за ум
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevВесь прикол заключался в том, что программа встроена была в ядро Солярки и доступа к ключам JVM не было. И, вроде, писец доходил до того, что она на сервере вообще запустится не могла.... в результате сервер "не все функции выполнял". В общем, дефолтные значения в Java Oracle менять отказался, сказав "что Java создана для серверов и должна использовать все возможные ресурсы " ))) пообещали наехать на коллег которые пишут Солярку и сделать патч для Солярки ))) чем дело кончилось, на форуме не сообщалось ))) Насколько я понимаю "хозяин" приложения встроил запуск приложения на java ... в т.н. ядро солярки и не дал возможности управлять ключами и опциями. Что-ж. Он - сам себе злобный Буратино. Но если в этой формулировке убрать "java" и заменить это на что-то другое, то становиться очевидным что это configuration bug и его надо фиксить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2017, 13:04 |
|
||
|
Java JIT - всё? Берёмся за ум
|
|||
|---|---|---|---|
|
#18+
mayton....но в то что это приводит к пушному зверьку для HelloWorld я не верю. Или надо детально разбираться уже имея доступ к консоли. Приводит. Когда на сервере крутится много приложений HelloWorld и каждое пытается дофига потоков создать. Накладные расходы представить можно. В реальности на 40-ка ядерном сервере, на реальной системе, было примерно 5-6 пользовательских потоков (потоков мало, т.к. NIO) и >60 системных. Пушной зверек по показателям системного мониторинга был во всей красе. Судя по всему, overhead на переключения потоков при __таком__ паттерне нагрузки был ужасающий. Что именно не нравилось шедулеру и что безумно нагружало систему, не знаю. Но ситуация была совершенно ненормальная. CPU просто непонятно куда девалось, в между-thread пространство. Когда в приложении было 200 пользовательских потоков (обычный IO) и те же 60 системных - эффект не проявлялся. Загрузка CPU была нормальной. Как только пользовательских потоков стало мало - потребление CPU выросло в разы (по всей системе) и возможно даже на порядки (по выполняемому коду). Сократили системные потоки (до 4 потоков на GC и 2 потока на JIT) - все нормализовалось, потребление CPU упало в 3-4 раза. Статистика в gc.log осталась примерно той же. Ну и у человека тоже ситуация была красивая. Сервер с 256-процессорами и какой-то банальный агент не может запуститься... не хватает памяти ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2017, 13:49 |
|
||
|
Java JIT - всё? Берёмся за ум
|
|||
|---|---|---|---|
|
#18+
mayton....Но если в этой формулировке убрать "java" и заменить это на что-то другое, то становиться очевидным что это configuration bug и его надо фиксить. Да это понятно. Дело в другом. Что фиг кто о таком __документированном__ поведении Java знает и задумывается. А когда видишь такое в живую.... месяц уходит, что бы понять, в чем же тут дело и кто виноват. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2017, 13:51 |
|
||
|
Java JIT - всё? Берёмся за ум
|
|||
|---|---|---|---|
|
#18+
Вы замечательно описали последствия от применения "безискусьвенного интеллекта" (имею ввиду т.н. "умное" перераспределение ресурсов в динамике). Вопрос из сабжа только остаётся открытым, кто виноват должен браться за ум? и что делать возьмётся ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2017, 11:22 |
|
||
|
Java JIT - всё? Берёмся за ум
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevSiemarglчто надо пояснять свою мысль. У меня она была проста - компилятор в памяти => несколько сотен Мб. Хотелось бы видеть откуда взялась цифра "несколько сотен" По ощущениям, там даже несколько десятками не пахнет. Накладные расходы по памяти для Java 1.6 были порядка 32 Mb под скомпилированный код (можно уменьшить или увеличить). Сколько занимает собственно код самого компилятора, не знаю. Но сомневаюсь, что это больше десятка - двух десятков мегабайт. Т.е. на мой взгляд, накладные расходы и до 100 Mb не дотягивают. Несколько сотен - до 400Мб можно наблюдать при компиляции чего то большого С++ что gcc, что clang. Поскольку уровень оптимизации в Яве сравним - то можно предположить, что и затраты на компиляцию будут сравнимыми - язык конечно проще, но не сильно. "По ощущениям" - метрика конечно еще та, но: - поковыряв доступными системными инструментами Rammap/vmmap, я конкретики тоже не увидел. - Helloword должен загрузить как минимум интерпретатор - но он потребляет 12Мб С этой стороны непонятно, куда используется память. Еще погуглил на тему Java Mission Control - нашел кое что интересное - ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2017, 11:45 |
|
||
|
Java JIT - всё? Берёмся за ум
|
|||
|---|---|---|---|
|
#18+
По поводу GC. Мы как-то делали скрипты (Power Shell), занимающиеся многопоточным копированием файлов. Они забивали абсолютно всю память, 99.99% процессорного времени и вывешивали намертво сервера. Довольно нетривиальным способами + постоянным ручным вызовом сборщика удалось довести до более-менее работоспособного состояния. Рядом тихи-мирно трудился нативный сервер (Delphi) с раз в 5 большим числом потоков, поставляя эти файлы скрипту и разруливая кучу запросов. Занимая мизер ресурсов. Вот такой опыт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2017, 12:26 |
|
||
|
Java JIT - всё? Берёмся за ум
|
|||
|---|---|---|---|
|
#18+
Еще добавлю. Когда говорят о том что GC плох - то говорят о "GC в вакууме". На самом деле в Java их существует минимум 2. Классический ParallelGC, старый. И G1GC который позиционируется как новый ему на замену. Есть еще SerialGC который почти ничем не отличается от первого алгоритмически и есть также CMS который проектировался для UI приложений типа сред разработки. Плюс разные коммерческие с закрытым кодом типа С4, и другие о которых нам не известно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2017, 13:16 |
|
||
|
Java JIT - всё? Берёмся за ум
|
|||
|---|---|---|---|
|
#18+
SiemarglЯ думаю что надо пояснять свою мысль.А я знаю , что вы так ничего и не поняли ... Для Oracle JRE/JDK - виртуальная ява-машина это jvm.dll. JVM с "серверным" (C2) JIT - ~6,3Мб (x86, клиентский - раза в полтора меньше). 64-разрядная JVM (только C2) - ~8,8Мб. IBM J9 устроена по другому - там, в частности, и ваш любимый AOT в наличиии, но суммарный размер каждого из каталогов с разными вариантами компиляторов - в пределах 30Мб. Так вот, к чему я всё это ... Утверждать, что компилятор промежуточного представления в машинный код (бэкэнд) требует столько же ресурсов, что и "полный фарш" (фрон и бэк) - так же странно, как и предполагать, что, после загрузки с диска, мегабайты машинного кода раздуются до сотен мегабайт. Далее, на моём скриншоте можно увидеть, что "нативный" браузер, загрузив одну страничку требует вдвое больше памяти, чем "ява-пюре" текстовый редактор с вполне приличным функционалом. У кого как, но лично у меня возникает вопрос - если вполне простая задача обработки данных (отображение несложной HTML страницы веб-сервера) требует сотен мегабайт памяти для данных , то какая разница - сколько экономит нативный код, если объективный пользователь это разницу не сможет даже измерить. Я уж молчу о "почувствовать"? Нахрена нужен это крестовый поход за "натуральный продукт" и против "богомерзких промежуточных представлений"? P.S. High Perfomance Java Compiler - это был такой проект на IBM-овском AlphaWorks в начале нулевых. Потом межделмаш перевёл проект в категорию коммерческих. Весьма вероятно, что нынешний AOT из J9 - наследник того самого HPJC. Несколько ранее пророки встроили "jvm реального времени", сейчас будут встраивать AOT - нормальный деловой процесс. Накойхер было поднимать безоглядный кипеш? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2017, 17:21 |
|
||
|
Java JIT - всё? Берёмся за ум
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov...Утверждать, что компилятор промежуточного представления в машинный код (бэкэнд) требует столько же ресурсов, что и "полный фарш" (фрон и бэк) - так же странно, как и предполагать, что, после загрузки с диска, мегабайты машинного кода раздуются до сотен мегабайт.Да, с первым утверждением я согласен (недодумал) - фронтенд С++ должен потреблять львиную долю ресурсов. Со вторым - а если мегабайты П-кода (rt.jar 52Мб) превращаются в сотни машинного? Кстати, у п-кода, да еще ООП должно быть весьма сложно реализовать возможность постраничной загрузки по pagefault - требованию. Т.е в память надо грузить все и ой - это же zip - памяти надо вдвое. Ну или очень медленно. Basil A. Sidorov..Далее, на моём скриншоте можно увидеть, что "нативный" браузер, загрузив одну страничку требует вдвое больше памяти, чем "ява-пюре" текстовый редактор с вполне приличным функционалом. У кого как, но лично у меня возникает вопрос - если вполне простая задача обработки данных (отображение несложной HTML страницы веб-сервера) требует сотен мегабайт памяти для данных , то какая разница - сколько экономит нативный код, если объективный пользователь это разницу не сможет даже измерить. Я уж молчу о "почувствовать"? Нахрена нужен это крестовый поход за "натуральный продукт" и против "богомерзких промежуточных представлений"?Давайте сравнивать огурцы таки с огурцами - Jedit vs Notepad++ потребляет в 3.5 раза больше памяти и ввода-вывода при загрузке, и стартует (в виртуалке - а скоро все там будем) 5.4 сек против 1.5 сек Вполне себе можно прочувствовать и измерить. Кажется уже обсуждали. Basil A. Sidorov.. Накойхер было поднимать безоглядный киеш?А это и не кипешь - это собственно положительная реакция на нововведение. Вот скоро выйдет Java9, померяем и сравним - стало ли лучше и насколько. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 11:50 |
|
||
|
Java JIT - всё? Берёмся за ум
|
|||
|---|---|---|---|
|
#18+
Siemargl5.4 сек против 1.5 сек твоя работа в постоянном перезапуске приложения заключается? Не вздумай работать с приложениями Autodesk ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 12:20 |
|
||
|
Java JIT - всё? Берёмся за ум
|
|||
|---|---|---|---|
|
#18+
SiemarglСо вторым - а если мегабайты П-кода (rt.jar 52Мб) превращаются в сотни машинного? Кстати, у п-кода, да еще ООП должно быть весьма сложно реализовать возможность постраничной загрузки по pagefault - требованию. Т.е в память надо грузить все и ой - это же zip - памяти надо вдвое. Ну или очень медленно. Нет. Не превращаются. Ну.... не все 52Мб. Если вы запустите java -verbose:class то увидите спул работы Classloaders. Грузится не весь rt.jar а только те classes которые есть в зависимостях. Кстати этот аспект повлиял на введение модулей в Java9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 12:41 |
|
||
|
Java JIT - всё? Берёмся за ум
|
|||
|---|---|---|---|
|
#18+
ИзопропилSiemargl5.4 сек против 1.5 сек твоя работа в постоянном перезапуске приложения заключается? Не вздумай работать с приложениями AutodeskЭто да, мне иногда нужно просмотреть сотню-другую dwg-файлов. Чтобы не тр-ься с DЦП TrueView, я просто говорю - присылайте сразу в pdf maytonSiemarglСо вторым - а если мегабайты П-кода (rt.jar 52Мб) превращаются в сотни машинного? Кстати, у п-кода, да еще ООП должно быть весьма сложно реализовать возможность постраничной загрузки по pagefault - требованию. Т.е в память надо грузить все и ой - это же zip - памяти надо вдвое. Ну или очень медленно. Нет. Не превращаются. Ну.... не все 52Мб. Если вы запустите java -verbose:class то увидите спул работы Classloaders. Грузится не весь rt.jar а только те classes которые есть в зависимостях. Кстати этот аспект повлиял на введение модулей в Java9.Ок, но это приличная разница между п- и машкодом -распаковать zip - рекурсивно выбрать из него всех предков нужных классов, скомпилировать, слинковать и -загрузить 4кб по нужному смещению из dll ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 12:53 |
|
||
|
Java JIT - всё? Берёмся за ум
|
|||
|---|---|---|---|
|
#18+
предков еще можно выбрать по имени каталога, которое совпадает с иерархией классов, но вот перекрестные зависимости..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 12:58 |
|
||
|
Java JIT - всё? Берёмся за ум
|
|||
|---|---|---|---|
|
#18+
maytonSiemarglСо вторым - а если мегабайты П-кода (rt.jar 52Мб) превращаются в сотни машинного?.... Нет. Не превращаются. .... Нет. Не превращаются. Физически превратиться не могут. Кто же им даст? Параметр такой есть, командной строки: -XX:ReservedCodeCacheSize=32m Т.ч. максимум в 32m превратиться могу (by default). Ох уж эти сказочники, ох уж эти сказочники.... ( C ) [spoiler] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 13:17 |
|
||
|
Java JIT - всё? Берёмся за ум
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, https://blogs.oracle.com/poonam/why-do-i-get-message-codecache-is-full-compiler-has-been-disabled Немного не впечатляет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 13:35 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39466580&tid=1340359]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
163ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 468ms |

| 0 / 0 |
