Linux 4.18 Landing Restartable Sequences System Call, Yields Performance Benefits
Adding to the list of new features for Linux 4.18 is the long-in-development work on the restartable sequences system call.
The new RSEQ system call allows for faster user-space operations on per-CPU data by providing a shared data structure ABI between each user-space thread and the kernel. This allows update operations on per-CPU data without needing expensive atomic operations. The restartable sequences ABI can make faster querying the current CPU number, incrementing per-CPU counters, modifying data protected by per-CPU spinlocks, writing/reading per-CPU ring buffers, and more.
Restartable sequences allows for some significant performance improvements in select micro-benchmarks. Some of the performance details and more technical information outlined in this patch. For Linux 4.18 the restartable sequence system call is supported on ARM, POWER and x86. The restartable sequences support has been of benefit to the Facebook jemalloc allocator as one immediate user.
The five thousand plus lines of code introducing this new functionality is queued via this pull request for Linux 4.18.
The new RSEQ system call allows for faster user-space operations on per-CPU data by providing a shared data structure ABI between each user-space thread and the kernel. This allows update operations on per-CPU data without needing expensive atomic operations. The restartable sequences ABI can make faster querying the current CPU number, incrementing per-CPU counters, modifying data protected by per-CPU spinlocks, writing/reading per-CPU ring buffers, and more.
Restartable sequences allows for some significant performance improvements in select micro-benchmarks. Some of the performance details and more technical information outlined in this patch. For Linux 4.18 the restartable sequence system call is supported on ARM, POWER and x86. The restartable sequences support has been of benefit to the Facebook jemalloc allocator as one immediate user.
The five thousand plus lines of code introducing this new functionality is queued via this pull request for Linux 4.18.
3 Comments