fb327368db
This change pulls the SEC options into a struct, which simplifies their handling across various modules (e.g. PA needs to forward on SEC options from the malloc_conf string, but it doesn't really need to know their names). While we're here, make some of the fixed constants configurable, and unify naming from the configuration options to the internals.
60 lines
1.8 KiB
C
60 lines
1.8 KiB
C
#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, \
|
|
/* max_bytes */ \
|
|
256 * 1024, \
|
|
/* bytes_after_flush */ \
|
|
128 * 1024, \
|
|
/* batch_fill_extra */ \
|
|
0 \
|
|
}
|
|
|
|
|
|
#endif /* JEMALLOC_INTERNAL_SEC_OPTS_H */
|