diff options
| author | Hao Li <haolee.swjtu@gmail.com> | 2025-12-10 08:26:31 +0800 |
|---|---|---|
| committer | Vlastimil Babka <vbabka@suse.cz> | 2026-01-27 18:03:19 +0100 |
| commit | 4b038a9670154e8bb4832d80f0f2b68b1b812171 (patch) | |
| tree | 45fc25d8e8b5249de9323d0005d39a54dd971b82 /tools/perf/lib/Documentation/tutorial/git@git.tavy.me:linux.git | |
| parent | d907bf434fcd64c9609aa2983574e7c1f28e5493 (diff) | |
slub: keep empty main sheaf as spare in __pcs_replace_empty_main()
When __pcs_replace_empty_main() fails to obtain a full sheaf directly
from the barn, it may either:
- Refill an empty sheaf obtained via barn_get_empty_sheaf(), or
- Allocate a brand new full sheaf via alloc_full_sheaf().
After reacquiring the per-CPU lock, if pcs->main is still empty and
pcs->spare is NULL, the current code donates the empty main sheaf to
the barn via barn_put_empty_sheaf() and installs the full sheaf as
pcs->main, leaving pcs->spare unpopulated.
Instead, keep the existing empty main sheaf locally as the spare:
pcs->spare = pcs->main;
pcs->main = full;
This populates pcs->spare earlier, which can reduce future barn traffic.
Suggested-by: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Hao Li <haolee.swjtu@gmail.com>
Reviewed-by: Harry Yoo <harry.yoo@oracle.com>
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Tested-by: Zhao Liu <zhao1.liu@intel.com>
Diffstat (limited to 'tools/perf/lib/Documentation/tutorial/git@git.tavy.me:linux.git')
0 files changed, 0 insertions, 0 deletions
