aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMateusz Guzik <mjg@FreeBSD.org>2020-11-09 00:34:23 +0000
committerMateusz Guzik <mjg@FreeBSD.org>2020-11-09 00:34:23 +0000
commit3a440a421d4bb90506360a8c03ee2ba5c3336492 (patch)
treee3a56e7161085daf36dee89aa8d2198d190f4ef7
parentde0a3472d8f8597f2d2aaf3a3f7841fd1fec7778 (diff)
downloadsrc-3a440a421d4bb90506360a8c03ee2ba5c3336492.tar.gz
src-3a440a421d4bb90506360a8c03ee2ba5c3336492.zip
Add more per-cpu zones.
This covers powers of 2 up to 64. Example pending user is ZFS.
Notes
Notes: svn path=/head/; revision=367503
-rw-r--r--sys/kern/subr_pcpu.c14
-rw-r--r--sys/vm/uma.h3
2 files changed, 14 insertions, 3 deletions
diff --git a/sys/kern/subr_pcpu.c b/sys/kern/subr_pcpu.c
index 67d9565e87b5..aaa9b62bb936 100644
--- a/sys/kern/subr_pcpu.c
+++ b/sys/kern/subr_pcpu.c
@@ -133,17 +133,25 @@ SYSINIT(dpcpu, SI_SUB_KLD, SI_ORDER_FIRST, dpcpu_startup, NULL);
/*
* UMA_ZONE_PCPU zones for general kernel use.
*/
-
uma_zone_t pcpu_zone_4;
uma_zone_t pcpu_zone_8;
+uma_zone_t pcpu_zone_16;
+uma_zone_t pcpu_zone_32;
+uma_zone_t pcpu_zone_64;
static void
pcpu_zones_startup(void)
{
- pcpu_zone_4 = uma_zcreate("pcpu-4", sizeof(uint32_t),
+ pcpu_zone_4 = uma_zcreate("pcpu-4", 4,
+ NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_PCPU);
+ pcpu_zone_8 = uma_zcreate("pcpu-8", 8,
+ NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_PCPU);
+ pcpu_zone_16 = uma_zcreate("pcpu-16", 16,
+ NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_PCPU);
+ pcpu_zone_32 = uma_zcreate("pcpu-32", 32,
NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_PCPU);
- pcpu_zone_8 = uma_zcreate("pcpu-8", sizeof(uint64_t),
+ pcpu_zone_64 = uma_zcreate("pcpu-64", 64,
NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_PCPU);
}
SYSINIT(pcpu_zones, SI_SUB_COUNTER, SI_ORDER_FIRST, pcpu_zones_startup, NULL);
diff --git a/sys/vm/uma.h b/sys/vm/uma.h
index ff1930f01309..634c1103b0b6 100644
--- a/sys/vm/uma.h
+++ b/sys/vm/uma.h
@@ -668,6 +668,9 @@ size_t uma_zone_memory(uma_zone_t zone);
*/
extern uma_zone_t pcpu_zone_4;
extern uma_zone_t pcpu_zone_8;
+extern uma_zone_t pcpu_zone_16;
+extern uma_zone_t pcpu_zone_32;
+extern uma_zone_t pcpu_zone_64;
/*
* Exported statistics structures to be used by user space monitoring tools.