• Sub-task
    • Resolution: Fixed
    • P4
    • 17
    • 14
    • hotspot
    • None
    • b23


      Currently the Node allocation methods in CONFIG are static, which makes per-CHT node allocators very awkward to do.

      With the changes in JDK-8017163 per node allocations are necessary to allow fine granular allocation and freeing of memory per CHT/remembered set.

      I.e. the remembered set implements a per remembered set Arena-style allocator for Nodes because malloc/free is way too slow. Measurements have shown deallocation time measurements in seconds in total, and 100+ms per CHT without that, which is unacceptable.

      One option is using an extra reference in the Node as a workaround (the problem there is that it "wastes" 25% of space in the VALUE for that). This is a huge problem, because the space used for Nodes is already larger than for the actual remembered sets in some cases; there is also a new remembered set container type that encodes remembered set entries into that pointer which can be in use a lot).

      Another would be storing somewhere else which allocator is responsible for a given node, which would be even slower and take even more memory.

      This change suggests to pass an allocator ("context") instance to the CHT instead of the static at initialization, which is passed on to the allocate/free_node methods verbatim.


        Issue Links



              iwalulya Ivan Walulya
              rehn Robbin Ehn
              0 Vote for this issue
              3 Start watching this issue