Advanced Topics in Programming Languages: A Lock-Free Hash Table
GoogleTalksArchive4 HN recommenders · recommended in 5 months, 2013-2024
29K views · 14 years ago · talk · evergreen
A 2007 Google Tech Talk in which Cliff Click of Azul Systems presents a lock-free concurrent hash table that scales to 768 CPUs. He explains why it is correct by reasoning in a different way than usual happens-before and memory-order arguments.
HN regards it as one of the best technical talks, a deep and clear walkthrough of scalable lock-free hash tables built on compare-and-swap.
59:34CppCon 2017: Matt Kulukundis “Designing a Fast, Efficient, Cache-friendly Hash Table, Step by Step”
CppCon
137K views • 9 years ago
54:01Abseil's Open Source Hashtables: 2 Years In - Matt Kulukundis - CppCon 2019
CppCon
22K views • 7 years ago
1:30:53C++Now 2018: You Can Do Better than std::unordered_map: New Improvements to Hash Table Performance
CppNow
63K views • 8 years ago
45:11Kilim: Fast, lightweight, cheap message passing in Java.
Google TechTalks
33K views • 18 years ago
30:37High-performance Tree Wrangling, the APL Way // Aaron Hsu // Dyalog '18
Dyalog User Meetings
6K views • 7 years ago
52:54Rust at speed — building a fast concurrent database
Jon Gjengset
225K views • 7 years ago
51:27Google I/O 2012 - Go Concurrency Patterns
Google for Developers
894K views • 14 years ago
1:13:41CppCon 2014: Chandler Carruth "Efficiency with Algorithms, Performance with Data Structures"
CppCon
235K views • 12 years ago
2:32:39Clojure Concurrency - Rich Hickey
ClojureTV
73K views • 13 years ago
1:06:24Rich Hickey: Deconstructing the Database
InfoQ
106K views • 14 years ago
1:10:23"Systems that run forever self-heal and scale" by Joe Armstrong (2013)
Strange Loop Conference
85K views • 5 years ago
56:49Escape from the Heap: Low-Level Programming in Common Lisp
Arthur Gleckler
17K views • 10 years ago
1:13:53Raymond Hettinger, Keynote on Concurrency, PyBay 2017
SF Python
161K views • 9 years ago
41:06"Unison: a new distributed programming language" by Paul Chiusano
Strange Loop Conference
45K views • 7 years ago
1:32:47Data-Oriented Demo: SOA, composition
Jonathan Blow
201K views • 11 years ago
40:42Lucas Cavalcanti & Edward Wible - Exploring four hidden superpowers of Datomic
ClojureTV
29K views • 11 years ago
30:06"Tackling Concurrency Bugs with TLA+" by Hillel Wayne
Strange Loop Conference
24K views • 9 years ago
54:44Differential Synchronization
Google TechTalks
52K views • 17 years ago
1:12:02Java on a 1000 Cores - Tales of Hardware / Software CoDesign
Google TechTalks
23K views • 17 years ago
34:55"Outperforming Imperative with Pure Functional Languages" by Richard Feldman
Strange Loop Conference
98K views • 5 years ago
5 comments from Hacker News
For folks interested in this topic I highly recommend this talk by Cliff Click about building highly scalable hash tables via Compare And Swap: ▶ this video
It's worth noting that for a lot of people for a long time, Intel TSO was the memory model in practice (which IIRC makes `std::memory_order_seq_cst` pretty much free on Intel). Many clothes have been torn and many teeth gnashed porting C++ from Intel to more relaxed architectures. Back in the day that usually meant like SPARC, today that usually means ARM. "Acquire" and "Release" are relatively comprehensible in isolated examples, but the intuitions don't compose well. It's realllly easy to end up with an ABA type issue or an architecture dependency even with the simplest lock-free primitives like CAS. Combine that with how cheap `std::mutex` is on most platforms and it's just really a last resort, at least on server-class gear. Google engineers have more experience with this than probably anyone, and they've summed it up nicely here: link . Doing raw atomics isn't quite "roll your own cryptography", but it's clearly in "if you have to ask, don't use it" territory. I've lost count of how many times I've fuzzed something to Mars and back to show it "correct" and not been able to justify it compared to `pthread` when the profiles were in. With that disclaimer, people are going to do it, and so I should probably leave an example of it done well: ▶ this video
I've always admired the wizardry of Cliff Click's concurrent hash: link ▶ this video I'm not sure what to make of an "atomic" hash. I don't think OP does as well: "Doesn't this kind of defeat the point of concurrent algorithms? Well, in a sense, it does make it non-atomic, but it isn't really a spin-lock or anything like that, even though it can seem like that:" Concurrent hash seems to be more correct and clear.
Dr. Cliff Click's Google talk on Lock-Free Hashtable is here: ▶ this video Acc to Dr. Click, if you do not have 30+ CPUs in a single machine, ConcurrentHashMap (built-in to the JDK) will do the trick more often than not. The talk is really worth it, if you're curious about the design, esp. Dr. Click also had memorable debate with Rich Hickey over STMs. He works at h2o.ai and wrote about building a Key-Value store two years ago: link
Probably this one: ▶ this video Anything from Cliff Click is quite good. This guy has a very deep understanding of compilers, virtual-machines, CPUs, and their interactions. A JVM does that? link Java on a 1000 Cores link