aboutsummaryrefslogtreecommitdiff
path: root/include/jemalloc/internal/sec_opts.h
diff options
context:
space:
mode:
authorWarner Losh <imp@FreeBSD.org>2025-02-05 23:20:13 +0000
committerWarner Losh <imp@FreeBSD.org>2025-02-05 23:20:13 +0000
commit48ec896efb0b78141df004eaa21288b84590c9da (patch)
tree33799792fd95c266d472ab1ae51d50ab4f942eb3 /include/jemalloc/internal/sec_opts.h
parentd28d7fbede216494aa3942af042cc084fcd6098a (diff)
jemalloc: Import 5.3.0 54eaed1d8b56b1aa528be3bdd1877e59c56fa90cvendor/jemalloc/5.3.0vendor/jemalloc
Import jemalloc 5.3.0. This import changes how manage the jemalloc vendor branch (which was just started anyway). Starting with 5.3.0, we import a clean tree from the upstream github, removing all the old files that are no longer upstream, or that we've kept around for some reason. We do this because we merge from this raw version of jemalloc into the FreeBSD contrib/jemalloc, then we run autogen stuff, generate all the generated .h files with gmake, then finally remove much of the generated files in contrib/jemalloc using an update script. Sponsored by: Netflix
Diffstat (limited to 'include/jemalloc/internal/sec_opts.h')
-rw-r--r--include/jemalloc/internal/sec_opts.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/include/jemalloc/internal/sec_opts.h b/include/jemalloc/internal/sec_opts.h
new file mode 100644
index 000000000000..a3ad72fbece5
--- /dev/null
+++ b/include/jemalloc/internal/sec_opts.h
@@ -0,0 +1,59 @@
+#ifndef JEMALLOC_INTERNAL_SEC_OPTS_H
+#define JEMALLOC_INTERNAL_SEC_OPTS_H
+
+/*
+ * The configuration settings used by an sec_t. Morally, this is part of the
+ * SEC interface, but we put it here for header-ordering reasons.
+ */
+
+typedef struct sec_opts_s sec_opts_t;
+struct sec_opts_s {
+ /*
+ * We don't necessarily always use all the shards; requests are
+ * distributed across shards [0, nshards - 1).
+ */
+ size_t nshards;
+ /*
+ * We'll automatically refuse to cache any objects in this sec if
+ * they're larger than max_alloc bytes, instead forwarding such objects
+ * directly to the fallback.
+ */
+ size_t max_alloc;
+ /*
+ * Exceeding this amount of cached extents in a shard causes us to start
+ * flushing bins in that shard until we fall below bytes_after_flush.
+ */
+ size_t max_bytes;
+ /*
+ * The number of bytes (in all bins) we flush down to when we exceed
+ * bytes_cur. We want this to be less than bytes_cur, because
+ * otherwise we could get into situations where a shard undergoing
+ * net-deallocation keeps bytes_cur very near to max_bytes, so that
+ * most deallocations get immediately forwarded to the underlying PAI
+ * implementation, defeating the point of the SEC.
+ */
+ size_t bytes_after_flush;
+ /*
+ * When we can't satisfy an allocation out of the SEC because there are
+ * no available ones cached, we allocate multiple of that size out of
+ * the fallback allocator. Eventually we might want to do something
+ * cleverer, but for now we just grab a fixed number.
+ */
+ size_t batch_fill_extra;
+};
+
+#define SEC_OPTS_DEFAULT { \
+ /* nshards */ \
+ 4, \
+ /* max_alloc */ \
+ (32 * 1024) < PAGE ? PAGE : (32 * 1024), \
+ /* max_bytes */ \
+ 256 * 1024, \
+ /* bytes_after_flush */ \
+ 128 * 1024, \
+ /* batch_fill_extra */ \
+ 0 \
+}
+
+
+#endif /* JEMALLOC_INTERNAL_SEC_OPTS_H */