[ OpenJDK 16 and perfasm]
Denis Gabaydulin
gabaden at gmail.com
Fri May 28 07:29:34 UTC 2021
Hi, folks! After migrating from JDK 15 to JDK 16 I figure out that perform
profiler doesn't work for me (was working with JDK 15). Now, I can't see
assembler instructions in the output logs. Now the log looks like.
...[Hottest Region
1]..............................................................................
c2, level 4,
org.sherman.benchmark.java.jmh_generated.IntersectionBenchmark_hasIntersectionVector_jmhTest::hasIntersectionVector_thrpt_jmhStub,
version 1277 (67 bytes)
; -
jdk.incubator.vector.Int128Vector::reduceLanesToLong at 2 (line 323)
; -
org.sherman.interview.vector.ArrayUtils::handleChunk at 17 (line 71)
; -
org.sherman.interview.vector.ArrayUtils::hasIntersectionVector at 110 (line 51)
; -
org.sherman.benchmark.java.IntersectionBenchmark::hasIntersectionVector at 8
(line 38)
; -
org.sherman.benchmark.java.jmh_generated.IntersectionBenchmark_hasIntersectionVector_jmhTest::hasIntersectionVector_thrpt_jmhStub at 17
(line 158)
0x00007f8f73eb4f58: d233 d2c5 | fa6f e2c4 | e259 02e2 | c4e2
5902 | e4c5 f96e | dac5 d9fe | e3c5 f97e
0x00007f8f73eb4f74: ;*iload {reexecute=0 rethrow=0 return_oop=0}
; -
org.sherman.interview.vector.ArrayUtils::hasIntersectionVector at 78 (line 47)
; -
org.sherman.benchmark.java.IntersectionBenchmark::hasIntersectionVector at 8
(line 38)
; -
org.sherman.benchmark.java.jmh_generated.IntersectionBenchmark_hasIntersectionVector_jmhTest::hasIntersectionVector_thrpt_jmhStub at 17
(line 158)
In JDK 15 the asm instructions were in place.
....[Hottest Region
1]..............................................................................
c2, level 4,
org.sherman.benchmark.java.generated.ForeignMemoryBenchmark_putLongForeign_jmhTest::putLongForeign_thrpt_jmhStub,
version 774 (291 bytes)
0x00007fb35c8238ad: movzbl 0x94(%rdx),%r10d ;
implicit exception: dispatches to 0x00007fb35c823d98
;*getfield isDone {reexecute=0 rethrow=0 return_oop=0}
; -
org.sherman.benchmark.java.generated.ForeignMemoryBenchmark_putLongForeign_jmhTest::putLongForeign_thrpt_jmhStub at 27
(line 145)
0x00007fb35c8238b5: mov $0x1,%ebp
0x00007fb35c8238ba: test %r10d,%r10d
╭ 0x00007fb35c8238bd: jne 0x7fb35c8239fc
What I've checked.
1). The installation of libhsdis0-fcml library.
2). Link to the library in the JDK lib path.
/usr/lib/jvm/openjdk-16/lib/hsdis-amd64.so ->
/usr/lib/x86_64-linux-gnu/libhsdis.so.0
3). Flags are set in the jmh log.
usr/lib/jvm/java-16-openjdk-amd64/bin/java, --enable-preview,
--add-modules=jdk.incubator.vector, -XX:+UnlockDiagnosticVMOptions,
-XX:+LogCompilation, -XX:LogFile=/tmp/jmh2086304793742034216hslog,
-XX:+PrintAssembly, -XX:+PrintInterpreter, -XX:+PrintNMethods,
-XX:+PrintNativeNMethods, -XX:+PrintSignatureHandlers,
-XX:+PrintAdapterHandlers, -XX:+PrintStubCode
4). Set the minimal hot threshold (-prof perfasm:hotThreshold=0.01)
But the result hasn't changed :-(
How can I fix the problem?
More information about the jmh-dev
mailing list