remove INCLUDE_NMT?

daniel.daugherty at oracle.com daniel.daugherty at oracle.com
Thu Jan 20 14:58:48 UTC 2022


On 1/20/22 7:48 AM, David Holmes wrote:
> On 20/01/2022 6:13 pm, Thomas Stüfe wrote:
>> Hi David,
>>
>> On Thu, Jan 20, 2022 at 8:22 AM David Holmes <david.holmes at oracle.com 
>> <mailto:david.holmes at oracle.com>> wrote:
>>
>>     Hi Thomas,
>>
>>     On 20/01/2022 4:58 pm, Thomas Stüfe wrote:
>>      > Hi,
>>      >
>>      > we have NMT, and NMT can be disabled at build time. It can also
>>     be disabled
>>      > at runtime. NMT disabling at build time causes INCLUDE_NMT to be
>>     false.
>>      >
>>      > So we have four scenarios:
>>      >
>>      > 1 nmt disabled at build (minimal VM)
>>      > 2 nmt enabled, off
>>      > 3 nmt enabled, summary mode
>>      > 4 nmt enabled, detail mode
>>      >
>>      > Removing (1) would simplify code and be one less configuration to
>>     test. Do
>>      > we really need the ability to exclude NMT from build? We have 
>> other
>>      > facilities which are not strictly necessary either but which we
>>     cannot
>>      > disable, e.g. UL. So it feels a bit arbitrary to take that much
>>     care for
>>      > NMT. Was there a reason for that?
>>
>>     It comes from the Compact Profiles work in JDK 8 and the 
>> MinimalVM. I
>>     would not put UL in the same category as NMT as UL is far more
>>     generally
>>     useful even in a MinimalVM (though UL did not exist in 8).
>>
>>
>> Okay, fair point. I did not know about Compact Profiles.
>>
>>      > It only matters for minimal builds, since I don't know any real
>>     VM out
>>      > there which does not come with NMT.
>>      >
>>      > NMT comes with a few static data, but those are only a few KB and
>>     we could
>>      > instead allocate them on demand. NMT is not difficult to port
>>     either, which
>>      > would be another reason to keep it optional.
>>      >
>>      > What do you think?
>>
>>     I think you always need NMT present for your changes in 
>> JDK-8277822 to
>>     be valid! :)
>>
>>
>> Well, not necessarily. You lose fences in compact debug builds, but 
>> other than that, it still works.
>
> ?? But you removed the os.cpp logic for guarded memory, relying on NMT 
> to do that, and NMT may not be present.
>
> David
> -----
>
>>
>>     I don't know who, if anyone, uses a minimal VM these days. If the 
>> NMT
>>     code doesn't add much to the disk or memory footprint then I 
>> think we
>>     could decide to make it non-optional.
>>
>>
>> Let's hear others. It is not that important.

I like the idea of one less build configuration!

I think we need to hear from Zhengyu (original NMT author) and Aleksey 
Shiplev
(he often fixes Minimal build failures). If this idea moves forward to a PR,
then make sure the Build Team is included on the review. There maybe some
unexpected complications there...

Dan



>> I was mainly eyeing the stub interface to MemTracker for 
>> INCLUDE_NMT=false, because I routinely forget about that one when 
>> changing NMT and then break the minimal build.
>>
>> Thanks, Thomas
>>
>>     Cheers,
>>     David
>>     -----
>>
>>      > Thanks, Thomas
>>



More information about the hotspot-runtime-dev mailing list