Skip to main content

Java Mixed-Mode Flame Graphs

Recently, I wrote a blog post on "Java CPU Flame Graphs". That blog post shows how to use Linux perf_events to generate Java Mixed-Mode Flame Graphs.

With Java Profilers, we can get information about Java process only. However with Java Mixed-Mode Flame Graphs, we can see how much CPU time is spent in Java methods, system libraries and the kernel. Mixed-mode means that the Flame Graph shows profile information from both system code paths and Java code paths.

This is sometimes very important to identify performance issues. For more information, see Java in Flames and New JVM Option Enables Generation of Mixed-Mode Flame Graphs

In this blog post, I'm using a sample high cpu consuming Java Program with Java 8 Update 60.

$ mvn -version
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T17:27:37+05:30)
Maven home: /usr/local/apache-maven/apache-maven-3.3.3
Java version: 1.8.0_60, vendor: Oracle Corporation
Java home: /usr/lib/jvm/jdk1.8.0_60/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.19.0-28-generic", arch: "amd64", family: "unix"

$ git clone https://github.com/chrishantha/sample-java-programs.git
$ cd sample-java-programs
$ mvn clean install

Java Flame Graph using Java Flight Recorder


 I ran the highcpu program for a minute.

$ java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=defaultrecording=true,settings=profile,disk=true,repository=./tmp,dumponexit=true,dumponexitpath=./ -jar highcpu/target/highcpu-0.0.1-SNAPSHOT.jar --exit-timeout 60

I used my "jfr-flame-graph" software to generate the flame graph.

jfr-flame-graph$ ./run.sh -i -f ../sample-java-programs/hotspot-pid-30716-id-0-2015_09_14_19_01_38.jfr -o /tmp/output.txt
$ cat /tmp/output.txt | ~/performance/brendangregg-git/FlameGraph/flamegraph.pl --width 1680 > /tmp/highcpu-jfr.svg


Flame Graph Reset ZoomSearch oracle.jrockit.jfr.Settings$Aggregator.getDefault(com.oracle.jrockit.jfr.EventInfo) (1 samples, 0.03%)java.math.BigDecimal.(init)(java.lang.String) (527 samples, 14.53%)java.mat..java.math.BigInteger.add(int[], long) (2 samples, 0.06%)com.github.chrishantha.sample.highcpu.MathWorker.run() (2,462 samples, 67.86%)com.github.chrishantha.sample.highcpu.MathWorker..java.math.BigDecimal.add(long, int, java.math.BigInteger, int) (132 samples, 3.64%)java.math.BigDecimal.add(long, int, long, int) (1 samples, 0.03%)java.util.Arrays.copyOfRange(char[], int, int) (5 samples, 0.14%)com.github.chrishantha.sample.highcpu.HashingWorker.run() (1,165 samples, 32.11%)com.github.chrishantha..java.util.UUID.toString() (49 samples, 1.35%)java.lang.Long.toUnsignedString0(long, int) (5 samples, 0.14%)oracle.jrockit.jfr.JFRImpl.cloneRecording(oracle.jrockit.jfr.Recording, java.lang.String, boolean) (1 samples, 0.03%)oracle.jrockit.jfr.Settings$Aggregator.updateDefaults(java.util.Collection) (1 samples, 0.03%)java.security.SecureRandom.nextBytes(byte[]) (530 samples, 14.61%)java.sec..sun.security.provider.SHA.implDigest(byte[], int) (46 samples, 1.27%)sun.security.provider.ByteArrayAccess.b2iBig64(byte[], int, int[]) (4 samples, 0.11%)java.util.Random.nextDouble() (1 samples, 0.03%)java.lang.StringBuilder.toString() (6 samples, 0.17%)java.lang.String.equals(java.lang.Object) (1 samples, 0.03%)oracle.jrockit.jfr.JFRImpl.dumpOnExit() (1 samples, 0.03%)oracle.jrockit.jfr.Settings$Aggregator.mergeDefaults(java.util.Collection, java.util.Map) (1 samples, 0.03%)sun.security.provider.NativePRNG$RandomIO.ensureBufferValid() (3 samples, 0.08%)java.util.UUID.randomUUID() (531 samples, 14.64%)java.uti..sun.security.jca.GetInstance.getInstance(java.security.Provider$Service, java.lang.Class) (1 samples, 0.03%)sun.misc.FloatingDecimal.toJavaFormatString(double) (1,312 samples, 36.16%)sun.misc.FloatingDecimal...java.lang.AbstractStringBuilder.(init)(int) (43 samples, 1.19%)sun.misc.FloatingDecimal$BinaryToASCIIBuffer.getChars(char[]) (45 samples, 1.24%)java.security.Security.getImpl(java.lang.String, java.lang.String, java.lang.String) (1 samples, 0.03%)java.lang.String.(init)(char[], int, int) (5 samples, 0.14%)java.lang.AbstractStringBuilder.ensureCapacityInternal(int) (211 samples, 5.82%)ja..java.lang.Long.toHexString(long) (5 samples, 0.14%)sun.security.provider.SecureRandom.updateState(byte[], byte[]) (1 samples, 0.03%)sun.misc.FloatingDecimal$BinaryToASCIIBuffer.toJavaFormatString() (57 samples, 1.57%)all (3,628 samples, 100%)sun.misc.FloatingDecimal.getBinaryToASCIIConverter(double) (1,254 samples, 34.56%)sun.misc.FloatingDecima..java.security.MessageDigest.getInstance(java.lang.String) (1 samples, 0.03%)sun.misc.FloatingDecimal.getBinaryToASCIIConverter(double, boolean) (1,254 samples, 34.56%)sun.misc.FloatingDecima..java.util.Random.nextInt(int) (2 samples, 0.06%)java.util.Arrays.copyOfRange(char[], int, int) (2 samples, 0.06%)sun.security.provider.SHA.implCompress(byte[], int) (16 samples, 0.44%)sun.security.provider.ByteArrayAccess.i2bBig4(int, byte[], int) (13 samples, 0.36%)java.util.Arrays.copyOf(char[], int) (211 samples, 5.82%)ja..java.math.BigDecimal.subtract(java.math.BigDecimal) (134 samples, 3.69%)sun.nio.cs.UTF_8$Encoder.encode(char[], int, int, byte[]) (4 samples, 0.11%)oracle.jrockit.jfr.Settings$Aggregator.copy(oracle.jrockit.jfr.Settings$Aggregator) (1 samples, 0.03%)com.oracle.jrockit.jfr.DurationEvent.begin() (1 samples, 0.03%)java.util.UUID.digits(long, int) (5 samples, 0.14%)sun.misc.FloatingDecimal$BinaryToASCIIBuffer.dtoa(int, long, int, boolean) (1,111 samples, 30.62%)sun.misc.FloatingDec..sun.security.provider.DigestBase.engineDigest(byte[], int, int) (46 samples, 1.27%)oracle.jrockit.jfr.JFR$2.run() (1 samples, 0.03%)java.lang.String.getBytes() (4 samples, 0.11%)java.security.MessageDigest.update(byte[]) (16 samples, 0.44%)java.math.BigDecimal.add(long, int, java.math.BigInteger, int) (136 samples, 3.75%)java.lang.AbstractStringBuilder.expandCapacity(int) (211 samples, 5.82%)ja..java.math.BigDecimal.(init)(char[], int, int) (527 samples, 14.53%)java.mat..java.math.BigInteger.compareMagnitude(long) (41 samples, 1.13%)java.lang.Long.formatUnsignedLong(long, int, char[], int, int) (5 samples, 0.14%)java.io.FileInputStream.read(byte[], int, int) (2 samples, 0.06%)sun.security.provider.ByteArrayAccess.b2iBig64(byte[], int, int[]) (1 samples, 0.03%)java.security.MessageDigest.digest() (46 samples, 1.27%)sun.security.provider.NativePRNG$RandomIO.access$400(sun.security.provider.NativePRNG$RandomIO, byte[]) (499 samples, 13.75%)sun.secu..java.security.MessageDigest$Delegate.engineDigest() (46 samples, 1.27%)java.math.BigDecimal.add(long, long, int) (1 samples, 0.03%)java.math.BigInteger.compareMagnitude(long) (86 samples, 2.37%)sun.security.provider.DigestBase.engineDigest() (46 samples, 1.27%)java.math.BigDecimal.(init)(char[], int, int, java.math.MathContext) (442 samples, 12.18%)java.ma..java.lang.ThreadLocal$ThreadLocalMap.getEntry(java.lang.ThreadLocal) (42 samples, 1.16%)sun.security.provider.DigestBase.engineUpdate(byte[], int, int) (16 samples, 0.44%)java.lang.StringBuilder.append(java.lang.String) (224 samples, 6.17%)ja..java.lang.Math.atan(double) (336 samples, 9.26%)java..sun.misc.FloatingDecimal$BinaryToASCIIBuffer.access$100(sun.misc.FloatingDecimal$BinaryToASCIIBuffer, int, long, int, boolean) (1,211 samples, 33.38%)sun.misc.FloatingDecim..sun.security.provider.DigestBase.implCompressMultiBlock(byte[], int, int) (16 samples, 0.44%)java.lang.StringBuilder.append(java.lang.String) (1 samples, 0.03%)sun.security.provider.NativePRNG$RandomIO.readFully(java.io.InputStream, byte[]) (2 samples, 0.06%)java.lang.ThreadLocal.get() (43 samples, 1.19%)java.util.Arrays.copyOf(char[], int) (1 samples, 0.03%)java.lang.AbstractStringBuilder.append(java.lang.String) (1 samples, 0.03%)java.lang.Thread.run() (3,628 samples, 100.00%)java.lang.Thread.run()java.lang.String.getChars(int, int, char[], int) (8 samples, 0.22%)java.math.BigDecimal.valueOf(double) (1,839 samples, 50.69%)java.math.BigDecimal.valueOf(double)java.math.BigInteger.add(long) (41 samples, 1.13%)sun.security.provider.SHA.implCompress(byte[], int) (31 samples, 0.85%)java.math.BigInteger.add(long) (89 samples, 2.45%)java.math.BigDecimal.valueOf(java.math.BigInteger, int, int) (94 samples, 2.59%)oracle.jrockit.jfr.Settings$Aggregator.updateDefaults() (1 samples, 0.03%)java.security.MessageDigest$Delegate.engineUpdate(byte[], int, int) (16 samples, 0.44%)oracle.jrockit.jfr.JFRImpl.destroy() (1 samples, 0.03%)java.lang.StringBuilder.(init)() (43 samples, 1.19%)sun.misc.FloatingDecimal.getBinaryToASCIIBuffer() (43 samples, 1.19%)java.lang.String.(init)(char[], int, int) (2 samples, 0.06%)java.math.BigDecimal.valueOf(java.math.BigInteger, int, int) (17 samples, 0.47%)java.lang.StringCoding.encode(char[], int, int) (4 samples, 0.11%)sun.security.provider.SecureRandom.engineNextBytes(byte[]) (59 samples, 1.63%)oracle.jrockit.jfr.Settings$Aggregator.replaceEventDefaultSets(java.util.Collection) (1 samples, 0.03%)java.math.BigDecimal.add(java.math.BigDecimal) (137 samples, 3.78%)java.lang.StringCoding$StringEncoder.encode(char[], int, int) (4 samples, 0.11%)sun.security.provider.NativePRNG$RandomIO.implNextBytes(byte[]) (76 samples, 2.09%)java.lang.ThreadLocal$ThreadLocalMap.access$000(java.lang.ThreadLocal$ThreadLocalMap, java.lang.ThreadLocal) (42 samples, 1.16%)java.lang.StringCoding.encode(java.lang.String, char[], int, int) (4 samples, 0.11%)java.lang.Double.toString(double) (1,312 samples, 36.16%)java.lang.Double.toString..sun.security.jca.GetInstance.getInstance(java.lang.String, java.lang.Class, java.lang.String) (1 samples, 0.03%)oracle.jrockit.jfr.JFRImpl.dumpOnExit(oracle.jrockit.jfr.Recording) (1 samples, 0.03%)com.oracle.jrockit.jfr.EventToken.isEnabled() (1 samples, 0.03%)java.math.BigDecimal.valueOf(long, int) (1 samples, 0.03%)java.lang.AbstractStringBuilder.append(java.lang.String) (223 samples, 6.15%)ja..java.lang.AbstractStringBuilder.ensureCapacityInternal(int) (1 samples, 0.03%)sun.security.provider.NativePRNG.engineNextBytes(byte[]) (499 samples, 13.75%)sun.secu..java.lang.AbstractStringBuilder.expandCapacity(int) (1 samples, 0.03%)java.math.BigInteger.negate() (1 samples, 0.03%)java.math.BigDecimal.add(long, long, int) (1 samples, 0.03%)java.math.BigDecimal.add(long, int, long, int) (1 samples, 0.03%)

