RFR(L): 8195098: Low latency hashtable for read-mostly scenarios

David Holmes david.holmes at oracle.com
Thu May 3 09:42:25 UTC 2018


On 3/05/2018 7:30 PM, Robbin Ehn wrote:
> Hi all,
> 
> After feedback from DavidH (volatile) here is an update:
> Inc:
> http://cr.openjdk.java.net/~rehn/8195098/v2/inc/webrev/

Looks fine. Thanks.

David
-----

> Full:
> http://cr.openjdk.java.net/~rehn/8195098/v2/full/webrev/
> 
> Thanks!
> 
> /Robbin
> 
> On 05/02/2018 11:03 AM, Robbin Ehn wrote:
>> Hi all,
>>
>> Here is an update with Gerard's and Coleen's input.
>>
>> Inc:
>> http://cr.openjdk.java.net/~rehn/8195098/v1/inc/webrev/
>> Full:
>> http://cr.openjdk.java.net/~rehn/8195098/v1/full/webrev/
>>
>> Thanks, Robbin
>>
>> On 2018-04-26 09:38, Robbin Ehn wrote:
>>>
>>> Hi all, please review.
>>>
>>> The lower latency of the new gcs have higher demands on runtime 
>>> data-structure
>>> in terms of latency. This is a concurrent hashtable using the 
>>> global-counter
>>> (8195099).
>>>
>>> Webrev:
>>> http://cr.openjdk.java.net/~rehn/8195098/v0/webrev/
>>>
>>> Bug:
>>> https://bugs.openjdk.java.net/browse/JDK-8195098
>>>
>>> * Readers never blocks or spins.
>>> * Inserts do CAS from a read-side, need to re-CAS during 
>>> re-size/deletion in targeted bucket or insert collision. (inserts are 
>>> conceptually a reader)
>>> * Deletes locks the targeted bucket, all other buckets are free for 
>>> operations.
>>> * Re-size locks one bucket at the time, all other buckets are free 
>>> for operations.
>>>
>>> It does concurrent re-size by doubling size and use one more bit from 
>>> hash.
>>> That means a bucket in the old table contains nodes to either one of 
>>> two buckets
>>> in the new table. Each node in the chain is sorted into one of the 
>>> two buckets
>>> with concurrent readers. Shrinking just take two node chains and put 
>>> them
>>> together in the corresponding bucket. To keep track of what is 
>>> visible to the
>>> concurrent readers it's uses a global-counter, needed during re-size 
>>> and for
>>> deletes.
>>>
>>> A gtest is provided which passes on our platforms, we also have a 
>>> prototype of the stringtable using this which passes tier 1-5 on our 
>>> platforms.
>>>
>>> Various people have pre-reviewed various parts, thanks! And a special 
>>> thanks to
>>> Coleen for a lot of reviewing!
>>>
>>> Thanks, Robbin


More information about the hotspot-dev mailing list