профилирование Java-сервера и интерпретация графа пламени - PullRequest
0 голосов
/ 25 августа 2018

Я профилирую Java-сервер. Я смотрю на график пламени: http://www.brendangregg.com/flamegraphs.html. У меня есть пара вопросов о том, как интерпретировать профиль пламени. Я новичок в Java, поэтому они могут звучать очень просто.

1) в профиле верхний фрейм, за которым я наблюдаю libjvm_so, занимает 38,6% процессора. Это нормально в Java-процесс и сервер? Что это за общий объект и обычно ли он так много обрабатывает?

2) Что означает, что функция / стек принимает х%. Это относительный или абсолютный? х% от общего использования ЦП процессами или х% ЦП. Это подводит меня ко второму вопросу: когда я сравниваю 2 графика пламени, сравнивается ли нормализация по всем процессам, используемым процессором? то есть если метод занимает 10% в одном профиле и 15% в другом профиле, означает ли это, что функция на самом деле потребляет больше ресурсов процессора. Или это может быть случай начального процесса, общее использование процессора составляло 50%, но во втором процессе использование процессора составляло 30%, поэтому в абсолютном выражении второй профиль показывает снижение использования процессора для функции. (10% из 50% больше, чем 15% из 30%).

1 Ответ

0 голосов
/ 11 июня 2019

Для вопроса 1:

Я думаю, что libjvm.so включает время, потраченное на компиляцию и сборку мусора.Если загрузка ЦП процесса высока и процесс выполняется некоторое время, то, как правило, не стоит тратить большое количество процессорного времени в libjvm.so, что может указывать на то, что процесс тратит больше времени на сборку или сборку, чем ожидалось.Если профиль был собран во время запуска процесса (и, таким образом, больше времени было отведено компиляции), этого можно было бы ожидать.

Для вопроса 2:

Процент в графиках пламени обычно относится кпроцент от общего процессора, используемого процессом.Таким образом, если в профиле отображается 5 с общего времени процессора, то метод, использующий 1 с общего времени процессора, будет показан как использующий 20% всего используемого процессорного времени.

Профили ЦП, собранные с помощью Stackdriver Profiler, собираются в течение 10 секунд, и их можно использовать для определения процента использования ЦП процессом.Например, профиль с итогом 5 с был собран, когда процесс использовал ~ 50% ЦП.

Для сравнения профилей в Stackdriver Profiler график пламени окрашивается абсолютной разницей между загрузкой ЦП в двух профилях.Об абсолютных различиях и различиях в процентах от общего количества сообщается во всплывающей подсказке.

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

(Раскрытие информации: я работаю над Stackdriver Profiler в Google)

...