Я хотел бы проанализировать программу Terasort с помощью Perf. Выполните следующую команду:
perf record -k mono $PID
perf inject -i perf.data --jit -o perf.data.jitted
perf report -i perf.data.jitted
Кроме того, добавляются следующие параметры виртуальной машины:
-agentpath:/usr/local/lib64/libperf-yarn-jvmti.so
И это то, что я узнал из https://blog.openj9.org/2019/07/18/inspecting-openj9-performance-with-perf-on-linux-jit-compiled-methods/.
Хорошо работает в SPECJbb2015 или других Java программах, но сталкивается с этой проблемой в Terasort of Spark.
Некоторые функции могут видеть только адрес и не могут быть связаны с jitted- $ PID.so . Я подтверждаю, что эти функции представляют собой JIT-код, сгенерированный C2.
Overhead Command Shared Object Symbol
4.93% Executor task l perf-599505.map [.] 0x0000fffdbd86982c
4.60% Executor task l perf-599505.map [.] 0x0000fffdbd86984c
3.57% Executor task l perf-599505.map [.] 0x0000fffdbd838c48
3.18% Executor task l perf-599505.map [.] 0x0000fffdbd838c34
2.81% java libjvm.so [.] PSPromotionManager::copy_to_survivor_space<false>
2.00% Executor task l perf-599505.map [.] 0x0000fffdbdaf9df0
1.59% Executor task l perf-599505.map [.] 0x0000fffdbd9cbba8
1.54% Executor task l jitted-599505-22693.so [.] class org.apache.spark.shuffle.sort.ShuffleExternalSorter.writeSortedFile(bool)
1.36% Executor task l perf-599505.map [.] 0x0000fffdbd688118
1.13% java [kernel.kallsyms] [k] clear_page
1.07% java libjvm.so [.] PSPromotionManager::process_array_chunk_work<unsigned int>
0.98% Executor task l jitted-599505-19295.so [.] class org.apache.hadoop.hdfs.DFSInputStream.read(byte[], int, int)