Hi all,
Pl find my talk proposal below, thanks.
Title:
So many different locking technologies in the modern kernel!? Help!
Sub-heading: Data Races, Locking tech, Which to use When
Format: Regular (25+5 min)
Audience: Beginner to Intermediate
Abstract:
Glance at the code of pretty much any kernel component or driver, and, when you're new to them, the various locking APIs they routinely employ can simply overwhelm. From the famous spinlock to the newly fashionable guard locks and everything in-between: sleeping locks (the mutex and yes, even the semaphore), to spinning locks (different spinlock variations and the reader-writer locks), specialized atomic / refcount integer and bit-op locking, and the subtle-yet-powerful lock-free technologies - the per-cpu and RCU primitives. It can indeed leave one's head spinning (like the lock)!
Obviously, only when your kernel / driver code uses tight, proven and efficient locking can it be considered production-ready. Learning how to use the lock APIs isn't too difficult; more importantly, we need to understand the _why and when_ of using different lock types, and their performance characteristics, given the circumstances. This talk attempts to throw light on this key area.
Brief Agenda:
- What exactly constitutes a data race (and a critical section)
- Deadlock and mitigations
- Kernel synchronization - available primitives overview
- Summary table of Linux kernel locking tech with key characteristics of each.
Brief Bio:
Kaiwan is a pretty much career-long Linux developer, trainer, author
and enthusiast. He started his Linux journey around 1997 and hasn’t
looked back. Along the way, he has helped via corporate training, both
in-country and internationally, and has (as of now) written five books
on Linux systems domain topics (
https://amazon.com/author/kaiwanbillimoria).