slub: per cpu partial lists V4
Get series with b4
b4 am [email protected]Versions newest first
- v1 Latest7 patches 12 repliesIn review
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/7 | slub: free slabs without holding locks (V2)mm/ | +13 | 2 replies | |
| 2/7 | slub: Remove useless statements in __slab_allocmm/ | +0 | 2 replies | |
| 3/7 | slub: Prepare inuse field in new_slab()mm/ | +2 | 0 replies | |
| 4/7 | slub: pass kmem_cache_cpu pointer to get_partial()mm/ | +15 | 0 replies | |
| 5/7 | slub: return object pointer from get_partial() / new_slab().mm/ | +73 | 0 replies | |
| 6/7 | slub: per cpu cache for partial pagesinclude/ include/ mm/ | +309 | 4 replies | |
| 7/7 | slub: update slabinfo tools to report per cpu partial list statisticstools/ | +8 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.
Cover letter [slub p4 0/7] slub: per cpu partial lists V4
V3->V4 : Use a single linked per cpu list instead of a per cpu array.
This results in improvements even for the single threaded case. I think this is ready for more widespread testing (-next?) The number of partial pages per cpu is configurable via /sys/kernel/slab/<name>/cpu_partial
V2->V3 : Work on the todo list. Still some work to be done to reduce
code impact and make this all cleaner. (Pekka: patch 1-3 are cleanup patches of general usefulness. You got #1 already 2+3 could be picked up w/o any issue).
The following patchset introduces per cpu partial lists which allow a performance increase of around ~10-20% with hackbench on my Sandybridge processor.
These lists help to avoid per node locking overhead. Allocator latency could be further reduced by making these operations work without disabling interrupts (like the fastpath and the free slowpath) but that is another project.
It is interesting to note that BSD has gone to a scheme with partial pages only per cpu (source: Adrian). Transfer of cpu ownerships is done using IPIs. Probably too much overhead for our taste. The approach here keeps the per node partial lists essentially meaning the "pages" in there have no cpu owner.