2017-01-11 10:06:31 +08:00
|
|
|
#ifndef JEMALLOC_INTERNAL_STATS_STRUCTS_H
|
|
|
|
#define JEMALLOC_INTERNAL_STATS_STRUCTS_H
|
2010-01-17 01:53:50 +08:00
|
|
|
|
|
|
|
struct tcache_bin_stats_s {
|
|
|
|
/*
|
|
|
|
* Number of allocation requests that corresponded to the size of this
|
|
|
|
* bin.
|
|
|
|
*/
|
|
|
|
uint64_t nrequests;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct malloc_bin_stats_s {
|
2010-03-14 12:32:56 +08:00
|
|
|
/*
|
|
|
|
* Total number of allocation/deallocation requests served directly by
|
|
|
|
* the bin. Note that tcache may allocate an object, then recycle it
|
|
|
|
* many times, resulting many increments to nrequests, but only one
|
|
|
|
* each to nmalloc and ndalloc.
|
|
|
|
*/
|
|
|
|
uint64_t nmalloc;
|
|
|
|
uint64_t ndalloc;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Number of allocation requests that correspond to the size of this
|
|
|
|
* bin. This includes requests served by tcache, though tcache only
|
|
|
|
* periodically merges into this counter.
|
2010-01-17 01:53:50 +08:00
|
|
|
*/
|
|
|
|
uint64_t nrequests;
|
|
|
|
|
2014-10-13 13:53:59 +08:00
|
|
|
/*
|
|
|
|
* Current number of regions of this size class, including regions
|
|
|
|
* currently cached by tcache.
|
|
|
|
*/
|
|
|
|
size_t curregs;
|
|
|
|
|
2010-01-17 01:53:50 +08:00
|
|
|
/* Number of tcache fills from this bin. */
|
|
|
|
uint64_t nfills;
|
|
|
|
|
|
|
|
/* Number of tcache flushes to this bin. */
|
|
|
|
uint64_t nflushes;
|
|
|
|
|
2016-05-30 09:34:50 +08:00
|
|
|
/* Total number of slabs created for this bin's size class. */
|
|
|
|
uint64_t nslabs;
|
2010-01-17 01:53:50 +08:00
|
|
|
|
|
|
|
/*
|
2016-05-30 09:34:50 +08:00
|
|
|
* Total number of slabs reused by extracting them from the slabs heap
|
|
|
|
* for this bin's size class.
|
2010-01-17 01:53:50 +08:00
|
|
|
*/
|
2016-05-30 09:34:50 +08:00
|
|
|
uint64_t reslabs;
|
2010-01-17 01:53:50 +08:00
|
|
|
|
2016-05-30 09:34:50 +08:00
|
|
|
/* Current number of slabs in this bin. */
|
|
|
|
size_t curslabs;
|
2010-01-17 01:53:50 +08:00
|
|
|
};
|
|
|
|
|
2016-06-01 05:50:21 +08:00
|
|
|
struct malloc_large_stats_s {
|
2010-01-17 01:53:50 +08:00
|
|
|
/*
|
2010-03-18 07:27:39 +08:00
|
|
|
* Total number of allocation/deallocation requests served directly by
|
2016-05-28 15:17:28 +08:00
|
|
|
* the arena.
|
2010-03-18 07:27:39 +08:00
|
|
|
*/
|
|
|
|
uint64_t nmalloc;
|
|
|
|
uint64_t ndalloc;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Number of allocation requests that correspond to this size class.
|
|
|
|
* This includes requests served by tcache, though tcache only
|
|
|
|
* periodically merges into this counter.
|
2010-01-17 01:53:50 +08:00
|
|
|
*/
|
|
|
|
uint64_t nrequests;
|
|
|
|
|
2016-06-02 04:53:56 +08:00
|
|
|
/* Current number of allocations of this size class. */
|
2016-06-01 05:50:21 +08:00
|
|
|
size_t curlextents;
|
2014-10-13 13:53:59 +08:00
|
|
|
};
|
|
|
|
|
2017-01-30 13:57:14 +08:00
|
|
|
/*
|
|
|
|
* Arena stats. Note that fields marked "derived" are not directly maintained
|
|
|
|
* within the arena code; rather their values are derived during stats merge
|
|
|
|
* requests.
|
|
|
|
*/
|
2010-01-17 01:53:50 +08:00
|
|
|
struct arena_stats_s {
|
2017-02-13 09:43:33 +08:00
|
|
|
#ifndef JEMALLOC_ATOMIC_U64
|
|
|
|
malloc_mutex_t mtx;
|
|
|
|
#endif
|
|
|
|
|
2017-01-30 13:57:14 +08:00
|
|
|
/* Number of bytes currently mapped, excluding retained memory. */
|
2017-02-26 06:10:05 +08:00
|
|
|
size_t mapped; /* Partially derived. */
|
2010-01-17 01:53:50 +08:00
|
|
|
|
2016-05-04 13:11:35 +08:00
|
|
|
/*
|
|
|
|
* Number of bytes currently retained as a side effect of munmap() being
|
|
|
|
* disabled/bypassed. Retained bytes are technically mapped (though
|
|
|
|
* always decommitted or purged), but they are excluded from the mapped
|
|
|
|
* statistic (above).
|
|
|
|
*/
|
2017-01-30 13:57:14 +08:00
|
|
|
size_t retained; /* Derived. */
|
2016-05-04 13:11:35 +08:00
|
|
|
|
2010-01-17 01:53:50 +08:00
|
|
|
/*
|
|
|
|
* Total number of purge sweeps, total number of madvise calls made,
|
|
|
|
* and total pages purged in order to keep dirty unused memory under
|
|
|
|
* control.
|
|
|
|
*/
|
|
|
|
uint64_t npurge;
|
|
|
|
uint64_t nmadvise;
|
|
|
|
uint64_t purged;
|
|
|
|
|
2017-01-30 13:57:14 +08:00
|
|
|
size_t base; /* Derived. */
|
2017-02-13 09:43:33 +08:00
|
|
|
size_t internal;
|
2017-01-30 13:57:14 +08:00
|
|
|
size_t resident; /* Derived. */
|
2014-11-28 03:22:36 +08:00
|
|
|
|
2017-02-14 01:44:46 +08:00
|
|
|
size_t allocated_large; /* Derived. */
|
|
|
|
uint64_t nmalloc_large; /* Derived. */
|
|
|
|
uint64_t ndalloc_large; /* Derived. */
|
|
|
|
uint64_t nrequests_large; /* Derived. */
|
2014-10-13 13:53:59 +08:00
|
|
|
|
2016-04-23 09:37:44 +08:00
|
|
|
/* Number of bytes cached in tcache associated with this arena. */
|
2017-01-30 13:57:14 +08:00
|
|
|
size_t tcache_bytes; /* Derived. */
|
2016-04-23 09:37:44 +08:00
|
|
|
|
2016-06-01 05:50:21 +08:00
|
|
|
/* One element for each large size class. */
|
|
|
|
malloc_large_stats_t lstats[NSIZES - NBINS];
|
2010-01-17 01:53:50 +08:00
|
|
|
};
|
|
|
|
|
2017-01-11 10:06:31 +08:00
|
|
|
#endif /* JEMALLOC_INTERNAL_STATS_STRUCTS_H */
|