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