SMP performance problem in 2.4 (was: Athlon spinlock performance)
Quoted 5 lines · Scott
The problem is in
try_to_free_pages' and its associated routines,shrink_caches' andshrink_cache', inmm/vmscan.c'. After I made some changes to greatly reduce lock contention in the slab allocator and `shrink_cache',
How did you change the slab locking?
Quoted 7 lines
and then instrumented `shrink_cache' to see what it was doing, the problem showed up very clearly.
In one approximately 60-second period with the problematic workload running,
try_to_free_pages' was called 511 times. It made 2597 calls toshrink_caches', which made 2592 calls to `shrink_cache' (i.e. it was very
rare for `kmem_cache_reap' to release enough pages itself).
2.6 contains a simple fix: I've removed kmem_cache_reap. Instead the code checks for empty pages in the slab caches every other second.
--
Manfred