1#ifndef JEMALLOC_INTERNAL_BASE_TYPES_H
2#define JEMALLOC_INTERNAL_BASE_TYPES_H
3
4typedef struct base_block_s base_block_t;
5typedef struct base_s base_t;
6
7#define METADATA_THP_DEFAULT metadata_thp_disabled
8
9/*
10 * In auto mode, arenas switch to huge pages for the base allocator on the
11 * second base block. a0 switches to thp on the 5th block (after 20 megabytes
12 * of metadata), since more metadata (e.g. rtree nodes) come from a0's base.
13 */
14
15#define BASE_AUTO_THP_THRESHOLD 2
16#define BASE_AUTO_THP_THRESHOLD_A0 5
17
18typedef enum {
19 metadata_thp_disabled = 0,
20 /*
21 * Lazily enable hugepage for metadata. To avoid high RSS caused by THP
22 * + low usage arena (i.e. THP becomes a significant percentage), the
23 * "auto" option only starts using THP after a base allocator used up
24 * the first THP region. Starting from the second hugepage (in a single
25 * arena), "auto" behaves the same as "always", i.e. madvise hugepage
26 * right away.
27 */
28 metadata_thp_auto = 1,
29 metadata_thp_always = 2,
30 metadata_thp_mode_limit = 3
31} metadata_thp_mode_t;
32
33#endif /* JEMALLOC_INTERNAL_BASE_TYPES_H */
34