Details
-
Enhancement
-
Resolution: Unresolved
-
P4
-
None
-
17, 20, 21
Description
UUID is very important class that is used to track identities of objects in large scale systems. On some of our systems, `UUID.randomUUID` takes >1% of total CPU time, and is frequently a scalability bottleneck due to SecureRandom synchronization.
The major issue with UUID code itself is that it reads from the single SecureRandom instance by 16 bytes. So the heavily contended SecureRandom is bashed with very small requests. This also has a chilling effect on other users of SecureRandom, when there is a heavy UUID generation traffic.
We can improve this by doing the bulk reads from the backing SecureRandom and possibly striping the reads across many instances of it.
Draft PR: https://github.com/openjdk/jdk/pull/14135
The major issue with UUID code itself is that it reads from the single SecureRandom instance by 16 bytes. So the heavily contended SecureRandom is bashed with very small requests. This also has a chilling effect on other users of SecureRandom, when there is a heavy UUID generation traffic.
We can improve this by doing the bulk reads from the backing SecureRandom and possibly striping the reads across many instances of it.
Draft PR: https://github.com/openjdk/jdk/pull/14135
Attachments
Issue Links
- is blocked by
-
JDK-8308803 Improve java/util/UUID/UUIDTest.java
-
- Resolved
-
- links to
-
Review openjdk/jdk/14135