diff options
author | Brian Behlendorf <[email protected]> | 2009-02-12 13:32:10 -0800 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2009-02-12 13:32:10 -0800 |
commit | 37db7d8cf9936e6d2851a4329c11efcd9f61305c (patch) | |
tree | f4fe4f3523de9302b80e56d3240a8c6f58f5c0e4 /include/linux | |
parent | f500ccff35a55d04e7f6b8ddb54ff6e54e9c5d70 (diff) |
kmem slab fixes
- Default SPL_KMEM_CACHE_DELAY changed to 15 to match Solaris.
- Aged out slab checking occurs every SPL_KMEM_CACHE_DELAY / 3.
- skc->skc_reap tunable added whichs allows callers of
spl_slab_reclaim() to cap the number of slabs reclaimed.
On Solaris all eligible slabs are always reclaimed, and this
is still the default behavior. However, I suspect that is
not always wise for reasons such as in the next comment.
- spl_slab_reclaim() added cond_resched() while walking the
slab/object free lists. Soft lockups were observed when
freeing large numbers of vmalloc'd slabs/objets.
- spl_slab_reclaim() 'sks->sks_ref > 0' check changes from
incorrect 'break' to 'continue' to ensure all slabs are
checked.
- spl_cache_age() reworked to avoid a deadlock with
do_flush_tlb_all() which occured because we slept waiting
for completion in spl_cache_age(). To waiting for magazine
reclamation to finish is not required so we no longer wait.
- spl_magazine_create() and spl_magazine_destroy() shifted
back to using for_each_online_cpu() instead of the
spl_on_each_cpu() approach which was of course a bad idea
due to memory allocations which Ricardo pointed out.
Diffstat (limited to 'include/linux')
0 files changed, 0 insertions, 0 deletions