diff options
author | Brian Behlendorf <[email protected]> | 2009-01-30 20:54:49 -0800 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2009-01-30 20:54:49 -0800 |
commit | ea3e6ca9e595ebfba82b964ee2eaf1ddd7076f0f (patch) | |
tree | 7480b87145297f3882ffe18234280512e136cdb4 /include/sys/vmsystm.h | |
parent | 34e71c9e97f4d0d2b3ede850d016a7de558b0f3c (diff) |
kmem_cache hardening and performance improvements
- Added slab work queue task which gradually ages and free's slabs
from the cache which have not been used recently.
- Optimized slab packing algorithm to ensure each slab contains the
maximum number of objects without create to large a slab.
- Fix deadlock, we can never call kv_free() under the skc_lock. We
now unlink the objects and slabs from the cache itself and attach
them to a private work list. The contents of the list are then
subsequently freed outside the spin lock.
- Move magazine create/destroy operation on to local cpu.
- Further performace optimizations by minimize the usage of the large
per-cache skc_lock. This includes the addition of KMC_BIT_REAPING
bit mask which is used to prevent concurrent reaping, and to defer
new slab creation when reaping is occuring.
- Add KMC_BIT_DESTROYING bit mask which is set when the cache is being
destroyed, this is used to catch any task accessing the cache while
it is being destroyed.
- Add comments to all the functions and additional comments to try
and make everything as clear as possible.
- Major cleanup and additions to the SPLAT kmem tests to more
rigerously stress the cache implementation and look for any problems.
This includes correctness and performance tests.
- Updated portable work queue interfaces
Diffstat (limited to 'include/sys/vmsystm.h')
-rw-r--r-- | include/sys/vmsystm.h | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/include/sys/vmsystm.h b/include/sys/vmsystm.h index e92c17bdd..1cb716f13 100644 --- a/include/sys/vmsystm.h +++ b/include/sys/vmsystm.h @@ -35,8 +35,7 @@ extern vmem_t *zio_alloc_arena; /* arena for zio caches */ #define physmem num_physpages -#define freemem nr_free_pages() // Expensive on linux, - // cheap on solaris +#define freemem nr_free_pages() #define minfree 0 #define needfree 0 /* # of needed pages */ #define ptob(pages) (pages * PAGE_SIZE) |