| #ifndef JEMALLOC_INTERNAL_BASE_TYPES_H |
| #define JEMALLOC_INTERNAL_BASE_TYPES_H |
| |
| typedef struct base_block_s base_block_t; |
| typedef struct base_s base_t; |
| |
| #define METADATA_THP_DEFAULT metadata_thp_disabled |
| |
| /* |
| * In auto mode, arenas switch to huge pages for the base allocator on the |
| * second base block. a0 switches to thp on the 5th block (after 20 megabytes |
| * of metadata), since more metadata (e.g. rtree nodes) come from a0's base. |
| */ |
| |
| #define BASE_AUTO_THP_THRESHOLD 2 |
| #define BASE_AUTO_THP_THRESHOLD_A0 5 |
| |
| typedef enum { |
| metadata_thp_disabled = 0, |
| /* |
| * Lazily enable hugepage for metadata. To avoid high RSS caused by THP |
| * + low usage arena (i.e. THP becomes a significant percentage), the |
| * "auto" option only starts using THP after a base allocator used up |
| * the first THP region. Starting from the second hugepage (in a single |
| * arena), "auto" behaves the same as "always", i.e. madvise hugepage |
| * right away. |
| */ |
| metadata_thp_auto = 1, |
| metadata_thp_always = 2, |
| metadata_thp_mode_limit = 3 |
| } metadata_thp_mode_t; |
| |
| #endif /* JEMALLOC_INTERNAL_BASE_TYPES_H */ |