DLHT:一种具有快速删除和内存感知能力的非阻塞可扩展哈希表
DLHT: A Non-blocking Resizable Hashtable with Fast Deletes and Memory-awareness
AI总结:
DLHT放弃开放寻址,采用基于有界缓存行链的封闭寻址设计,通过无锁索引操作、即时删除、软件预取和非阻塞并行扩容,在内存工作负载下实现每秒超16亿请求,吞吐量达现有方案3.5至12倍。
摘要:
本文提出了DLHT,一种并发内存哈希表。尽管对哈希表的优化努力已经到了牺牲核心功能的地步,但最先进的设计仍然在每个请求上产生多次内存访问,并在三种情况下阻塞请求处理。首先,大多数哈希表在等待从内存中检索数据时会阻塞。其次,代表当前最先进水平的开放寻址设计,要么在删除时无法释放索引槽,要么必须阻塞所有请求才能做到这一点。第三,索引扩容会阻塞每个请求,直到所有对象被复制到新索引中。DLHT打破传统观念,放弃开放寻址,采用基于有界缓存行链的、功能完备且具有内存感知能力的封闭寻址设计。该设计提供无锁的索引操作和即时释放槽位的删除操作,(2)以单次内存访问完成大多数请求,(3)利用软件预取来隐藏内存延迟,以及(4)采用新颖的非阻塞并行扩容机制。在商用服务器和内存驻留工作负载下,DLHT每秒处理超过16亿个请求,在Get(Delete)操作上分别提供了最先进的封闭寻址(开放寻址)可扩展哈希表3.5倍(12倍)的吞吐量。
英文摘要:
This paper presents DLHT, a concurrent in-memory hashtable. Despite efforts to optimize hashtables, that go as far as sacrificing core functionality, state-of-the-art designs still incur multiple memory accesses per request and block request processing in three cases. First, most hashtables block while waiting for data to be retrieved from memory. Second, open-addressing designs, which represent the current state-of-the-art, either cannot free index slots on deletes or must block all requests to do so. Third, index resizes block every request until all objects are copied to the new index. Defying folklore wisdom, DLHT forgoes open-addressing and adopts a fully-featured and memory-aware closed-addressing design based on bounded cache-line-chaining. This design offers lock-free index operations and deletes that free slots instantly, (2) completes most requests with a single memory access, (3) utilizes software prefetching to hide memory latencies, and (4) employs a novel non-blocking and parallel resizing. In a commodity server and a memory-resident workload, DLHT surpasses 1.6B requests per second and provides 3.5x (12x) the throughput of the state-of-the-art closed-addressing (open-addressing) resizable hashtable on Gets (Deletes).
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。