review request for 7142641: -Xshared:on fails on ARM
Daniel D. Daugherty
daniel.daugherty at oracle.com
Tue Feb 28 23:46:52 UTC 2012
Wow! Ya learn something new every day!
Thanks for the background info. And you can count me as
a reviewer...
Since change affects all Linuxes, you should move the
bug to jvm/hotspot/runtime_cds...
Dan
On 2/28/12 4:43 PM, Dean Long wrote:
> Hi Dan,
>
> yes, I was concerned about that as well. But MAP_SHARED isn't
> actually needed to share read-only pages. If you trace an app's
> startup using "strace" you can see that the dynamic linker maps shared
> libraries such as libc with MAP_PRIVATE. Multiple processes still
> share those pages through the page cache. Furthermore, the linux mmap
> implementation turns off the shared flag if the file was opened
> read-only (but unfortunately it turns off the flag only after
> enforcing the cache coloring constraints.)
>
> dl
>
> On 2/28/2012 2:40 PM, Daniel D. Daugherty wrote:
>> Dean,
>>
>> I'm confused... I thought mapping the read-only CDS archive pages as
>> "shared" permits those pages to be shared by other java processes that
>> are also using the CDS archive...
>>
>> Dan
>>
>> On 2/28/12 3:05 PM, Dean Long wrote:
>>> http://cr.openjdk.java.net/~dlong/7142641/webrev.0/
>>> Summary of changes: 3 lines changed: 0 ins; 2 del; 1 mod; 5538 unchg
>>>
>>> The Class Data Sharing file is mapped "shared" on linux, which
>>> places extra constraints on which virtual address a file offset can
>>> use. This is to ensure consistency on certain platforms with
>>> aliasing caches. However as the CDS file is opened read-only,
>>> mapping it "shared" has no benefit and can cause the mmap to fail.
>>> The simplest fix is to change the mapping to "private".
>>>
>>> Tested on linux arm platform with aliasing cache. Installed CDS
>>> with -Xshare:dump then ran through some vm tests as a sanity check.
>>>
>>> This bug is on the 7u4 watch list.
>>>
>>> dl
More information about the hotspot-gc-dev
mailing list