summaryrefslogtreecommitdiffstats
path: root/include/sys/vmsystm.h
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2009-01-30 20:54:49 -0800
committerBrian Behlendorf <[email protected]>2009-01-30 20:54:49 -0800
commitea3e6ca9e595ebfba82b964ee2eaf1ddd7076f0f (patch)
tree7480b87145297f3882ffe18234280512e136cdb4 /include/sys/vmsystm.h
parent34e71c9e97f4d0d2b3ede850d016a7de558b0f3c (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.h3
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)