RFR: JDK-8303051: Stop saving 5 chunks in each ChunkPool [v4]

Justin King jcking at openjdk.org
Thu Feb 23 15:14:07 UTC 2023


On Thu, 23 Feb 2023 10:51:32 GMT, Johan Sjölen <jsjolen at openjdk.org> wrote:

>> In the 4 pre-defined ChunkPools the pruner save 5 chunks for re-use later in the program. The pruner runs every 5 seconds and saves the first 5 chunks that were last freed and put into the pool. In other words: The lifetime of these 5 chunks are indeterminate, we don't know when these will be freed. This is a problem, because these chunks are allocated with os::malloc(). We might be clobbering our underlying malloc's capacity to shrink its own arena sizes because of the placement of these chunks, and it would be very difficult for us to know whether this is the case.
>> 
>> I suggest that we stop saving these 4*5 chunks and always remove all free chunks when cleaning the pools.
>> 
>> Passes Arena gtests, running tier1.
>
> Johan Sjölen has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Forgot to set _first

I question whether we should be saving any chunks at all in a central cache. Most malloc have per thread caches. By allocating in one thread and freeing in another thread whose sole purpose is deallocation we are kind of defeating the per thread caches purpose.

We should benchmark just removing the cache entirely in the future. In the distant past this could have been useful, but I question it now.

-------------

PR: https://git.openjdk.org/jdk/pull/12710


More information about the hotspot-runtime-dev mailing list