Allow inlined spinlocks again V4
Get series with b4
b4 am [email protected]Versions newest first
- v1 Latest3 patches 12 repliesIn review
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/3 | spinlock: move spinlock function bodies to header fileinclude/ include/ kernel/ | +300 | 0 replies | |
| 2/3 | spinlock: allow inlined spinlocksinclude/ kernel/ | +199 | 12 replies | |
| 3/3 | spinlock: inline code for all locking variants on s390arch/ | +34 | 0 replies |
Reviews trailers per patch
1 of 3 patches has a Reviewed-by or Acked-by.
| Patch | Arnd Bergmann | Peter Zijlstra |
|---|---|---|
| 1/3 | A-b | A-b |
| 2/3 | ||
| 3/3 |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.
Cover letter [patch 0/3] Allow inlined spinlocks again V4
This patch set allows to have inlined spinlocks again.
The rationale behind this is that function calls on at least s390 are expensive.
If one considers that server kernels are usually compiled with !CONFIG_PREEMPT a simple spin_lock is just a compare and swap loop. The extra overhead for a function call is significant.
With inlined spinlocks overall cpu usage gets reduced by 1%-5% on s390. These numbers were taken with some network benchmarks. However I expect any workload that calls frequently into the kernel and which grabs a few locks to perform better.
The implementation is straight forward: move the function bodies of the locking functions to static inline functions and place them in a header file.
By default all locking code remains out-of-line. An architecture can specify
#define __spin_lock_is_small
in arch/<whatever>/include/asm/spinlock.h to force inlining of a locking function.
V2: rewritten from scratch - now also with readable code
V3: removed macro to generate out-of-line spinlock variants since that
would break ctags. As requested by Arnd Bergmann.
V4: allow architectures to specify for each lock/unlock variant if
it should be kept out-of-line or inlined.