Алексей Рагозин о Java Mission Control на jug.msk.ru

    13 марта 2018 года прошла первая в этом сезоне встреча московского сообщества Java-разработчиков jug.msk.ru. Алексей Рагозин провёл мастер-класс по использованию Java Mission Control. Как прошла встреча, что именно на ней рассказывалось, как приняли доклад участники — обо всём этом далее.



    О докладчике


    Алексей выступал на jug.msk.ru в четвёртый раз. О впечатлениях от его предыдущих выступлений можно прочитать здесь (4 июня 2015 года), здесь (20 января 2016 года) и здесь (30 августа 2016 года).

    Со времени, прошедшего с его предыдущего выступления на jug.msk.ru, он успел поучаствовать в качестве докладчика ещё на ряде конференций:

    • «Эволюция нагрузочного тестирования – от простой автоматизации до BDD» (SECR 2016: видео)
    • «I Know Why Your Java is Slow» (Devoxx 2016: презентация)
    • «Нагрузочное тестирование – автоматизируем полностью» (Heizenbug 2016: видео, презентация)
    • «Java и Linux — борьба за микросекунды» (United Dev Conf 2017: видео, презентация)
    • «Java и Linux — особенности эксплуатации» (HighLoad++ 2017: видео)

    Файлы презентаций докладов Алексея теперь находятся на Speaker Deck. Блог с техническими статьями по-прежнему доступен здесь, там есть раздел с полным списком докладов со ссылками на видео и файлы презентаций.

    О докладе


    Мастер-класс является дополненным и доработанным вариантом выступления, прошедшего в конце прошлого года на встрече питерского JUG.ru.

    Анонс мероприятия вызвал небывалый ажиотаж, зал был полностью заполнен. Непривычный формат (обычно встречи являются докладом или докладами на какую-то общую тему), вероятно, также подогрел интерес. Рекомендовано было взять ноутбуки и предварительно была выслана инструкция по подготовке перед посещением.

    Алексей перед началом встречи. Андрей Когунь традиционно приветствует участников, напоминая о ближайших конференциях и анонсируя собственный доклад на JPoint 2018.



    В первой части был сделан экскурс в профилирование Java-приложений с обзором возможностей Java Flight Recorder и Java Mission Control. В качестве подопытного использовалось приложение, доступное на GitHub.



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



    В конце встречи Алексей упомянул об учебном курсе Эффективное профилирование Java приложений, который планирует прочитать 21-22 мая, подробности здесь.

    Ссылка на презентацию. Фотографии будут доступны скоро в VK и Google+, видео — на YouTube. Также можно подписаться на рассылку с анонсами следующих встреч jug.msk.ru.

    JUG.ru Group

    1 302,68

    Конференции для взрослых. Java, .NET, JS и др. 18+

    Поделиться публикацией
    Комментарии 19
      +6

      Ещё раз хочу вас по благодарить за участие в мастер классе. Для мне было очень приятно увидеть такой интерес к теме с вашей стороны.


      Как и обещал раскрываю секрет последнего кейса с мастер класса.


      Вы могли заметить что в параметрах запуска JVM был параметер -Dlogback.level.org.optaplanner=debug. Логи пишутся в файл target/optaplanner.log. Вы легко можете убедиться, что один запуск бенчмарка создаёт около 50 мегабайт лога (в консоль при этом печатаются сообщения с уровнем INFO и выше).


      При изменении параметра на -Dlogback.level.org.optaplanner=info время оптимизации модели на моей машине сократилось с 35.7 до 9.3 секунд.


      Mission Control не лучший инструмент для анализа подобного рода узких мест. Тем не менее, некоторые улики найти было можно.


      “Длинный след” логгера на гистограмме горячих методов


      На гистограмме ниже выделено несколько горячих. Каждая из них если раскрутить дерево вывода имеет отношение к легированию. В сумме выделенные строки уже дают 13.5%, что сопоставимо в временем работы наиболее горячих методов модели.
      image


      Активное использование исключений логгером
      Во вкладке исключений мы видим не малое число java.lang.Throwable, которые растут из логгера.
      image


      Файловые операции на таймлайне потока
      Если посмотреть на таймлайн поток выполняющего оптимизацию, но плотно заполнен записью в файл. Заметьте что скриншот сделан с зумом в 650 миллисекунд.
      image


      Суммарное "чистое" время всех файловых операций всего 1.6 секунды (из 30 секунд записи), что само по себе. Однако большая плотность коротких IO операций обычно является поводом задуматься об их природе.


      Все эти "улики" косвенные. Mission Control хорош тогда когда вы хорошо понимаете природу проблемы, которую вы хотите решить.


      Почему же я выбрал этот кейс для мастер класса? Отчасти чтобы у вас был стимул испробовать все возможности Mission Control, a остановиться на первом скрине показавшем правильный результат. Отчасти чтобы показать как используя профйлер можно потерять лес за деревьями.

        +2

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

          +2
          Алексей, спасибо большое за интереснейший мастер-класс! Можно ещё привести точные даты проведения упомянутого учебного курса по профилированию.
            +2

            Я набираю группу для двух дневного тренинга 21-22 Мая (программа). По вопросам участия пишите в личку или на почту.

              +1
              хочешь, мы по нашим каналам анонсируем?
                +1
                Полезная и востребованная тема курсов, порекомендую коллегам! Жаль я уеду в это время в командировку и на Spring I/O. Планируешь ли осенью этот же тренинг?
                  0
                  У меня что-то с шрифтами на сайте. Как исправить?
                  monosnap.com/file/RjQFBtdrZL1CSBc94CbmBPp5fW6HL1
                    0
                    Косяк с кирилическим шрифтом под macOs. Исправил.
                +1
                Я один заметил, что на титульном слайде не весь экран опечатка — hitchKiker вместо hitchhiker? Если да, то мне приз!
                  0
                  Предполагаю, игра слов: «Hitchkicker» (на слайде) = «Hitchhiker» (автостоп) + «kicker» (много вариантов)

                  Вопрос автору, то есть aragozin
                    +1
                    Никакой интриги нет, просто моя безграмотность.
                  +2

                  Спасибо за анонс! Вопрос — почему в вашем плейлисте на Youtube такие неиформативные названия видео?


                  Скрин

                  image

                    +1
                    Затрудняюсь ответить, AKogun47 показалось удобнее именовать «jug.msk.ru — DD/MM/YYYY — Part N».

                    Можете предложить Андрею, как было бы удобнее, например, по аналогии с видео JUG.ru:
                    • доклады «Встреча jug.msk.ru с <имя фамилия> — <наименование доклада>» или «<имя фамилия> — <наименование доклада>»
                    • плейлисты «jug.msk.ru-YYYY»
                      +1

                      Когда с телефона ищешь что посмотреть, то за всеми префиксами темы доклада уже не видно.

                        0
                        Тогда, наверное, лучше
                        • доклады «<имя фамилия> — <наименование доклада>»
                        • плейлисты «jug.msk.ru-YYYY»
                          +1
                          Вообще, записи первоначально публиковались в ВК и там именно такой формат именования. Попробовал для текущей тоже поменять, раз есть запрос — так ок?

                          Видео со встречи — youtu.be/ypLoO49TLjI
                            0
                            Может, лучше так: «Алексей Рагозин — Мастер-класс по Java Mission Control — Встреча jug.msk.ru — 13/03/2018»?

                            То есть заменить дефис на тире и с большой буквы после каждого тире?

                            И ещё плейлисты «jug.msk.ru-YYYY» с разбивкой по годам («jug.msk.ru-2013», «jug.msk.ru-2014»,… «jug.msk.ru-2018»).
                    –2

                    Не думал сменить фамилию?
                    Я первый раз подумал про космос статья

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое