Sent out today was this week’s batch of Slab allocator fixes for the Linux 7.0 development kernel. Making this pull notable is fixing a “severe performance regression” with a ~64% performance drop having been noted in late February.
Today’s slab fixes pull has a fix for a “severe performance regression” stemming from unnecessary sheaf refill restrictions exposed by the mempool allocatioan strategy. The regression was introduced to the mainline Linux kernel last month as part of the new slab material for the Linux 7.0 merge window.
Ming Lei of Red Hat is the one that reported the regression and noted:
“The SLUB “sheaves” series merged via 815c8e35511d (“Merge branch ‘slab/for-7.0/sheaves’ into slab/for-next”) introduces a severe performance regression for workloads with persistent cross-CPU alloc/free patterns. ublk null target benchmark IOPS drops significantly compared to v6.19: from ~36M IOPS to ~13M IOPS (~64% drop).
Bisecting within the sheaves series is blocked by a kernel panic at 17c38c88294d (“slab: remove cpu (partial) slabs usage from allocation paths”), so the exact first bad commit could not be identified.”
SUSE Linux engineer Vlastimil Babka devised a fix to allow sheaf refill if blocking is not allowed. This doesn’t fully resolve the performance regression but another patch is expected to handle the possibility of memory-less nodes.
That fix is pending now via this pull request and should be merged ahead of Sunday’s Linux 7.0-rc3 kernel release.
