RFR: 8366780: Enhance ProcSmapsParser and Printer to handle THPeligible field

Stefan Johansson sjohanss at openjdk.org
Fri Sep 5 06:26:11 UTC 2025


On Thu, 4 Sep 2025 17:56:56 GMT, Albert Mingkun Yang <ayang at openjdk.org> wrote:

>> Please review this enhancement to the smaps parser and printer.
>> 
>> **Summary**
>> While working on [JDK-8366434](https://bugs.openjdk.org/browse/JDK-8366434) one idea for a test to verify if the heap CAN be backed by transparent huge pages (THP) was to use PrintMemoryMapAtExit and look at the tags printed for JAVAHEAP.
>> 
>> It turns out this worked in most cases but on systems where the THP mode is configured as 'always' but there are no huge pages available for use, the JAVAHEAP line will not show any indication that it can be backed by huge pages.
>> 
>> For this to be possible we need to parse the field THPeligible as well and include this information in the printouts. With this change we now parse the THPeligible field and tag mapping that are THP eligible with `thpel`. We skip this tag for mappings that are tagged with `thpad` (madvised with MADV_HUGEPAGE) to avoid too much THP info on one mapping.
>> 
>> **Testing**
>> * Mach5 testing with the existing test showed a need to update the regex for verifying Metaspace and the fix have been tested manually locally as well as in Mach5.
>
> src/hotspot/os/linux/procMapsParser.hpp line 52:
> 
>> 50:   size_t anonhugepages;
>> 51:   size_t swap;
>> 52:   size_t thpeligible;
> 
> Why `size`? Its name sounds like `bool`?

Yes, it works like a `bool` but I represented it as a number to simply do the parsing similar to the other fields, but I guess I could handle it more like how `VmFlags` are handled.

The the parsing would then look like this, would you prefer that:

if (strncmp(_line, "THPeligible:", 12) == 0) {
  out.thpeligible = ::strstr(_line + 12, "1") != nullptr;
  return;
}


I think I would =)

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/27098#discussion_r2324211968


More information about the serviceability-dev mailing list