Производительность И Многопоточность На Конференции Java Jpoint 2016



Производительность и многопоточность на конференции Java JPoint 2016

До крупнейшей Java-конференции в России JPoint 2016 осталось всего 8 недель.

Что нас ждёт, я уже рассказывал на хабе:

два дня под одной крышей в центре Москвы около 40 отчетов в четырех параллельных залах.

Хотели сделать 36 репортажей, как по Джокеру, но видимо сетку сузим и сделаем 44 репортажа море коммуникация с коллегами – к нам со всего мира приедут около 1000 Java-программистов Попробую не спеша рассказать об основных темах JPoint и начну с нашей любимой — производительность и многопоточность .

На эту тему уже анонсированы следующие доклады: Алексей Шипилев , Oracle - Если не Unsafe, то кто: появление VarHandles Сергей Куксенко , Oracle - Эффекты квантовой производительности, повышение уровня.

За пределами ядра Руслан Черемин , Deutsche Bank – Анализ побега и скаляризация Владимир Ситников , NetCracker — Какая производительность у вашего OpenSource! Фолькер Симонис , SAP — HotSpot Intrinsics Алексей Шипилев , Оракул - Повелитель струн: Два чистильщика Тагир Валеев — Головоломки с потоковым API Владимир Иванов , Oracle — собственный код, данные вне кучи и Java Владимир Озеров , GridGain — (Почти) неблокирующая синхронизация

Алексей Шипилев, Oracle - Если не Unsafe, то кто: появление VarHandles


Производительность и многопоточность на конференции Java JPoint 2016

Алексей занимается производительностью Java около 10 лет. За это время он успел поработать над Apache Harmony в Intel, затем перешел в Sun Microsystems, а затем в Oracle, где сегодня работает над Sun/Oracle JDK, в основном над изменениями, связанными с производительностью JVM, библиотеками классов, фреймворки и приложения.

Разрабатывает и поддерживает подпроекты OpenJDK: JMH, jcstress, JOL. Работает в экспертных группах, связанных с формализацией, тестированием и выполнением параллелизма.

Алексей много раз выступал на JPoint, а в прошлом году вообще не выступал разорвал всех в клочья .



Производительность и многопоточность на конференции Java JPoint 2016

В этом докладе будет представлен обзор работы с VarHandles ( ДжЭП 193 ): какой там API, как эталонная реализация структурирована в большую ячейку, какие новые режимы доступа (acquire/release, opaque/relaxed, CompareAndSet/compareAndExchange) она дает и как нам удается скомпилировать ее практически в голую доступы.

Кроме того, мы посмотрим, насколько плох sun.misc.Unsafe, какие грабли нам дает нынешняя JDK/JVM, какие аппаратные проблемы размывают красивый гранит реализации.

Положительным моментом является то, что мы увидим побочные улучшения в JDK/JVM: оптимизацию ByteBuffers, Atomic*FieldUpdaters и другие общие улучшения генерации кода.






Руслан Черемин, Deutsche Bank — Escape-анализ и скаляризация


Производительность и многопоточность на конференции Java JPoint 2016

Руслан давно занимается выполнением Java-решений и возглавляет популярный блог о производительности , на который постоянно ссылаются все, кто так или иначе связан с перформансом в русскоязычном мире.

Если вас интересует производительность Java и вы еще не подписаны на блог Руслана, обязательно подпишитесь.

Что ж, читайте прямо на следующих выходных — взрыв мозга гарантирован! И кстати, Руслан уже выступал на JPoint и JUG три года назад. Вот видео его выступления о Disruptor: Теперь о текущем отчете.

Escape-анализ и Скалярная замена появились в Java ещё в версии 6.0, и их включение действительно существенно снижает нагрузку на GC. Но за прошедшие годы у Руслана не выработалось достоверного понимания того, какие конкретные участки кода можно полагаться на скаляризацию, а какие нет. В Интернете можно найти массу историй успеха в духе «а ведь в этом коде вообще нет аллокаций!», но данный код зачастую оказывается очень хрупким: иногда достаточно подправить одно-два линии, и вся магия исчезает. Доклад представляет собой попытку внести больше понимания в этот вопрос.

Будет кратко описан сам алгоритм escape-анализа и присущие ему ограничения, а также на примерах обсуждены ограничения его реализации в JIT-компиляторе HotSpot.




Владимир Ситников, NetCracker — Какая производительность у вашего OpenSource!


Производительность и многопоточность на конференции Java JPoint 2016

Владимир более 10 лет работает над производительностью и масштабируемостью NetCracker OS — программного обеспечения, используемого операторами связи для автоматизации процессов управления сетями и сетевым оборудованием.

Интересуюсь проблемами производительности баз данных Java и Oracle. Автор более десятка улучшений производительности в официальный драйвер PostgreSQL JDBC .



Производительность и многопоточность на конференции Java JPoint 2016

Общедоступные программы и библиотеки привлекательны тем, что они бесплатны.

Если исходный код открыт, то все сразу думают, что «умные ребята уже исправили все, что нужно».

На практике оказывается, что грабли расставлены там, где их мало кто ожидает. Все тормозит, кроме разве что самой java. В докладе мы рассмотрим примеры проблем с производительностью при использовании таких библиотек, как Wildfly, Spring, HornetQ, pgjdbc. Например, оказывается, что Spring.getBean работает медленно и в сочетании с автопрокси может занимать до 50% времени приложения.

Cglib мешает сборщику мусора проксировать Object#finalize, а HornetQ внезапно замедляет отправку JMS, что легко приводит к 5-секундным задержкам на каждое сообщение.

Владимир расскажет, как их идентифицировать и обезвредить.






Сергей Куксенко, Oracle - Quantum Performance Effects, повышение уровня.

За пределами ядра



Производительность и многопоточность на конференции Java JPoint 2016

Сергей — инженер по производительности Java, работает с Java начиная с версии 1.0. За это время я успел поучаствовать в разработке мобильных, клиентских, серверных приложений, а также виртуальных машин.

Он занимается производительностью Java более 10 лет: сначала он работал в Intel над Apache Harmony, а сейчас в Oracle работает над производительностью OracleJDK/OpenJDK (его третья JVM).

Сергей выступит с докладом, который станет продолжением его предыдущего хардкорного доклада о Quantum Performance Effects. Подробности будут доступны со дня на день, а пока вот видео первой части:




Алексей Шипилёв, Оракул — Повелитель струн: Два рыскания


Производительность и многопоточность на конференции Java JPoint 2016

java.lang.String — один из наиболее часто используемых классов в приложениях Java. Неудивительно, что инженеры Oracle пытаются улучшить его как с помощью микро-, так и макро-оптимизации.

В докладе будут освещены вопросы рациональности, подходов к реализации, практические подводные камни, с которыми сталкиваются разработчики JDK, пытающиеся ничего не сломать в огромной экосистеме, а также то, чем эта закулисная деятельность грозит обычным пользователям.

В этом докладе будут рассмотрены две будущие функции JDK 9, направленные на оптимизацию строк: Compact Strings, которая сжимает строки с однобайтовыми символами, что улучшает занимаемую площадь и даже общую производительность; и Indify String Concat, который использует магию ignoredynamic для конкатенации строк, позволяя вам настраивать реализацию конкатенации без перекомпиляции программ.






Тагир Валеев — головоломки Stream API


Производительность и многопоточность на конференции Java JPoint 2016

На Хабре Тагир известен как Лэни , лидер Java-хаба, и уже одно это делает его хорошей рекламой :) Тагир разрабатывает и поддерживает системы автоматизации научных исследований в области генетики, молекулярной и системной биологии.

Участвует в проекте статического анализа кода.

Найти ошибки .

Развивает открытую библиотеку.

СтримЭкс , который расширяет возможности API Java 8 Stream. Читает лекции по компьютерной графике в НГУ.

На различных конференциях было много докладов на тему того, что такое Stream API и как его использовать.

В докладе мы сосредоточимся на деталях реализации: какие операции выполняются быстро, какие медленно, какие неожиданно съедают много памяти, какие просто странно себя ведут. Будет рассмотрено, какие ошибки есть в Java 8 Stream API и что будет исправлено в Java 9. Кроме того, будет показано, как решить некоторые нетривиальные проблемы.

И, конечно же, будет реклама библиотеки OpenSource. СтримЭкс .






Владимир Иванов, Oracle - Нативный код, данные вне кучи и Java


Производительность и многопоточность на конференции Java JPoint 2016

Владимир — ведущий инженер Oracle, работающий в группе разработки виртуальных машин HotSpot Java. Специализируется на JIT-компиляции и поддержке альтернативных языков на платформе Java. Работает над созданием новых механизмов работы с нативным кодом и данными вне кучи ( Проект Панама ).

Отчеты Владимира обычно вызывают мурашки.

Предыдущий обзор новинок в JVM Владимир делал полтора года назад на Joker 2014: О чем Владимир расскажет на этот раз? Работа с собственным кодом и данными вне кучи из Java привлекательна, но сопряжена с рядом трудностей.

Разговор пойдет о существующих методах взаимодействия с нативным кодом и способах работы с данными вне кучи.

Значительная часть доклада будет посвящена рассказу о нововведениях в JDK 9 ( JEP 193: VarHandles ) и что планируется на долгосрочную перспективу в Project Panama: новый интерфейс для доступа к машинному коду, заменяющий JNI ( JEP 191: Интерфейс внешних функций ), Язык дескрипторов макета (LDL) и массивы 2.0.




Владимир Озеров, GridGain - (Почти) неблокирующая синхронизация


Производительность и многопоточность на конференции Java JPoint 2016

Владимир — архитектор GridGain. Комитер и член ЧВК проекта Апач Игнит .

Занимается вопросами распределенных вычислений, кэширования и репликации, интеграции с .

NET/C++, разработкой модулей для экосистемы Hadoop. Неблокирующая синхронизация — полезный и мощный инструмент многопоточного программирования.

Но зачастую знания разработчиков о нем ограничиваются словами «крутой», «сложный» и «производительность».

Как именно использовать неблокирующие алгоритмы на практике? Как именно они могут помочь Javaисту? И где спрятано это выступление? В докладе будут рассмотрены проблемы, решаемые с помощью неблокирующей синхронизации в мире Java. Слушатели с Владимиром

  • прорвется сквозь дебри заумной теории;
  • выделить основные блоки неблокирующих алгоритмов;
  • научиться сочетать блокирующие и неблокирующие приемы;
  • Они рассмотрят примеры из реальных проектов – успешных и не очень.






Волкер Симонис, SAP – HotSpot Intrinsics


Производительность и многопоточность на конференции Java JPoint 2016

Волкер — инженер JVM с обширным опытом работы над SAP JVM. Он вносил вклад в OpenJDK с момента его создания и помогал SAP вносить различные улучшения в HotSpot JVM. Волкер возглавляет проект по портированию OpenJDK на PowerPC/AIX, принимает решения по JDK8 и проверяет изменения по JDK9. На последней встрече JPoint Волкер рассказал о различных подходах к ускорению работы с массивами объектов: На этот раз Волкер расскажет о JVM Intrinsics — специальных функциях внутри HotSpot и других JVM, которые позволяют вашему коду работать быстрее.

Как мы знаем, HotSpot JVM работает на огромном количестве платформ, а потому весь ее код в той или иной степени делится на общий и специфический для конкретного оборудования или конкретной операционной системы (а иногда и для пары «железо+ОС»).

Соответственно, в некоторых случаях выполнение кода можно ускорить, если использовать специальные инструкции процессора.

Типичным примером является использование инструкций типа добавления блокировки для таких методов, как AtomicInteger.getAndAdd(int) вместо цикла CAS. Или, например, используйте инструкции SIMD для методов равенства и hashCode для строк.

В этом докладе будет представлен обзор существующих встроенных функций HotSpot и объяснено, как они реализованы, как вы можете контролировать их использование и, наконец, как вы можете добавить встроенную функцию в свой любимый метод Java.


Вполне вероятно, что в ближайшие дни у нас будет еще пара докладов о Performance — один от Сергея Куксенко, а второй от Concurrency-эксперта и чемпиона по Java Романа Елизарова.

Кроме того, ряд отчетов очень сильно связаны с производительностью:

  • доклады о распределенных системах от Олега Анастасьева из «Одноклассников» и Романа Гребенникова;
  • доклад о распределенных кэшах от Виктора Гамова из Hazelcast;
  • отчет о профайлерах от Антона Архипова из Zeroturnaround.
Вы можете прочитать эти и другие отчеты здесь .

Ну а в комментариях, как всегда, жду ваших вопросов по этим отчетам или по JPoint в целом.

Теги: #Высокая производительность #Конференции #java #jpoint #jug.ru #jug.ru #java 9

Вместе с данным постом часто просматривают: