On Thu, 4 Sep 2025 17:56:56 GMT, Albert Mingkun Yang <ay...@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

Reply via email to