Как узнать, что означает символ отладки - PullRequest
0 голосов
/ 25 января 2019

Я профилирую Java (OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-0ubuntu0.18.04.1-b12)) приложение, которое в основном состоит из I/O файла в сокет. Данные считываются из файла, архивируются на лету и отправляются в сокет.

Я сделал несколько выборок из CPU-циклов с помощью perf и получил следующую картинку:

enter image description here

То, что я заметил, было sys_futex, потребляющее большую часть ЦП (точно _raw_spin_unlock_irqrestore - 11,44%), и так называемый символ _ZN12GCTaskThread3runEnv, который, как я догадался из его названия, связан с GC.

ВОПРОСЫ:

  1. Как узнать, за что отвечает этот символ _ZN12GCTaskThread3runEnv?

  2. Почему futex es (futex_wait, futex_wake) являются самыми трудоемкими? Я ожидал, что вид copy_user_enhanced_fast_string из-за высокой активности I/O будет на вершине, но в показанных примерах это займет всего 0.56%.

AFAIK _raw_spin_unlock_irqstore означает ожидание события ввода-вывода, но почему он потребляет больше ресурсов ЦП, чем сам ввод-вывод?

...