xref: /freebsd/contrib/jemalloc/include/jemalloc/internal/bin_stats.h (revision c5ad81420c495d1d5de04209b0ec4fcb435c322c)
1 #ifndef JEMALLOC_INTERNAL_BIN_STATS_H
2 #define JEMALLOC_INTERNAL_BIN_STATS_H
3 
4 #include "jemalloc/internal/mutex_prof.h"
5 
6 typedef struct bin_stats_s bin_stats_t;
7 struct bin_stats_s {
8 	/*
9 	 * Total number of allocation/deallocation requests served directly by
10 	 * the bin.  Note that tcache may allocate an object, then recycle it
11 	 * many times, resulting many increments to nrequests, but only one
12 	 * each to nmalloc and ndalloc.
13 	 */
14 	uint64_t	nmalloc;
15 	uint64_t	ndalloc;
16 
17 	/*
18 	 * Number of allocation requests that correspond to the size of this
19 	 * bin.  This includes requests served by tcache, though tcache only
20 	 * periodically merges into this counter.
21 	 */
22 	uint64_t	nrequests;
23 
24 	/*
25 	 * Current number of regions of this size class, including regions
26 	 * currently cached by tcache.
27 	 */
28 	size_t		curregs;
29 
30 	/* Number of tcache fills from this bin. */
31 	uint64_t	nfills;
32 
33 	/* Number of tcache flushes to this bin. */
34 	uint64_t	nflushes;
35 
36 	/* Total number of slabs created for this bin's size class. */
37 	uint64_t	nslabs;
38 
39 	/*
40 	 * Total number of slabs reused by extracting them from the slabs heap
41 	 * for this bin's size class.
42 	 */
43 	uint64_t	reslabs;
44 
45 	/* Current number of slabs in this bin. */
46 	size_t		curslabs;
47 
48 	/* Current size of nonfull slabs heap in this bin. */
49 	size_t		nonfull_slabs;
50 
51 	mutex_prof_data_t mutex_data;
52 };
53 
54 #endif /* JEMALLOC_INTERNAL_BIN_STATS_H */
55