1 | #ifndef JEMALLOC_INTERNAL_BASE_TYPES_H |
2 | #define JEMALLOC_INTERNAL_BASE_TYPES_H |
3 | |
4 | typedef struct base_block_s base_block_t; |
5 | typedef 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 | |
18 | typedef 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 | |