aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2014-11-03 13:50:39 -0800
committerBrian Behlendorf <[email protected]>2014-11-05 10:08:21 -0800
commit917fef273295616c563bbb0a5f6986cfce543d2f (patch)
tree47455aa2dec6e9db300372154d96017214a2f871
parent7f118e836e3533d85aa0f859eb463cf9e54dc3fc (diff)
Lower minimum objects/slab threshold
As long as we can fit a minimum of one object/slab there's no reason to prevent the creation of the cache. This effectively pushes the maximum object size up to 32MB. The splat cache tests were extended accordingly to verify this functionality. Signed-off-by: Brian Behlendorf <[email protected]>
-rw-r--r--include/sys/kmem.h2
-rw-r--r--module/splat/splat-kmem.c9
2 files changed, 10 insertions, 1 deletions
diff --git a/include/sys/kmem.h b/include/sys/kmem.h
index adbaea931..5875dfff6 100644
--- a/include/sys/kmem.h
+++ b/include/sys/kmem.h
@@ -395,7 +395,7 @@ extern struct rw_semaphore spl_kmem_cache_sem;
#define SPL_KMEM_CACHE_DELAY 15 /* Minimum slab release age */
#define SPL_KMEM_CACHE_REAP 0 /* Default reap everything */
#define SPL_KMEM_CACHE_OBJ_PER_SLAB 16 /* Target objects per slab */
-#define SPL_KMEM_CACHE_OBJ_PER_SLAB_MIN 8 /* Minimum objects per slab */
+#define SPL_KMEM_CACHE_OBJ_PER_SLAB_MIN 1 /* Minimum objects per slab */
#define SPL_KMEM_CACHE_ALIGN 8 /* Default object alignment */
#define POINTER_IS_VALID(p) 0 /* Unimplemented */
diff --git a/module/splat/splat-kmem.c b/module/splat/splat-kmem.c
index 76643db18..db787ae92 100644
--- a/module/splat/splat-kmem.c
+++ b/module/splat/splat-kmem.c
@@ -799,6 +799,10 @@ splat_kmem_test6(struct file *file, void *arg)
if (rc)
return rc;
+ rc = splat_kmem_cache_test(file, arg, name, 16*1024*1024, 0, KMC_VMEM);
+ if (rc)
+ return rc;
+
/* Off slab (default + kmem + vmem) */
rc = splat_kmem_cache_test(file, arg, name, 256*1024, 0, KMC_OFFSLAB);
if (rc)
@@ -811,6 +815,11 @@ splat_kmem_test6(struct file *file, void *arg)
rc = splat_kmem_cache_test(file, arg, name, 1024*1024, 0,
KMC_VMEM | KMC_OFFSLAB);
+ if (rc)
+ return rc;
+
+ rc = splat_kmem_cache_test(file, arg, name, 16*1024*1024, 0,
+ KMC_VMEM | KMC_OFFSLAB);
return rc;
}