RFR: 8245000: Windows GDI functions don't support large pages
Stefan Karlsson
stefan.karlsson at oracle.com
Mon May 18 08:17:31 UTC 2020
On 2020-05-15 20:26, Kim Barrett wrote:
>> On May 15, 2020, at 1:47 PM, Stefan Karlsson <stefan.karlsson at oracle.com> wrote:
>>
>> Hi all,
>>
>> Please review this patch to turn off -XX:+UseLargePages as long as Windows GDI functions don't work with large pages.
>>
>> https://cr.openjdk.java.net/~stefank/8245000/webrev.00.cleanup
>> https://cr.openjdk.java.net/~stefank/8245000/webrev.01.workaround
>> https://cr.openjdk.java.net/~stefank/8245000/webrev.all/
> A couple of things that may or may not need to be addressed.
> Otherwise, looks good to me.
>
> ------------------------------------------------------------------------------
> src/hotspot/os/windows/os_windows.cpp
> 3118 if (_large_page_size > default_page_size) {
> ...
> 3124 UseLargePages = _large_page_size != 0;
>
> Should UseLargePages be true if _large_page_size > 0 but < default_page_size?
> (Assuming that's actually possible, but I see nothing in this code
> that makes that impossible. The OS might...)
>
> The old code did the same thing, so if it's a bug, it's been there all along.
The code that sets up _lage_page_size uses GetLargePageMinimum, which
sets the size to the system's large page size or 0. It's not explicitly
stated that it's not < default_page_size (4 * 1024), but it would really
surprise me if it was:
https://docs.microsoft.com/en-us/windows/win32/api/memoryapi/nf-memoryapi-getlargepageminimum
It also uses LargePageSizeInBytes, but only if it is larger than, and
aligned to, the given GetLargePageMinimum value.
So, I think we are OK here.
>
> ------------------------------------------------------------------------------
> src/hotspot/os/windows/os_windows.cpp
> 2920 if (!gdi_can_use_split_reservation_memory(UseLargePages, min_interleave_granularity)) {
> 2921 WARN("Windows GDI cannot handle split reservations.");
> 2922 WARN("...Ignoring UseNUMAInterleaving flag.");
>
> If the failure is due to UseLargePages, it might be worth mentioning
> that in the warning.
We've already done the large pages checks when this code runs. If we
can't use large pages, the UseLargePages flag will have been turned off
at this point.
Thanks,
StefanK
>
> ------------------------------------------------------------------------------
>
More information about the hotspot-dev
mailing list