David T. Goldblatt | 7f1b02e | 2017-11-04 12:50:19 -0700 | [diff] [blame] | 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 | mutex_prof_data_t mutex_data; |
| 49 | }; |
| 50 | |
| 51 | #endif /* JEMALLOC_INTERNAL_BIN_STATS_H */ |