On Thu, 14 Nov 2024 16:40:22 GMT, Vladimir Ivanov <vaiva...@openjdk.org> wrote:
>> This patch remove access to the shared variable to fix scalability issue in >> the multithread environment. According to testing by the >> specjvm2008::crypto.rsa the one thread performance reduced for less than 1% >> while the score for the multithread run increased in ~2x. For the 2 socket >> system with Xeon 8480+ numbers looks as: >> • 1 thread: 643.15 for original version vs 642.54 for patched one; >> • 224 threads: 22446.19 for original vs 46147.41 for patched. >> The RSABench microbenchmark reports no score changes for the 1 thread >> (average for all testcases) and 2.4% improvement for the 224 threads. > > Vladimir Ivanov has updated the pull request incrementally with one > additional commit since the last revision: > > 8317538: Potential bottleneck in Provider::getService: > specjvm2008::crypto.rsa have scalability issue for high vCPU numbers ThreadLocal should be `static` as it is storing the per-thread `ServiceKey` variable. You will want something like this: private static final ThreadLocal<ServiceKey> previousKey = ThreadLocal.withInitial(() -> new ServiceKey("","", false)); ``` Then use previousKey.get() when reading the variable and set() for replacing it. ------------- PR Comment: https://git.openjdk.org/jdk/pull/21719#issuecomment-2477423556