RFR: JDK-8296764 NMT: reduce loads in os::malloc
Thomas Stuefe
stuefe at openjdk.org
Fri Nov 11 05:54:30 UTC 2022
On Thu, 10 Nov 2022 23:31:38 GMT, Ioi Lam <iklam at openjdk.org> wrote:
>> We read the NMT level at every ps::malloc/realloc/free etc, even if NMT is off. That is unavoidable. But we also read a second variable that shadows the NMT level `_nmt_was_initialized`. That state is synonymous with NMT level "unknown," so there is no need for this second load.
>>
>> Furthermore, NMT level is volatile. That had been necessary in older times since we used to shut down NMT on resource exhaustion. But since [JDK-8256844](https://bugs.openjdk.org/browse/JDK-8256844), NMT level is fixed at initialization, so we can remove the volatile specifier.
>>
>> Patch
>> - removes `_nmt_was_initialized` and redirects it to `MemTracker::is_initialized()`, which gets inlined to a load of NMT level.
>> - makes NMT level non-volatile
>> - removes _is_nmt_env_valid, which had been dead code
>
> test/hotspot/gtest/nmt/test_nmtpreinit.cpp line 116:
>
>> 114: }
>> 115: void test_post() {
>> 116: assert(!MemTracker::is_initialized() == false,
>
> Hmm, I am confused by the double negation :-)
:-) Right, I'll fix it
-------------
PR: https://git.openjdk.org/jdk/pull/11080
More information about the hotspot-runtime-dev
mailing list