Google Wants Fast Queue Spinlocks For The Linux Kernel

Posted by Michael Larabel on January 23, 2013

A Google engineer has proposed "Fast Queue Spinlocks" for the Linux kernel as an alternative in select cases to the default ticket spinlock.

In terms of "Fast Queue Spinlocks", Michel Lespinasse of Google wrote:
I understand that in the past, such proposals have been defeated by two main arguments:

- That it is generally preferable to use smart algorithms that can avoid lock contention altogether, rather than spending effort on the lock itself to deal with the contention, and
- That the lightly contended case matters more to real workloads than the highly contended case, and that the most well known scalable spinlock algorithms tend to be relatively slow in the lightly contended case.

I am hoping for a different result this time around based on the following counter-arguments:

- There are situations where the lock contention is directly driven by user events, with little opportunity to reduce it in-kernel. One example might be when the user requests that the kernel acquires or releases semaphores on its behalf using sysv IPC APIs - it is hard to imagine how the kernel could mitigate spinlock contention issues for the user.
- More importantly, the queue spinlock implementation I am proposing seems to behave well both under light and heavy contention. It uses one single atomic operation on the lock side, and (on x86) only a single memory store on the unlock side, with fairly short code sections on both sides, and just compares well with the ticket spinlock on the benchmarks I have tried. To be clear, I am not proposing replacing every ticket spinlock usage with queue spinlocks; I am only proposing to have both APIs available and pick them as appropriate for each use case.
For demonstrating his queue spinlock proposal, Lespinasse converted the IPC object spinlock and network qdisc busylock to the new interface. He's published the six patches to the Linux kernel mailing list for comments and suggestions by fellow Linux kernel developers. He has also provided some preliminary benchmarks of Fast Queue Spinlocks.

The patch-set and discussion about Fast Queue Spinlocks for the Linux kernel can be found here.

Discuss this article in our forums, IRC channel, or email the author. You can also follow our content via RSS and on social networks like Facebook, Identi.ca, and Twitter (@Phoronix and @MichaelLarabel). Subscribe to Phoronix Premium to view our content without advertisements, view entire articles on a single page, and experience other benefits.
Latest Hardware Reviews
  1. Sumo Lounge Emperor
  2. Gallium3D Continues Improving OpenGL For Older Radeon GPUs
  3. 15-Way Open vs. Closed Source NVIDIA/AMD Linux GPU Comparison
  4. Nouveau vs. NVIDIA Linux Comparison Shows Shortcomings
Latest Software Articles
  1. Intel Linux OpenGL Driver Leading Over Apple OS X
  2. The Cost Of Ubuntu Disk Encryption
  3. Btrfs vs. EXT4 vs. XFS vs. F2FS On Linux 3.10
  4. AMD Radeon R600 GPU LLVM 3.3 Back-End Testing
Latest Linux News
  1. Linux Desktop Security Could Be A Whole Lot Better
  2. KDE 4.11 Will Be The Last Major KDE4 Workspaces Feature Release
  3. New NVIDIA Linux Driver Supports The GeForce GTX 780
  4. Chrome 28 To Offer More Speed Improvements
  5. Digia Announces "Boot To Qt" Project
  6. X.Org Libraries Hit By Round Of Security Issues
  7. Wayland's Weston Gets Output Scaling Support
  8. Raspberry Pi Gets New Wayland Weston Renderer
  9. Debian GNU/Hurd 2013 Release Brings New Packages
  10. Intel Ultrabook Performance Is Faster With Mesa 9.2
  11. Hot Relocation HDD To SSD Support For Btrfs
Latest Forum Talk
  1. Debian GNU/Hurd 2013 Release Brings New Packages
  2. Fedora 19 Alpha Gets Its First Delay Due To UEFI
  3. X.Org Libraries Hit By Round Of Security Issues
  4. Linux Desktop Security Could Be A Whole Lot Better
  5. Intel Linux OpenGL Driver Leading Over Apple OS X
  6. KDE 4.11 Will Be The Last Major KDE4 Workspaces...
  1. Computers
  2. Display Drivers
  3. Graphics Cards
  4. Motherboards
  5. Peripherals
  6. Processors
  7. Software
  8. Operating Systems
  9. All Articles
  1. Linux Benchmarking
  2. OpenBenchmarking.org
  3. Phoronix Test Suite