Java Mixed Mode Flame Graph


I'm using "perf-map-agent". Please build it first as mentioned in README.

I ran the highcpu program with "-XX:+PreserveFramePointer" JVM argument.

$ java -XX:+PreserveFramePointer -jar highcpu/target/highcpu-0.0.1-SNAPSHOT.jar

In another terminal, I started a perf recording for a minute.

$ sudo perf record -F 99 -g -p `pgrep -f highcpu` -- sleep 60

By default, the highcpu Java program runs for 2 minutes and therefore I waited for a minute to create the Java Symbol Map (I did this in another terminal).


$ cd ~/performance/git-projects/perf-map-agent
$ sudo sleep 60;bin/create-java-perf-map.sh `pgrep -f highcpu`

After the perf recording completed and the symbol file created in /tmp, we can generate the Java mixed-mode flame graph


Let's generate the flame graph.


sample-java-programs$ sudo perf script | ~/performance/brendangregg-git/FlameGraph/stackcollapse-perf.pl > /tmp/out.perf-folded
sample-java-programs$ cat /tmp/out.perf-folded | ~/performance/brendangregg-git/FlameGraph/flamegraph.pl --color=java --width 1680 > /tmp/highcpu-perf.svg


Flame Graph Reset ZoomSearch pthread_cond_timedwait@@GLIBC_2.3.2 (46 samples, 0.28%)_ZN13SharedRuntime26complete_monitor_locking_CEP7oopDescP9BasicLockP10JavaThread (147 samples, 0.90%)__perf_event_task_sched_in (4 samples, 0.02%)x86_pmu_enable (4 samples, 0.02%)SpinPause (5 samples, 0.03%)native_write_msr_safe (4 samples, 0.02%)do_futex (31 samples, 0.19%)handle_mm_fault (15 samples, 0.09%)local_apic_timer_interrupt (11 samples, 0.07%)perf_pmu_enable (4 samples, 0.02%)__schedule (59 samples, 0.36%)_ZN7Monitor5ILockEP6Thread (5 samples, 0.03%)native_write_msr_safe (52 samples, 0.32%)__perf_event_task_sched_in (4 samples, 0.02%)java/lang/Thread:.sleep (95 samples, 0.58%)perf_pmu_enable (40 samples, 0.24%)_ZN7Monitor28lock_without_safepoint_checkEv (5 samples, 0.03%)hrtimer_interrupt (10 samples, 0.06%)pick_next_entity (4 samples, 0.02%)enqueue_task_fair (9 samples, 0.06%)perf_event_context_sched_in (4 samples, 0.02%)do_futex (46 samples, 0.28%)perf_event_context_sched_in (4 samples, 0.02%)[unknown] (190 samples, 1.16%)__perf_event_task_sched_in (4 samples, 0.02%)__schedule (4 samples, 0.02%)sun/misc/FloatingDecimal$BinaryToASCIIBuffer:.dtoa (9 samples, 0.06%)intel_pmu_enable_all (4 samples, 0.02%)local_apic_timer_interrupt (20 samples, 0.12%)__schedule (5 samples, 0.03%)native_write_msr_safe (4 samples, 0.02%)smp_apic_timer_interrupt (7 samples, 0.04%)wake_up_process (4 samples, 0.02%)_ZN20SafepointSynchronize5blockEP10JavaThread (4 samples, 0.02%)smp_apic_timer_interrupt (11 samples, 0.07%)x86_pmu_enable (4 samples, 0.02%)java/lang/StringBuilder:.toString (11 samples, 0.07%)remote_function (4 samples, 0.02%)x86_pmu_enable (4 samples, 0.02%)native_write_msr_safe (4 samples, 0.02%)perf_event_context_sched_in (4 samples, 0.02%)page_fault (5 samples, 0.03%)_ZL4highd (4 samples, 0.02%)intel_pmu_enable_all (4 samples, 0.02%)perf_pmu_enable (8 samples, 0.05%)_ZN12MutableSpace12cas_allocateEm (4 samples, 0.02%)hrtimer_wakeup (4 samples, 0.02%)x86_pmu_enable (4 samples, 0.02%)_ZN7Monitor28lock_without_safepoint_checkEv (4 samples, 0.02%)tick_sched_timer (4 samples, 0.02%)_ZN13WatcherThread3runEv (23 samples, 0.14%)_ZN20SafepointSynchronize16do_cleanup_tasksEv (4 samples, 0.02%)sys_futex (4 samples, 0.02%)sun/misc/FloatingDecimal$BinaryToASCIIBuffer:.getChars (21 samples, 0.13%)system_call_fastpath (4 samples, 0.02%)__run_hrtimer (7 samples, 0.04%)jlong_disjoint_arraycopy (1,696 samples, 10.37%)jlong..x86_pmu_enable (8 samples, 0.05%)sys_futex (4 samples, 0.02%)_ZN7Monitor5IWaitEP6Threadl (8 samples, 0.05%)_Z5fabsdd (9 samples, 0.06%)finish_task_switch (41 samples, 0.25%)call_stub (15,579 samples, 95.30%)call_stubsystem_call_fastpath (32 samples, 0.20%)perf_event_context_sched_in (8 samples, 0.05%)finish_task_switch (8 samples, 0.05%)__schedule (12 samples, 0.07%)scheduler_tick (6 samples, 0.04%)smp_apic_timer_interrupt (4 samples, 0.02%)_ZN7Monitor5IWaitEP6Threadl (4 samples, 0.02%)java/lang/AbstractStringBuilder:.append (8 samples, 0.05%)perf_pmu_enable (4 samples, 0.02%)finish_task_switch (4 samples, 0.02%)wake_up_process (7 samples, 0.04%)_new_array_nozero_Java (285 samples, 1.74%)_ZN20ParallelScavengeHeap12mem_allocateEmPb (24 samples, 0.15%)ttwu_do_activate.constprop.93 (11 samples, 0.07%)x86_pmu_enable (52 samples, 0.32%)__alloc_pages_nodemask (15 samples, 0.09%)tick_sched_handle.isra.16 (12 samples, 0.07%)handle_mm_fault (5 samples, 0.03%)extract_entropy_user (9 samples, 0.06%)hrtimer_interrupt (6 samples, 0.04%)try_to_wake_up (9 samples, 0.06%)java/math/BigDecimal:.subtract (382 samples, 2.34%)_ZN12CompileQueue3getEv (59 samples, 0.36%)scheduler_tick (4 samples, 0.02%)_ZN10JavaThread44check_safepoint_and_suspend_for_native_transEPS_ (10 samples, 0.06%)native_write_msr_safe (4 samples, 0.02%)native_write_msr_safe (4 samples, 0.02%)_ZN13ObjectMonitor6EnterIEP6Thread (110 samples, 0.67%)__schedule (62 samples, 0.38%)pthread_cond_wait@@GLIBC_2.3.2 (63 samples, 0.39%)activate_task (5 samples, 0.03%)page_fault (4 samples, 0.02%)native_write_msr_safe (12 samples, 0.07%)pick_next_task_fair (4 samples, 0.02%)futex_wait_queue_me (4 samples, 0.02%)flush_smp_call_function_queue (4 samples, 0.02%)group_sched_in (4 samples, 0.02%)update_process_times (7 samples, 0.04%)Interpreter (149 samples, 0.91%)futex_wait_queue_me (4 samples, 0.02%)_ZN9OopMapSet6all_doEPK5framePK11RegisterMapP10OopClosurePFvPP7oopDescSA_ES7_ (5 samples, 0.03%)do_futex (4 samples, 0.02%)retint_careful (13 samples, 0.08%)system_call_fastpath (4 samples, 0.02%)native_write_msr_safe (41 samples, 0.25%)enqueue_task_fair (4 samples, 0.02%)local_apic_timer_interrupt (4 samples, 0.02%)try_to_wake_up (7 samples, 0.04%)apic_timer_interrupt (32 samples, 0.20%)java/util/UUID:.randomUUID (31 samples, 0.19%)retint_careful (5 samples, 0.03%)sys_sched_yield (5 samples, 0.03%)x86_pmu_enable (12 samples, 0.07%)pthread_cond_wait@@GLIBC_2.3.2 (4 samples, 0.02%)x86_pmu_commit_txn (4 samples, 0.02%)dequeue_task_fair (9 samples, 0.06%)futex_wait_queue_me (59 samples, 0.36%)sys_futex (17 samples, 0.10%)intel_pmu_enable_all (4 samples, 0.02%)schedule_user (6 samples, 0.04%)call_function_single_interrupt (4 samples, 0.02%)finish_task_switch (4 samples, 0.02%)sun/security/provider/NativePRNG$RandomIO:.implNextBytes (30 samples, 0.18%)_ZN13GCTaskManager8get_taskEj (61 samples, 0.37%)try_to_wake_up (6 samples, 0.04%)try_to_wake_up (4 samples, 0.02%)_ZN7Monitor5IWaitEP6Threadl (12 samples, 0.07%)schedule (4 samples, 0.02%)futex_wait (5 samples, 0.03%)vfs_read (357 samples, 2.18%)schedule (8 samples, 0.05%)native_write_msr_safe (4 samples, 0.02%)__sched_yield (5 samples, 0.03%)perf_event_context_sched_in (12 samples, 0.07%)jshort_arraycopy (10 samples, 0.06%)do_futex (4 samples, 0.02%)__schedule (4 samples, 0.02%)system_call_fastpath (17 samples, 0.10%)_ZN8VMThread4loopEv (54 samples, 0.33%)native_write_msr_safe (8 samples, 0.05%)__memmove_ssse3_back (7 samples, 0.04%)perf_pmu_enable (8 samples, 0.05%)_ZN20SafepointSynchronize5blockEP10JavaThread (4 samples, 0.02%)x86_pmu_enable (60 samples, 0.37%)ttwu_do_activate.constprop.93 (5 samples, 0.03%)__perf_event_task_sched_in (8 samples, 0.05%)perf_event_context_sched_in (52 samples, 0.32%)_ZN2os5sleepEP6Threadlb (88 samples, 0.54%)tick_sched_handle.isra.16 (4 samples, 0.02%)call_rwsem_down_write_failed (4 samples, 0.02%)_ZN13InstanceKlass17allocate_instanceEP6Thread (10 samples, 0.06%)system_call_fastpath (5 samples, 0.03%)perf_event_context_sched_in (60 samples, 0.37%)security_file_permission (13 samples, 0.08%)[unknown] (378 samples, 2.31%)perf_pmu_enable (41 samples, 0.25%)jshort_disjoint_arraycopy (91 samples, 0.56%)__perf_event_task_sched_in (4 samples, 0.02%)_ZN7Monitor4waitEblb (12 samples, 0.07%)do_futex (4 samples, 0.02%)intel_pmu_enable_all (4 samples, 0.02%)perf_pmu_enable (16 samples, 0.10%)__schedule (8 samples, 0.05%)jshort_disjoint_arraycopy (11 samples, 0.07%)enqueue_task_fair (4 samples, 0.02%)sys_futex (72 samples, 0.44%)do_futex (71 samples, 0.43%)_ZN10JavaThread40check_special_condition_for_native_transEPS_ (10 samples, 0.06%)schedule (4 samples, 0.02%)_ZN7Monitor4waitEblb (8 samples, 0.05%)do_futex (4 samples, 0.02%)hrtimer_interrupt (9 samples, 0.06%)__alloc_pages_nodemask (5 samples, 0.03%)_ZN12VM_Operation8evaluateEv (8 samples, 0.05%)x86_pmu_enable (4 samples, 0.02%)__do_softirq (7 samples, 0.04%)do_futex (17 samples, 0.10%)common_file_perm (10 samples, 0.06%)java/util/UUID:.toString (5 samples, 0.03%)compact_zone_order (5 samples, 0.03%)__schedule (4 samples, 0.02%)sys_futex (4 samples, 0.02%)hrtimer_interrupt (23 samples, 0.14%)schedule (4 samples, 0.02%)schedule (42 samples, 0.26%)remote_function (4 samples, 0.02%)x86_pmu_commit_txn (4 samples, 0.02%)intel_pmu_enable_all (8 samples, 0.05%)_ZNK8CodeBlob9is_zombieEv (6 samples, 0.04%)wake_up_process (9 samples, 0.06%)all (16,348 samples, 100%)perf_pmu_enable (4 samples, 0.02%)tick_sched_handle.isra.16 (5 samples, 0.03%)vfs_read (12 samples, 0.07%)system_call_fastpath (372 samples, 2.28%)x86_pmu_enable (8 samples, 0.05%)native_write_msr_safe (4 samples, 0.02%)x86_pmu_enable (4 samples, 0.02%)tick_sched_timer (7 samples, 0.04%)_ZN9JavaCalls11call_helperEP9JavaValueP12methodHandleP17JavaCallArgumentsP6Thread (15,579 samples, 95.30%)_ZN9JavaCalls11call_helperEP9JavaValueP12methodHandleP17JavaCallArgum..sys_futex (8 samples, 0.05%)java/lang/StrictMath:.atan (13 samples, 0.08%)finish_task_switch (40 samples, 0.24%)do_futex (4 samples, 0.02%)perf_event_context_sched_in (4 samples, 0.02%)futex_wait (4 samples, 0.02%)do_futex (4 samples, 0.02%)__run_hrtimer (5 samples, 0.03%)perf_event_context_sched_in (8 samples, 0.05%)do_page_fault (4 samples, 0.02%)_ZN7Monitor5ILockEP6Thread (4 samples, 0.02%)enqueue_task (4 samples, 0.02%)do_futex (4 samples, 0.02%)__perf_event_task_sched_in (12 samples, 0.07%)sys_futex (4 samples, 0.02%)_ZN7Monitor5IWaitEP6Threadl (58 samples, 0.35%)__alloc_pages_direct_compact (5 samples, 0.03%)handle_irq (4 samples, 0.02%)irq_exit (7 samples, 0.04%)java/math/BigDecimal:.init (27 samples, 0.17%)jfabs (75 samples, 0.46%)try_to_wake_up (4 samples, 0.02%)_ZNK20ParallelScavengeHeap29can_elide_tlab_store_barriersEv (4 samples, 0.02%)futex_wait (8 samples, 0.05%)jshort_arraycopy (4 samples, 0.02%)jfabs (4 samples, 0.02%)_ZN11OptoRuntime18new_array_nozero_CEP5KlassiP10JavaThread (278 samples, 1.70%)intel_pmu_enable_all (40 samples, 0.24%)java/io/FileInputStream:.read (5 samples, 0.03%)system_call_fastpath (9 samples, 0.06%)native_write_msr_safe (4 samples, 0.02%)update_process_times (4 samples, 0.02%)__fget_light (8 samples, 0.05%)compact_zone (5 samples, 0.03%)_ZN14TypeArrayKlass15allocate_commonEibP6Thread (4 samples, 0.02%)_ZN29VM_ParallelGCFailedAllocation4doitEv (8 samples, 0.05%)compact_zone (15 samples, 0.09%)intel_pmu_enable_all (4 samples, 0.02%)finish_task_switch (16 samples, 0.10%)__schedule (15 samples, 0.09%)compact_zone_order (15 samples, 0.09%)java/lang/StringBuilder:.append (27 samples, 0.17%)x86_pmu_enable (8 samples, 0.05%)__run_hrtimer (4 samples, 0.02%)apic_timer_interrupt (15 samples, 0.09%)futex_wait (54 samples, 0.33%)schedule (4 samples, 0.02%)sys_mprotect (4 samples, 0.02%)futex_wait_queue_me (8 samples, 0.05%)pthread_cond_signal@@GLIBC_2.3.2 (32 samples, 0.20%)pthread_cond_timedwait@@GLIBC_2.3.2 (74 samples, 0.45%)_ZN9CodeCache9find_blobEPv (14 samples, 0.09%)_ZN7Monitor4waitEblb (56 samples, 0.34%)urandom_read (10 samples, 0.06%)schedule (17 samples, 0.10%)sys_futex (46 samples, 0.28%)apparmor_file_permission (10 samples, 0.06%)intel_pmu_enable_all (8 samples, 0.05%)apic_timer_interrupt (20 samples, 0.12%)_ZN13CompileBroker25invoke_compiler_on_methodEP11CompileTask (5 samples, 0.03%)[unknown] (461 samples, 2.82%)enqueue_task_fair (4 samples, 0.02%)java/lang/String:.init (33 samples, 0.20%)hrtimer_wakeup (12 samples, 0.07%)perf_event_context_sched_in (4 samples, 0.02%)schedule (12 samples, 0.07%)futex_wait (4 samples, 0.02%)perf_event_context_sched_in (41 samples, 0.25%)flush_smp_call_function_queue (4 samples, 0.02%)smp_call_function_single_interrupt (4 samples, 0.02%)__run_hrtimer (9 samples, 0.06%)java (16,348 samples, 100.00%)javaretint_careful (11 samples, 0.07%)perf_event_context_sched_in (4 samples, 0.02%)perf_pmu_enable (60 samples, 0.37%)jshort_disjoint_arraycopy (33 samples, 0.20%)sun/security/provider/SHA:.implCompress (71 samples, 0.43%)_ZN21ThreadStateTransition15trans_and_fenceE15JavaThreadStateS0_ (4 samples, 0.02%)enqueue_task (5 samples, 0.03%)_ZN14TypeArrayKlass15allocate_commonEibP6Thread (101 samples, 0.62%)_ZN11OptoRuntime27is_deoptimized_caller_frameEP10JavaThread (114 samples, 0.70%)x86_pmu_enable (8 samples, 0.05%)__schedule (42 samples, 0.26%)_ZNK13WatcherThread5sleepEv (21 samples, 0.13%)deactivate_task (11 samples, 0.07%)jshort_disjoint_arraycopy (8 samples, 0.05%)intel_pmu_enable_all (12 samples, 0.07%)intel_pmu_enable_all (4 samples, 0.02%)finish_task_switch (12 samples, 0.07%)apic_timer_interrupt (9 samples, 0.06%)_Z13__ieee754_powdd (50 samples, 0.31%)intel_pmu_enable_all (4 samples, 0.02%)_ZN7Monitor28lock_without_safepoint_checkEv (4 samples, 0.02%)futex_wait (17 samples, 0.10%)hrtimer_interrupt (17 samples, 0.10%)ret_from_intr (5 samples, 0.03%)java/math/BigDecimal:.add (286 samples, 1.75%)__do_page_fault (15 samples, 0.09%)futex_wait_queue_me (4 samples, 0.02%)smp_apic_timer_interrupt (21 samples, 0.13%)jni_SetByteArrayRegion (5 samples, 0.03%)native_write_msr_safe (4 samples, 0.02%)java/io/FileInputStream:.readBytes (24 samples, 0.15%)java/io/FileInputStream:.read (24 samples, 0.15%)jshort_arraycopy (13 samples, 0.08%)x86_pmu_enable (4 samples, 0.02%)sys_futex (61 samples, 0.37%)futex_wait (4 samples, 0.02%)futex_wake_op (31 samples, 0.19%)task_tick_fair (4 samples, 0.02%)futex_wait (4 samples, 0.02%)perf_event_context_sched_in (4 samples, 0.02%)system_call_fastpath (8 samples, 0.05%)jni_GetObjectField (16 samples, 0.10%)perf_pmu_enable (4 samples, 0.02%)futex_wait (46 samples, 0.28%)x86_pmu_enable (4 samples, 0.02%)com/github/chrishantha/sample/highcpu/MathWorker:.run (5 samples, 0.03%)system_call_fastpath (4 samples, 0.02%)hrtimer_wakeup (6 samples, 0.04%)sun/security/provider/NativePRNG$RandomIO:.implNextBytes (4 samples, 0.02%)futex_wait_queue_me (4 samples, 0.02%)java/math/BigDecimal:.add (11 samples, 0.07%)enqueue_task (5 samples, 0.03%)enqueue_task (6 samples, 0.04%)perf_pmu_enable (8 samples, 0.05%)hrtimer_wakeup (7 samples, 0.04%)pthread_cond_wait@@GLIBC_2.3.2 (4 samples, 0.02%)local_apic_timer_interrupt (17 samples, 0.10%)jshort_disjoint_arraycopy (74 samples, 0.45%)x86_pmu_enable (40 samples, 0.24%)_ZN13CollectedHeap24common_mem_allocate_initE11KlassHandlemP6Thread (10 samples, 0.06%)_ZN14JNIHandleBlock15allocate_handleEP7oopDesc (6 samples, 0.04%)try_to_wake_up (25 samples, 0.15%)ttwu_do_activate.constprop.93 (6 samples, 0.04%)_ZNK5frame6senderEP11RegisterMap (77 samples, 0.47%)_ZN7Monitor5IWaitEP6Threadl (52 samples, 0.32%)_ZN7Monitor4lockEP6Thread (4 samples, 0.02%)_ZN13ObjectMonitor20TrySpin_VaryDurationEP6Thread (18 samples, 0.11%)perf_event_context_sched_in (8 samples, 0.05%)try_to_compact_pages (5 samples, 0.03%)_ZN9JavaCalls12call_virtualEP9JavaValue6Handle11KlassHandleP6SymbolS5_P6Thread (15,579 samples, 95.30%)_ZN9JavaCalls12call_virtualEP9JavaValue6Handle11KlassHandleP6SymbolS5..do_futex (12 samples, 0.07%)system_call_fastpath (4 samples, 0.02%)_ZN10JavaThread17thread_main_innerEv (15,643 samples, 95.69%)_ZN10JavaThread17thread_main_innerEvInterpreter (15,579 samples, 95.30%)Interpreterupdate_process_times (4 samples, 0.02%)_complete_monitor_locking_Java (148 samples, 0.91%)wake_up_process (4 samples, 0.02%)perf_event_context_sched_in (8 samples, 0.05%)readBytes (438 samples, 2.68%)_new_instance_Java (12 samples, 0.07%)_ZN9JavaCalls12call_virtualEP9JavaValue11KlassHandleP6SymbolS4_P17JavaCallArgumentsP6Thread (15,579 samples, 95.30%)_ZN9JavaCalls12call_virtualEP9JavaValue11KlassHandleP6SymbolS4_P17Jav..extract_buf (8 samples, 0.05%)readBytes (24 samples, 0.15%)do_futex (8 samples, 0.05%)_ZN7Monitor5IWaitEP6Threadl (20 samples, 0.12%)futex_wait_queue_me (4 samples, 0.02%)local_apic_timer_interrupt (6 samples, 0.04%)pthread_cond_wait@@GLIBC_2.3.2 (9 samples, 0.06%)_ZL12thread_entryP10JavaThreadP6Thread (15,579 samples, 95.30%)_ZL12thread_entryP10JavaThreadP6Threadsun/misc/FloatingDecimal$BinaryToASCIIBuffer:.dtoa (9 samples, 0.06%)_ZNK8CodeHeap10find_startEPv (6 samples, 0.04%)x86_pmu_enable (4 samples, 0.02%)x86_pmu_enable (4 samples, 0.02%)_ZN17HandleMarkCleanerD1Ev (4 samples, 0.02%)_ZNK5frame25sender_for_compiled_frameEP11RegisterMap (63 samples, 0.39%)__perf_event_task_sched_in (16 samples, 0.10%)do_futex (17 samples, 0.10%)native_write_msr_safe (4 samples, 0.02%)_ZN7Monitor5ILockEP6Thread (9 samples, 0.06%)_ZN7Monitor28lock_without_safepoint_checkEv (9 samples, 0.06%)finish_task_switch (8 samples, 0.05%)intel_pmu_enable_all (4 samples, 0.02%)__perf_event_task_sched_in (8 samples, 0.05%)local_apic_timer_interrupt (9 samples, 0.06%)smp_apic_timer_interrupt (30 samples, 0.18%)schedule_user (13 samples, 0.08%)_ZN10JfrBackend16is_event_enabledE12TraceEventId (4 samples, 0.02%)sys_futex (32 samples, 0.20%)system_call_fastpath (11 samples, 0.07%)perf_pmu_enable (4 samples, 0.02%)_ZN13CollectedHeap27post_allocation_setup_arrayE11KlassHandleP8HeapWordi (19 samples, 0.12%)java/util/UUID:.toString (137 samples, 0.84%)perf_pmu_enable (4 samples, 0.02%)_ZN7Monitor28lock_without_safepoint_checkEv (4 samples, 0.02%)pthread_cond_wait@@GLIBC_2.3.2 (4 samples, 0.02%)perf_pmu_enable (12 samples, 0.07%)select_task_rq_fair (7 samples, 0.04%)intel_pmu_enable_all (4 samples, 0.02%)_ZN7Monitor4waitEblb (5 samples, 0.03%)system_call_fastpath (61 samples, 0.37%)system_call_fastpath (4 samples, 0.02%)__schedule (10 samples, 0.06%)_ZN19OldToYoungRootsTask5do_itEP13GCTaskManagerj (4 samples, 0.02%)perf_event_context_sched_in (8 samples, 0.05%)alloc_pages_vma (5 samples, 0.03%)finish_task_switch (12 samples, 0.07%)futex_wait_queue_me (54 samples, 0.33%)_ZN7Monitor5ILockEP6Thread (4 samples, 0.02%)com/github/chrishantha/sample/highcpu/HashingWorker:.run (4 samples, 0.02%)retint_careful (8 samples, 0.05%)generic_smp_call_function_single_interrupt (4 samples, 0.02%)schedule (15 samples, 0.09%)hrtimer_wakeup (4 samples, 0.02%)retint_careful (7 samples, 0.04%)__schedule (4 samples, 0.02%)_ZN11StringTable17unlink_or_oops_doEP17BoolObjectClosureP10OopClosurePiS4_ (4 samples, 0.02%)__perf_event_task_sched_in (12 samples, 0.07%)apic_timer_interrupt (4 samples, 0.02%)native_write_msr_safe (4 samples, 0.02%)finish_task_switch (8 samples, 0.05%)x86_pmu_enable (16 samples, 0.10%)perf_pmu_enable (52 samples, 0.32%)do_IRQ (5 samples, 0.03%)_ZN10PSScavenge16invoke_no_policyEv (6 samples, 0.04%)activate_task (6 samples, 0.04%)_ZN13CollectedHeap23allocate_from_tlab_slowE11KlassHandleP6Threadm (14 samples, 0.09%)handle_mm_fault (4 samples, 0.02%)futex_wait (17 samples, 0.10%)_ZN12GCTaskThread3runEv (99 samples, 0.61%)perf_event_context_sched_in (4 samples, 0.02%)_ZN7Monitor28lock_without_safepoint_checkEv (4 samples, 0.02%)_ZN7Monitor5ILockEP6Thread (4 samples, 0.02%)perf_event_context_sched_in (4 samples, 0.02%)__schedule (13 samples, 0.08%)finish_task_switch (4 samples, 0.02%)do_huge_pmd_anonymous_page (5 samples, 0.03%)sun/misc/FloatingDecimal$BinaryToASCIIBuffer:.dtoa (2,921 samples, 17.87%)sun/misc/Fl..__sched_yield (12 samples, 0.07%)pthread_getspecific (14 samples, 0.09%)schedule (4 samples, 0.02%)__schedule (9 samples, 0.06%)sys_futex (9 samples, 0.06%)schedule (4 samples, 0.02%)futex_wait (4 samples, 0.02%)jshort_disjoint_arraycopy (3,008 samples, 18.40%)jshort_disj..alloc_pages_vma (15 samples, 0.09%)wake_futex (28 samples, 0.17%)sys_futex (4 samples, 0.02%)scheduler_tick (8 samples, 0.05%)local_apic_timer_interrupt (7 samples, 0.04%)native_write_msr_safe (4 samples, 0.02%)__schedule (4 samples, 0.02%)apic_timer_interrupt (22 samples, 0.13%)_ZN20WaitForBarrierGCTask5do_itEP13GCTaskManagerj (12 samples, 0.07%)__vdso_gettimeofday (4 samples, 0.02%)native_write_msr_safe (4 samples, 0.02%)_ZN13CollectedHeap23allocate_from_tlab_slowE11KlassHandleP6Threadm (4 samples, 0.02%)x86_pmu_enable (4 samples, 0.02%)perf_pmu_enable (8 samples, 0.05%)sun/security/provider/SHA:.implCompress (47 samples, 0.29%)java/util/UUID:.randomUUID (4 samples, 0.02%)tick_sched_timer (12 samples, 0.07%)_raw_spin_lock_irqsave (4 samples, 0.02%)sys_read (370 samples, 2.26%)futex_wait (70 samples, 0.43%)perf_pmu_enable (4 samples, 0.02%)jlong_disjoint_arraycopy (28 samples, 0.17%)pageblock_pfn_to_page (11 samples, 0.07%)_ZN8VMThread18evaluate_operationEP12VM_Operation (8 samples, 0.05%)native_write_msr_safe (40 samples, 0.24%)sys_futex (17 samples, 0.10%)do_futex (5 samples, 0.03%)intel_pmu_enable_all (52 samples, 0.32%)_raw_spin_lock (4 samples, 0.02%)__vfs_read (331 samples, 2.02%)pthread_cond_wait@@GLIBC_2.3.2 (4 samples, 0.02%)__run_hrtimer (20 samples, 0.12%)update_process_times (12 samples, 0.07%)_ZN20SafepointSynchronize5blockEP10JavaThread (4 samples, 0.02%)futex_wait_queue_me (4 samples, 0.02%)_ZN13ObjectMonitor10ExitEpilogEP6ThreadP12ObjectWaiter (35 samples, 0.21%)__alloc_pages_direct_compact (15 samples, 0.09%)ttwu_do_activate.constprop.93 (8 samples, 0.05%)_ZN11OptoRuntime11new_array_CEP5KlassiP10JavaThread (4 samples, 0.02%)__do_page_fault (5 samples, 0.03%)dequeue_task (9 samples, 0.06%)finish_task_switch (12 samples, 0.07%)generic_smp_call_function_single_interrupt (4 samples, 0.02%)_new_array_nozero_Java (4 samples, 0.02%)perf_event_context_sched_in (12 samples, 0.07%)sun/misc/FloatingDecimal$BinaryToASCIIBuffer:.getChars (235 samples, 1.44%)system_call_fastpath (4 samples, 0.02%)_ZN20ParallelScavengeHeap12mem_allocateEmPb (7 samples, 0.04%)tick_sched_timer (7 samples, 0.04%)intel_pmu_enable_all (4 samples, 0.02%)_ZNK7nmethod9is_zombieEv (6 samples, 0.04%)schedule (59 samples, 0.36%)sys_sched_yield (11 samples, 0.07%)try_to_compact_pages (15 samples, 0.09%)perf_pmu_enable (4 samples, 0.02%)__schedule (8 samples, 0.05%)__schedule (4 samples, 0.02%)__schedule (4 samples, 0.02%)do_futex (61 samples, 0.37%)_ZN13SharedRuntime4dpowEdd (64 samples, 0.39%)[unknown] (458 samples, 2.80%)__GI___mprotect (4 samples, 0.02%)futex_wait_queue_me (16 samples, 0.10%)pthread_cond_wait@@GLIBC_2.3.2 (8 samples, 0.05%)schedule (5 samples, 0.03%)pick_next_task_fair (7 samples, 0.04%)schedule_user (10 samples, 0.06%)intel_pmu_enable_all (4 samples, 0.02%)sys_futex (12 samples, 0.07%)task_tick_fair (4 samples, 0.02%)_ZN13ObjectMonitor11NotRunnableEP6ThreadS1_ (6 samples, 0.04%)system_call_fastpath (12 samples, 0.07%)sys_futex (4 samples, 0.02%)do_futex (4 samples, 0.02%)ttwu_do_activate.constprop.93 (4 samples, 0.02%)finish_task_switch (4 samples, 0.02%)schedule (62 samples, 0.38%)native_write_msr_safe (12 samples, 0.07%)_ZN12MutableSpace12cas_allocateEm (5 samples, 0.03%)__perf_event_enable (4 samples, 0.02%)__lll_lock_wait (4 samples, 0.02%)com/github/chrishantha/sample/highcpu/HashingWorker:.run (7,530 samples, 46.06%)com/github/chrishantha/sample/hi..schedule (4 samples, 0.02%)intel_pmu_enable_all (8 samples, 0.05%)_ZN20ThreadInVMfromNativeD1Ev (4 samples, 0.02%)enqueue_entity (5 samples, 0.03%)perf_pmu_enable (4 samples, 0.02%)_ZN20SafepointSynchronize5blockEP10JavaThread (5 samples, 0.03%)_ZN7Monitor4waitEblb (20 samples, 0.12%)x86_pmu_enable (8 samples, 0.05%)_ZN20ParallelScavengeHeap19failed_mem_allocateEm (8 samples, 0.05%)native_write_msr_safe (8 samples, 0.05%)_ZN10JavaThread44check_safepoint_and_suspend_for_native_transEPS_ (4 samples, 0.02%)_ZN8VMThread3runEv (54 samples, 0.33%)enqueue_task_fair (5 samples, 0.03%)sun/security/provider/NativePRNG$RandomIO:.implNextBytes (625 samples, 3.82%)hrtimer_interrupt (7 samples, 0.04%)futex_wait_queue_me (9 samples, 0.06%)intel_pmu_enable_all (8 samples, 0.05%)__schedule (54 samples, 0.33%)enqueue_task (5 samples, 0.03%)native_write_msr_safe (16 samples, 0.10%)jbyte_arraycopy (4 samples, 0.02%)perf_event_context_sched_in (12 samples, 0.07%)perf_event_context_sched_in (4 samples, 0.02%)futex_wait_queue_me (12 samples, 0.07%)_ZN18CardTableExtension26scavenge_contents_parallelEP16ObjectStartArrayP12MutableSpaceP8HeapWordP18PSPromotionManagerjj (4 samples, 0.02%)futex_wait_queue_me (5 samples, 0.03%)intel_pmu_enable_all (60 samples, 0.37%)__perf_event_enable (4 samples, 0.02%)__run_hrtimer (10 samples, 0.06%)_ZN7Monitor5ILockEP6Thread (4 samples, 0.02%)dequeue_entity (4 samples, 0.02%)schedule (4 samples, 0.02%)wake_up_process (6 samples, 0.04%)_ZN20SafepointSynchronize5blockEP10JavaThread (10 samples, 0.06%)__run_hrtimer (22 samples, 0.13%)hrtimer_wakeup (9 samples, 0.06%)native_write_msr_safe (8 samples, 0.05%)sys_futex (4 samples, 0.02%)Java_java_lang_StrictMath_atan (6 samples, 0.04%)perf_event_context_sched_in (40 samples, 0.24%)_ZN7Monitor5ILockEP6Thread (4 samples, 0.02%)_mix_pool_bytes (56 samples, 0.34%)smp_apic_timer_interrupt (14 samples, 0.09%)_ZN20SafepointSynchronize5beginEv (28 samples, 0.17%)perf_pmu_enable (4 samples, 0.02%)system_call_fastpath (4 samples, 0.02%)futex_wait_queue_me (17 samples, 0.10%)java/math/BigDecimal:.init (1,047 samples, 6.40%)ja..perf_pmu_enable (4 samples, 0.02%)schedule_user (4 samples, 0.02%)x86_pmu_enable (12 samples, 0.07%)_ZN10JavaThread7oops_doEP10OopClosureP10CLDClosureP15CodeBlobClosure (8 samples, 0.05%)schedule (8 samples, 0.05%)enqueue_entity (5 samples, 0.03%)java/io/FileInputStream:.read (449 samples, 2.75%)do_futex (9 samples, 0.06%)java/lang/StrictMath:.atan (662 samples, 4.05%)j..finish_task_switch (4 samples, 0.02%)java/math/BigDecimal:.subtract (14 samples, 0.09%)hrtimer_interrupt (20 samples, 0.12%)__perf_event_task_sched_in (4 samples, 0.02%)futex_wait (59 samples, 0.36%)_ZN10JavaThread3runEv (15,643 samples, 95.69%)_ZN10JavaThread3runEvJVM_Sleep (94 samples, 0.57%)try_to_wake_up (11 samples, 0.07%)do_page_fault (5 samples, 0.03%)intel_pmu_enable_all (16 samples, 0.10%)_ZL4highd (6 samples, 0.04%)jshort_disjoint_arraycopy (11 samples, 0.07%)__schedule (4 samples, 0.02%)com/github/chrishantha/sample/highcpu/MathWorker:.run (7,570 samples, 46.31%)com/github/chrishantha/sample/hi..sha_transform (4 samples, 0.02%)ttwu_do_activate.constprop.93 (5 samples, 0.03%)activate_task (5 samples, 0.03%)__perf_event_task_sched_in (4 samples, 0.02%)jlong_disjoint_arraycopy (101 samples, 0.62%)tick_sched_handle.isra.16 (7 samples, 0.04%)_ZL3lowd (6 samples, 0.04%)system_call_fastpath (46 samples, 0.28%)__schedule (6 samples, 0.04%)intel_pmu_enable_all (12 samples, 0.07%)intel_pmu_enable_all (41 samples, 0.25%)futex_wait (12 samples, 0.07%)jni_GetArrayLength (4 samples, 0.02%)pthread_cond_timedwait@@GLIBC_2.3.2 (17 samples, 0.10%)schedule_user (11 samples, 0.07%)__run_hrtimer (16 samples, 0.10%)[unknown] (12 samples, 0.07%)_ZN13CompileBroker20compiler_thread_loopEv (64 samples, 0.39%)futex_wait_queue_me (4 samples, 0.02%)pthread_cond_timedwait@@GLIBC_2.3.2 (18 samples, 0.11%)system_call_fastpath (55 samples, 0.34%)do_futex (55 samples, 0.34%)do_page_fault (15 samples, 0.09%)futex_wait (4 samples, 0.02%)__vfs_read (11 samples, 0.07%)jatan (592 samples, 3.62%)__perf_event_task_sched_in (4 samples, 0.02%)_ZN13CollectedHeap23allocate_from_tlab_slowE11KlassHandleP6Threadm (7 samples, 0.04%)__perf_event_task_sched_in (8 samples, 0.05%)__perf_event_task_sched_in (40 samples, 0.24%)java/lang/AbstractStringBuilder:.append (120 samples, 0.73%)smp_apic_timer_interrupt (9 samples, 0.06%)__fdget_pos (8 samples, 0.05%)activate_task (4 samples, 0.02%)system_call_fastpath (12 samples, 0.07%)system_call_fastpath (17 samples, 0.10%)futex_wait_queue_me (43 samples, 0.26%)copy_user_enhanced_fast_string (9 samples, 0.06%)do_huge_pmd_anonymous_page (15 samples, 0.09%)__fget_light (4 samples, 0.02%)_ZN9StealTask5do_itEP13GCTaskManagerj (11 samples, 0.07%)system_call_fastpath (4 samples, 0.02%)perf_pmu_enable (4 samples, 0.02%)apic_timer_interrupt (7 samples, 0.04%)perf_pmu_enable (12 samples, 0.07%)finish_task_switch (4 samples, 0.02%)_new_array_Java (5 samples, 0.03%)__perf_event_task_sched_in (12 samples, 0.07%)__do_page_fault (4 samples, 0.02%)rw_verify_area (19 samples, 0.12%)__perf_event_task_sched_in (4 samples, 0.02%)enqueue_task (10 samples, 0.06%)_ZN13ObjectMonitor5enterEP6Thread (140 samples, 0.86%)pthread_cond_wait@@GLIBC_2.3.2 (12 samples, 0.07%)_ZN10JavaThread44check_safepoint_and_suspend_for_native_transEPS_ (4 samples, 0.02%)sha_transform (164 samples, 1.00%)futex_wait (4 samples, 0.02%)_ZN9CodeCache9find_blobEPv (8 samples, 0.05%)futex_wait (4 samples, 0.02%)sys_futex (55 samples, 0.34%)__schedule (4 samples, 0.02%)_ZNK8CodeHeap10find_startEPv (7 samples, 0.04%)futex_wait_queue_me (4 samples, 0.02%)__perf_event_task_sched_in (60 samples, 0.37%)__schedule (8 samples, 0.05%)pthread_cond_timedwait@@GLIBC_2.3.2 (5 samples, 0.03%)sys_futex (4 samples, 0.02%)_ZN8VMThread7executeEP12VM_Operation (5 samples, 0.03%)java/math/BigDecimal:.subtract (14 samples, 0.09%)native_write_msr_safe (60 samples, 0.37%)wake_up_process (12 samples, 0.07%)__perf_event_task_sched_in (4 samples, 0.02%)start_thread (15,819 samples, 96.76%)start_threadsmp_call_function_single_interrupt (4 samples, 0.02%)pthread_cond_wait@@GLIBC_2.3.2 (55 samples, 0.34%)java/io/FileInputStream:.readBytes (446 samples, 2.73%)perf_pmu_enable (12 samples, 0.07%)jlong_disjoint_arraycopy (11 samples, 0.07%)local_apic_timer_interrupt (23 samples, 0.14%)__fget (8 samples, 0.05%)jni_GetArrayLength (5 samples, 0.03%)_ZN13SharedRuntime4dpowEdd (4 samples, 0.02%)__perf_event_task_sched_in (52 samples, 0.32%)__perf_event_task_sched_in (8 samples, 0.05%)enqueue_task_fair (6 samples, 0.04%)native_write_msr_safe (8 samples, 0.05%)x86_pmu_enable (4 samples, 0.02%)perf_event_context_sched_in (16 samples, 0.10%)sys_futex (5 samples, 0.03%)system_call_fastpath (72 samples, 0.44%)schedule (54 samples, 0.33%)_ZNK8CodeHeap10find_startEPv (6 samples, 0.04%)finish_task_switch (4 samples, 0.02%)__perf_event_task_sched_in (4 samples, 0.02%)x86_pmu_enable (12 samples, 0.07%)activate_task (10 samples, 0.06%)_ZN22ParallelTaskTerminator17offer_terminationEP20TerminatorTerminator (5 samples, 0.03%)jbyte_disjoint_arraycopy (10 samples, 0.06%)perf_event_context_sched_in (4 samples, 0.02%)account (6 samples, 0.04%)__perf_event_task_sched_in (41 samples, 0.25%)finish_task_switch (52 samples, 0.32%)_ZN11OptoRuntime14new_instance_CEP5KlassP10JavaThread (12 samples, 0.07%)jni_SetByteArrayRegion (4 samples, 0.02%)_ZN7nmethod21get_deopt_original_pcEPK5frame (11 samples, 0.07%)intel_pmu_enable_all (4 samples, 0.02%)_ZN20SafepointSynchronize5blockEP10JavaThread (4 samples, 0.02%)sun/security/provider/ByteArrayAccess:.b2iBig64 (6 samples, 0.04%)memset (8 samples, 0.05%)__perf_event_task_sched_in (8 samples, 0.05%)_ZN5frame16oops_do_internalEP10OopClosureP10CLDClosureP15CodeBlobClosureP11RegisterMapb (5 samples, 0.03%)_ZN10PSScavenge6invokeEv (8 samples, 0.05%)java/math/BigDecimal:.init (10 samples, 0.06%)pthread_cond_wait@@GLIBC_2.3.2 (4 samples, 0.02%)hrtimer_interrupt (4 samples, 0.02%)run_timer_softirq (5 samples, 0.03%)apic_timer_interrupt (11 samples, 0.07%)activate_task (5 samples, 0.03%)schedule (4 samples, 0.02%)_ZL10java_startP6Thread (15,819 samples, 96.76%)_ZL10java_startP6Threadextract_buf (297 samples, 1.82%)page_fault (15 samples, 0.09%)perf_pmu_enable (4 samples, 0.02%)extract_entropy_user (316 samples, 1.93%)sys_read (12 samples, 0.07%)_ZN7Monitor4waitEblb (58 samples, 0.35%)finish_task_switch (4 samples, 0.02%)smp_apic_timer_interrupt (19 samples, 0.12%)_ZN9OopMapSet19update_register_mapEPK5frameP11RegisterMap (21 samples, 0.13%)futex_wait (9 samples, 0.06%)finish_task_switch (4 samples, 0.02%)pthread_cond_wait@@GLIBC_2.3.2 (5 samples, 0.03%)pthread_cond_wait@@GLIBC_2.3.2 (4 samples, 0.02%)_ZN7Monitor28lock_without_safepoint_checkEv (4 samples, 0.02%)group_sched_in (4 samples, 0.02%)finish_task_switch (8 samples, 0.05%)_ZN15ThreadRootsTask5do_itEP13GCTaskManagerj (8 samples, 0.05%)_ZN13ObjectMonitor11NotRunnableEP6ThreadS1_ (5 samples, 0.03%)system_call_fastpath (5 samples, 0.03%)urandom_read (329 samples, 2.01%)__perf_event_task_sched_in (4 samples, 0.02%)_ZN20SafepointSynchronize5blockEP10JavaThread (4 samples, 0.02%)__mix_pool_bytes (59 samples, 0.36%)intel_pmu_enable_all (4 samples, 0.02%)finish_task_switch (4 samples, 0.02%)_ZN7Monitor5IWaitEP6Threadl (5 samples, 0.03%)__schedule (10 samples, 0.06%)x86_pmu_enable (41 samples, 0.25%)jshort_disjoint_arraycopy (15 samples, 0.09%)native_write_msr_safe (12 samples, 0.07%)_ZN13ObjectMonitor20TrySpin_VaryDurationEP6Thread (15 samples, 0.09%)retint_careful (10 samples, 0.06%)finish_task_switch (60 samples, 0.37%)rwsem_down_write_failed (4 samples, 0.02%)finish_task_switch (8 samples, 0.05%)futex_wait_queue_me (64 samples, 0.39%)_ZN7Monitor4waitEblb (4 samples, 0.02%)x86_pmu_enable (4 samples, 0.02%)finish_task_switch (4 samples, 0.02%)system_call_fastpath (4 samples, 0.02%)schedule_user (8 samples, 0.05%)call_function_single_interrupt (4 samples, 0.02%)native_write_msr_safe (8 samples, 0.05%)perf_pmu_enable (8 samples, 0.05%)intel_pmu_enable_all (8 samples, 0.05%)wake_up_state (27 samples, 0.17%)system_call_after_swapgs (5 samples, 0.03%)_ZN13SharedRuntime28complete_monitor_unlocking_CEP7oopDescP9BasicLock (38 samples, 0.23%)__schedule (17 samples, 0.10%)__schedule (4 samples, 0.02%)intel_pmu_enable_all (12 samples, 0.07%)

