DTrace asm profiler for Mac OS X

Henri Tremblay henri.tremblay at gmail.com
Wed Jan 17 12:58:40 UTC 2018


Well found! It seems much better.

Then, it still not found lines. I thought JMH was adding the correct
PrintAssembly flags when forking. But the issue seems to be similar with
the warning I had for perfasm.

ERROR: No address lines detected in assembly capture, make sure your JDK is
PrintAssembly-enabled:
    https://wiki.openjdk.java.net/display/HotSpot/PrintAssembly

Perf output processed (skipped 2.531 seconds):
 Column 1: sampled_pc (11033 events)

Hottest code regions (>10.00% "sampled_pc" events):

....[Hottest Region
1]..............................................................................
[unknown], [unknown] (231 bytes)

 <no assembly is recorded, native region>
....................................................................................................
 22.54%  <total for region 1>

....[Hottest Region
2]..............................................................................
[unknown], [unknown] (134 bytes)

 <no assembly is recorded, native region>
....................................................................................................
 11.31%  <total for region 2>

....[Hottest Region
3]..............................................................................
[unknown], [unknown] (41 bytes)

 <no assembly is recorded, native region>
....................................................................................................
 10.39%  <total for region 3>

....[Hottest Region
4]..............................................................................
[unknown], [unknown] (417 bytes)

 <no assembly is recorded, native region>
....................................................................................................
 10.27%  <total for region 4>

....[Hottest
Regions]...............................................................................
 22.54%  [unknown]  [unknown] (231 bytes)
 11.31%  [unknown]  [unknown] (134 bytes)
 10.39%  [unknown]  [unknown] (41 bytes)
 10.27%  [unknown]  [unknown] (417 bytes)
  8.45%  [unknown]  [unknown] (396 bytes)
  5.71%  [unknown]  [unknown] (43 bytes)
  5.66%  [unknown]  [unknown] (55 bytes)
  5.45%  [unknown]  [unknown] (84 bytes)
  4.17%  [unknown]  [unknown] (209 bytes)
  2.47%  [unknown]  [unknown] (71 bytes)
  2.12%  [unknown]  [unknown] (28 bytes)
  2.04%  [unknown]  [unknown] (28 bytes)
  1.63%  [unknown]  [unknown] (170 bytes)
  0.95%  [unknown]  [unknown] (86 bytes)
  0.89%  [unknown]  [unknown] (5 bytes)
  0.83%  [unknown]  [unknown] (127 bytes)
  0.81%  [unknown]  [unknown] (0 bytes)
  0.55%  [unknown]  [unknown] (46 bytes)
  0.44%  [unknown]  [unknown] (71 bytes)
  0.41%  [unknown]  [unknown] (257 bytes)
  2.91%  <...other 73 warm regions...>
....................................................................................................
 99.99%  <totals>

....[Hottest Methods (after
inlining)]..............................................................
 99.99%  [unknown]  [unknown]
....................................................................................................
 99.99%  <totals>

....[Distribution by
Source]........................................................................
 99.99%  [unknown]
....................................................................................................
 99.99%  <totals>



# Run complete. Total time: 00:00:18

Benchmark                                          (implementation)
(readRatio)  (tableSize)   Mode  Cnt         Score         Error  Units
ConcurrentMapThroughput.randomGetPutRemove       NonBlockingHashMap
   50       100000  thrpt    6  22470630.498 ± 3730613.043  ops/s
ConcurrentMapThroughput.randomGetPutRemove:·asm  NonBlockingHashMap
   50       100000  thrpt                NaN                  ---
ConcurrentMapThroughput.randomGetPutRemove        ConcurrentHashMap
   50       100000  thrpt    6  23411000.106 ± 1960758.197  ops/s
ConcurrentMapThroughput.randomGetPutRemove:·asm   ConcurrentHashMap
   50       100000  thrpt                NaN                  ---

On 17 January 2018 at 07:20, Aleksey Shipilev <shade at redhat.com> wrote:

> On 01/14/2018 04:24 PM, Vsevolod Tolstopyatov wrote:
> > I have limited access to different versions of Mac OS X, but it seems
> that in some minor updates
> > DTrace works with SIP enabled.
> > So as solution I'd suggest to check SIP status on profiler start (via
> "csrutil status") and print
> > warning if it's enabled or just clarify it in javadoc. It's up to Alexey
> to decide what approach is
> > preferable in JMH
>
> So, perf* profiler print warning messages when then number of samples is
> suspiciously low. I think
> dtraceasm profiler should do the same, and clearly say what the user is
> supposed to do:
>
>  WARNING: The perf event count is suspiciously low (" + sum + "). The
> performance data might be
>  inaccurate or misleading. Try to do the profiling again, or tune up the
> sampling frequency.
>  With some profilers on Mac OS X, System Integrity Protection (SIP) may
> prevent profiling.
>  In such case, temporarily disabling SIP with 'csrutil disable' might help.
>
> I'll add this to the patch myself.
>
> I can push this without my own testing, hoping that external people
> validated this. OpenJDK rules
> require the patch to be hosted on OpenJDK infra to get accepted, so,
> Vsevolod, can you please post
> the recent version of the patch inline here?
>
> Thanks
> -Aleksey
>
>
>


More information about the jmh-dev mailing list