aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMateusz Guzik <mjg@FreeBSD.org>2020-11-05 15:08:56 +0000
committerMateusz Guzik <mjg@FreeBSD.org>2020-11-05 15:08:56 +0000
commit2dee296a3d67da017ab81cab010a55b098a8daa1 (patch)
treef541a49b888de0bd715a1b27d1565eb13312f1e6
parent9fe896ec791d38bb7f36108befcec1fe81b907b0 (diff)
downloadsrc-2dee296a3d67da017ab81cab010a55b098a8daa1.tar.gz
src-2dee296a3d67da017ab81cab010a55b098a8daa1.zip
Rationalize per-cpu zones.
The 2 provided zones had inconsistent naming between each other ("int" and "64") and other allocator zones (which use bytes). Follow malloc by naming them "pcpu-" + size in bytes. This is a step towards replacing ad-hoc per-cpu zones with general slabs.
Notes
Notes: svn path=/head/; revision=367384
-rw-r--r--sys/kern/kern_rmlock.c8
-rw-r--r--sys/kern/subr_counter.c4
-rw-r--r--sys/kern/subr_pcpu.c12
-rw-r--r--sys/kern/vfs_mount.c16
-rw-r--r--sys/sys/param.h2
-rw-r--r--sys/vm/uma.h4
6 files changed, 22 insertions, 24 deletions
diff --git a/sys/kern/kern_rmlock.c b/sys/kern/kern_rmlock.c
index 74227f6a46ec..7fb0025225ed 100644
--- a/sys/kern/kern_rmlock.c
+++ b/sys/kern/kern_rmlock.c
@@ -890,8 +890,8 @@ rms_init(struct rmslock *rms, const char *name)
rms->writers = 0;
rms->readers = 0;
mtx_init(&rms->mtx, name, NULL, MTX_DEF | MTX_NEW);
- rms->readers_pcpu = uma_zalloc_pcpu(pcpu_zone_int, M_WAITOK | M_ZERO);
- rms->readers_influx = uma_zalloc_pcpu(pcpu_zone_int, M_WAITOK | M_ZERO);
+ rms->readers_pcpu = uma_zalloc_pcpu(pcpu_zone_4, M_WAITOK | M_ZERO);
+ rms->readers_influx = uma_zalloc_pcpu(pcpu_zone_4, M_WAITOK | M_ZERO);
}
void
@@ -901,8 +901,8 @@ rms_destroy(struct rmslock *rms)
MPASS(rms->writers == 0);
MPASS(rms->readers == 0);
mtx_destroy(&rms->mtx);
- uma_zfree_pcpu(pcpu_zone_int, rms->readers_pcpu);
- uma_zfree_pcpu(pcpu_zone_int, rms->readers_influx);
+ uma_zfree_pcpu(pcpu_zone_4, rms->readers_pcpu);
+ uma_zfree_pcpu(pcpu_zone_4, rms->readers_influx);
}
static void __noinline
diff --git a/sys/kern/subr_counter.c b/sys/kern/subr_counter.c
index 59ded19737bf..c79cc49dfd0d 100644
--- a/sys/kern/subr_counter.c
+++ b/sys/kern/subr_counter.c
@@ -61,14 +61,14 @@ counter_u64_t
counter_u64_alloc(int flags)
{
- return (uma_zalloc_pcpu(pcpu_zone_64, flags | M_ZERO));
+ return (uma_zalloc_pcpu(pcpu_zone_8, flags | M_ZERO));
}
void
counter_u64_free(counter_u64_t c)
{
- uma_zfree_pcpu(pcpu_zone_64, c);
+ uma_zfree_pcpu(pcpu_zone_8, c);
}
int
diff --git a/sys/kern/subr_pcpu.c b/sys/kern/subr_pcpu.c
index f37b9324a919..67d9565e87b5 100644
--- a/sys/kern/subr_pcpu.c
+++ b/sys/kern/subr_pcpu.c
@@ -131,21 +131,19 @@ dpcpu_startup(void *dummy __unused)
SYSINIT(dpcpu, SI_SUB_KLD, SI_ORDER_FIRST, dpcpu_startup, NULL);
/*
- * UMA_PCPU_ZONE zones, that are available for all kernel
- * consumers. Right now 64 bit zone is used for counter(9)
- * and int zone is used for mount point counters.
+ * UMA_ZONE_PCPU zones for general kernel use.
*/
-uma_zone_t pcpu_zone_int;
-uma_zone_t pcpu_zone_64;
+uma_zone_t pcpu_zone_4;
+uma_zone_t pcpu_zone_8;
static void
pcpu_zones_startup(void)
{
- pcpu_zone_int = uma_zcreate("int pcpu", sizeof(int),
+ pcpu_zone_4 = uma_zcreate("pcpu-4", sizeof(uint32_t),
NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_PCPU);
- pcpu_zone_64 = uma_zcreate("64 pcpu", sizeof(uint64_t),
+ pcpu_zone_8 = uma_zcreate("pcpu-8", sizeof(uint64_t),
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/kern/vfs_mount.c b/sys/kern/vfs_mount.c
index 322df58e119e..08190d432a93 100644
--- a/sys/kern/vfs_mount.c
+++ b/sys/kern/vfs_mount.c
@@ -127,13 +127,13 @@ mount_init(void *mem, int size, int flags)
mtx_init(&mp->mnt_mtx, "struct mount mtx", NULL, MTX_DEF);
mtx_init(&mp->mnt_listmtx, "struct mount vlist mtx", NULL, MTX_DEF);
lockinit(&mp->mnt_explock, PVFS, "explock", 0, 0);
- mp->mnt_thread_in_ops_pcpu = uma_zalloc_pcpu(pcpu_zone_int,
+ mp->mnt_thread_in_ops_pcpu = uma_zalloc_pcpu(pcpu_zone_4,
M_WAITOK | M_ZERO);
- mp->mnt_ref_pcpu = uma_zalloc_pcpu(pcpu_zone_int,
+ mp->mnt_ref_pcpu = uma_zalloc_pcpu(pcpu_zone_4,
M_WAITOK | M_ZERO);
- mp->mnt_lockref_pcpu = uma_zalloc_pcpu(pcpu_zone_int,
+ mp->mnt_lockref_pcpu = uma_zalloc_pcpu(pcpu_zone_4,
M_WAITOK | M_ZERO);
- mp->mnt_writeopcount_pcpu = uma_zalloc_pcpu(pcpu_zone_int,
+ mp->mnt_writeopcount_pcpu = uma_zalloc_pcpu(pcpu_zone_4,
M_WAITOK | M_ZERO);
mp->mnt_ref = 0;
mp->mnt_vfs_ops = 1;
@@ -147,10 +147,10 @@ mount_fini(void *mem, int size)
struct mount *mp;
mp = (struct mount *)mem;
- uma_zfree_pcpu(pcpu_zone_int, mp->mnt_writeopcount_pcpu);
- uma_zfree_pcpu(pcpu_zone_int, mp->mnt_lockref_pcpu);
- uma_zfree_pcpu(pcpu_zone_int, mp->mnt_ref_pcpu);
- uma_zfree_pcpu(pcpu_zone_int, mp->mnt_thread_in_ops_pcpu);
+ uma_zfree_pcpu(pcpu_zone_4, mp->mnt_writeopcount_pcpu);
+ uma_zfree_pcpu(pcpu_zone_4, mp->mnt_lockref_pcpu);
+ uma_zfree_pcpu(pcpu_zone_4, mp->mnt_ref_pcpu);
+ uma_zfree_pcpu(pcpu_zone_4, mp->mnt_thread_in_ops_pcpu);
lockdestroy(&mp->mnt_explock);
mtx_destroy(&mp->mnt_listmtx);
mtx_destroy(&mp->mnt_mtx);
diff --git a/sys/sys/param.h b/sys/sys/param.h
index cb493059a891..86b5c70d0d06 100644
--- a/sys/sys/param.h
+++ b/sys/sys/param.h
@@ -60,7 +60,7 @@
* in the range 5 to 9.
*/
#undef __FreeBSD_version
-#define __FreeBSD_version 1300125 /* Master, propagated to newvers */
+#define __FreeBSD_version 1300126 /* Master, propagated to newvers */
/*
* __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD,
diff --git a/sys/vm/uma.h b/sys/vm/uma.h
index 10e87db227b5..ff1930f01309 100644
--- a/sys/vm/uma.h
+++ b/sys/vm/uma.h
@@ -666,8 +666,8 @@ size_t uma_zone_memory(uma_zone_t zone);
/*
* Common UMA_ZONE_PCPU zones.
*/
-extern uma_zone_t pcpu_zone_int;
-extern uma_zone_t pcpu_zone_64;
+extern uma_zone_t pcpu_zone_4;
+extern uma_zone_t pcpu_zone_8;
/*
* Exported statistics structures to be used by user space monitoring tools.