summaryrefslogtreecommitdiffstats
path: root/sys/vm
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2014-01-04 23:37:01 +0000
committermav <mav@FreeBSD.org>2014-01-04 23:37:01 +0000
commit363e273d8f7f8248532f1ed348a72ee0dea621c4 (patch)
treead8916e53d2ff5ee2a6bd26917650bc4103d1fc2 /sys/vm
parenta5fd15da703197a01783bcee7a038aeaf3172e32 (diff)
downloadFreeBSD-src-363e273d8f7f8248532f1ed348a72ee0dea621c4.zip
FreeBSD-src-363e273d8f7f8248532f1ed348a72ee0dea621c4.tar.gz
MFC r258337:
Add two new UMA bucket zones to store 3 and 9 items per bucket. These new buckets make bucket size self-tuning more soft and precise. Without them there are buckets for 1, 5, 13, 29, ... items. While at bigger sizes difference about 2x is fine, at smallest ones it is 5x and 2.6x respectively. New buckets make that line look like 1, 3, 5, 9, 13, 29, reducing jumps between steps, making algorithm work softer, allocating and freeing memory in better fitting chunks. Otherwise there is quite a big gap between allocating 128K and 5x128K of RAM at once.
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/uma_core.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/vm/uma_core.c b/sys/vm/uma_core.c
index 7ad6e84..3162e60 100644
--- a/sys/vm/uma_core.c
+++ b/sys/vm/uma_core.c
@@ -207,7 +207,9 @@ struct uma_bucket_zone {
struct uma_bucket_zone bucket_zones[] = {
{ NULL, "4 Bucket", BUCKET_SIZE(4), 4096 },
+ { NULL, "6 Bucket", BUCKET_SIZE(6), 3072 },
{ NULL, "8 Bucket", BUCKET_SIZE(8), 2048 },
+ { NULL, "12 Bucket", BUCKET_SIZE(12), 1536 },
{ NULL, "16 Bucket", BUCKET_SIZE(16), 1024 },
{ NULL, "32 Bucket", BUCKET_SIZE(32), 512 },
{ NULL, "64 Bucket", BUCKET_SIZE(64), 256 },
OpenPOWER on IntegriCloud