RFR: 8306843: JVMTI tag map extremely slow after JDK-8292741

Serguei Spitsyn sspitsyn at openjdk.org
Fri May 5 02:23:14 UTC 2023


On Thu, 4 May 2023 22:32:36 GMT, Coleen Phillimore <coleenp at openjdk.org> wrote:

> The ResourceHashtable conversion for JDK-8292741 didn't add the resizing code.  The old hashtable code was tuned for resizing in anticipation of large hashtables for JVMTI tags.  This patch ports over the old hashtable resizing code.  It also adds a ResourceHashtable::put_fast() function that prepends to the bucket list, which is also reclaims the performance of the old hashtable for this test with 10M tags.  The ResourceHashtable put function is really a put_if_absent. This can be cleaned up in a future change.  Also, the remove function needed a lambda to destroy the WeakHandle, since resizing requires copying entries.
> 
> Tested with JVMTI and JDI tests locally, and tier1-4 tests.

Thank you fore taking care about these performance issue!
I've posted a couple of comments but am still looking at it.
It is hard to make sure the changes are fully correct.

src/hotspot/share/utilities/resourceHash.hpp line 234:

> 232:     if (node != nullptr) {
> 233:       *ptr = node->_next;
> 234:       bool cont = function(node->_key, node->_value);

Q: The local `cont` is not used. Just wanted to check if anything is missed here.
     Also, what does this name mean? Should it be named `cond` instead?

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

PR Review: https://git.openjdk.org/jdk/pull/13818#pullrequestreview-1414110945
PR Review Comment: https://git.openjdk.org/jdk/pull/13818#discussion_r1185651139


More information about the hotspot-dev mailing list