Summary


When we compare the Flame Graphs, we can see the importance of Java Mixed Mode Flame Graphs. Since there are system code paths in addition to Java methods, we can clearly see all CPU consuming functions.  For example, in above Mixed Mode Flame Graph, we can see HashingWorker threads also consume more CPU. With Flame Graph generated with JFR, we see that MathWorker threads consume more CPU. Please see the flame-graphs in my GitHub repo.

With perf_events, we can do system profiling. The Java "-XX:+PreserveFramePointer" JVM argument and perf-map-agent help to create the Java Symbol Table for perf. The CPU Mixed-Mode Flame graphs can nicely show all CPU consumers in one visualization.

Comments

Popular posts from this blog

Finding how many processors

I wanted to find out the processor details in my laptop and I found out that there are several ways to check. For example, see The RedHat community discussion on  Figuring out CPUs and Sockets . In this blog post, I'm listing few commands to find out details about CPUs. I'm using Ubuntu in my Lenovo ThinkPad T530 laptop and following commands should be working any Linux system. Display information about CPU architecture $ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 2 Core(s) per socket: 2 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 58 Model name: Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz Stepping: 9 CPU MHz: 1199.988 CPU max MHz: 3600.0000 CPU min MHz: 1200.0000 BogoMIPS: 5787.1...

