Messages in this thread | | | From | Steve MacLean <> | Subject | RE: [EXTERNAL] Re: [PATCH v4] perf inject --jit: Remove //anon mmap events | Date | Fri, 12 Jun 2020 19:00:13 +0000 |
| |
>>> Hi Ian, >>> >>>> I tried this as well with latest perf/core. The difference is that >>> unresolved addresses currently look like: >>> >>> 0.00% java [JIT] tid 221782 [.] 0x0000ffff451499a4 >>> 0.00% java [JIT] tid 221782 [.] 0x0000ffff4514f3e8 >>> 0.00% java [JIT] tid 221782 [.] 0x0000ffff45149394 >>> >>> But after Steve's patch this becomes: >>> >>> 0.00% java [unknown] [.] 0x0000ffff58557d14 >>> 0.00% java [unknown] [.] 0x0000ffff785c03b4 >>> 0.00% java [unknown] [.] 0x0000ffff58386520 >>> >>> I couldn't see any events that were symbolised before but are no >>> longer symbolised after this patch. >> >> I see this, thanks for digging into the explanation! Were you able to >> get a test case where the unknowns went down? For example, by forcing >> the code cache size to be small? This is the result I'd expect to see. > >I tried the same Dacapo benchmark as you with different values of InitialCodeCacheSize and grepped for -e '\[unknown\]' -e '\[JIT\]'. > > Base Patched > 100M 338 373 > 50M 333 315 > 25M 323 368 > 15M 1238 309 > 10M 2600 333 > 1M 6035 337 > >This looks fairly convincing to me: the cliff at 15M is where the code cache starts needing to be enlarged. >
Removing the anonymous mappings causes a small regression. Specifically, the reporting of the module name goes from "[JIT] tid <tid>" to "[unknown]". This occurs when the JIT fails to report memory used in jitdump before it is used.
However there is also confirmation that JAVA does see the reported issue when using a small code cache. The current patch resolves the issue in this case.
I see two options:
+ Accept the regression. Since this is a regression for a jit dump reporting synchronization error, this may be a reasonable option.
+ Design a more complicated patch. Either + Only strip parts of // anon mmap events overlapping existing jitted-<pid>-<code_index>.so mmap events. + Only strip parts of // anon mmap events overlapping prior // anon mmap events
Any opinions?
| |