remove INCLUDE_NMT?

Aleksei Voitylov aleksei.voitylov at bell-sw.com
Fri Jan 21 09:06:07 UTC 2022


From a point of view of Minimal VM, based on these numbers I do not
object to unconditional inclusion of NMT.

I still believe we should not go down this path (as in making more
optional technologies unconditional) far too long.

On 21/01/2022 11:39, Thomas Stüfe wrote:
> Hi Alexei,
>
> I built minimal with and without nmt (linux x64). Libjvm file size
> increased from 5.26M -> 5.33M, an increase of 74k.
>
> I tried to measure footprint (HelloWorld with fixed preallocated heap
> and metaspace and AlwaysPreTouch) but could not see a consistent
> result. Numbers were pretty stable for multiple runs and fluctuated
> 100M+-300k, but with no discernable pattern. So whatever NMT costs at
> runtime is hidden by noise.
>
> In theory, having NMT in the libjvm means you pay 64/32 KB on
> 64/32bit platforms for the NMT preinit hash table. That is malloced at
> startup and the only thing that cannot be avoided. The rest of the
> data is or can easily be allocated on demand. Note that the reason the
> preinit hash table was not showing up on RSS may be that even though
> it's malloced it does usually not get used much, so it remains untouched.
>
> Are these numbers worrisome to you? After reading all answers, I am
> leaning toward removing INCLUDE_NMT, but am unemotional. It is mainly
> a cleanup thing, and we could do that differently.
>
> Cheers, Thomas
>
> On Thu, Jan 20, 2022 at 10:17 PM Aleksei Voitylov
> <aleksei.voitylov at bell-sw.com <mailto:aleksei.voitylov at bell-sw.com>>
> wrote:
>
>     Hi,
>
>     we still build and use Minimal in production for constrained
>     environments. What is the impact of unconditional inclusion of NMT in
>     terms of static footprint?
>
>     If it is negligible, I'm fine with it becoming unconditional. If not,
>     maybe it's best to have some weak guarantees where we fix such configs
>     occasionally.
>
>     -Aleksei
>
>     On 20/01/2022 09:58, 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 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?
>     >
>     > Thanks, Thomas
>


More information about the hotspot-runtime-dev mailing list