Java Mission Control & Java Flight Recorder

Last year, I got two opportunities to talk about Java Mission Control & Java Flight Recorder. I first talked about " Using Java Mission Control & Java Flight Recorder " as an internal tech talk at WSO2 . I must thank Srinath for giving me that opportunity. After that, Prabath also invited me to do a talk at Java Colombo Meetup . Prabath, Thank you for inviting me and giving me the opportunity to talk at the Java Colombo Meetup! I'm also very excited to see that Marcus Hirt , the Team Lead for Java Mission Control has mentioned about the Java Colombo Meetup in his blog post: " My Favourite JMC Quotes ". It's so nice to see "Sri Lanka" was mentioned in his blog post! :) From Marcus' Blog Here are the slides used at the meetup. Java Colombo Meetup: Java Mission Control & Java Flight Recorder from Isuru Perera Marcus Hirt's blog posts really helped me to understand JMC & JFR concepts and his tutorials were very helpful...

Flame Graphs with Java Flight Recordings

Flame Graphs Brendon D. Gregg , who is a computer performance analyst , has created  Flame Graphs to visualize stack traces in an interactive way. You must watch his talk at USENIX/LISA13 , titled Blazing Performance with Flame Graphs , which explains Flame Graphs in detail. There can be different types of flame graphs and I'm focusing on  CPU Flame Graphs  with Java in this blog post. Please look at the Flame Graphs Description  to understand the Flame Graph visualization. CPU Flame Graphs and Java Stack Traces As  Brendon  mentioned in his talk, understanding why CPUs are busy is very important when analyzing performance.  CPU Flame Graphs  is a good way to identify hot methods from sampled stack traces. In order to generate CPU Flame Graphs for Java Stack Traces , we need a way to get sample stack traces. Brendon has given examples to use jstack  and Google's lightweight-java-profiler . Please refer to his perl program on g...