lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 12 Jun 2020 19:00:13 +0000
From:   Steve MacLean <Steve.MacLean@...rosoft.com>
To:     Nick Gasson <nick.gasson@....com>, Ian Rogers <irogers@...gle.com>
CC:     Steve MacLean <steve.maclean@...ux.microsoft.com>,
        Peter Zijlstra <peterz@...radead.org>,
        Ingo Molnar <mingo@...hat.com>,
        Arnaldo Carvalho de Melo <acme@...nel.org>,
        Mark Rutland <mark.rutland@....com>,
        Alexander Shishkin <alexander.shishkin@...ux.intel.com>,
        Jiri Olsa <jolsa@...hat.com>,
        Namhyung Kim <namhyung@...nel.org>,
        Stephane Eranian <eranian@...gle.com>,
        LKML <linux-kernel@...r.kernel.org>
Subject: RE: [EXTERNAL] Re: [PATCH v4] perf inject --jit: Remove //anon mmap
 events

>>> 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?

Powered by blists - more mailing lists