Skip to content

PS-10595 [8.4]: Add innodb_large_page_populate to control huge page pre-population#6036

Open
polchawa-percona wants to merge 1 commit into
percona:8.4from
polchawa-percona:PS-10595-8.4-large-page-populate
Open

PS-10595 [8.4]: Add innodb_large_page_populate to control huge page pre-population#6036
polchawa-percona wants to merge 1 commit into
percona:8.4from
polchawa-percona:PS-10595-8.4-large-page-populate

Conversation

@polchawa-percona

Copy link
Copy Markdown
Contributor

https://perconadev.atlassian.net/browse/PS-10595

This patch is a contribution from Alexey Bychko abychko@gmail.com.

Introduce a new InnoDB boolean system variable innodb_large_page_populate
(Linux only) that controls whether huge pages and page-aligned allocations
used by the buffer pool and the page allocator are pre-populated at allocation
time.

When OFF (default), large_page_aligned_alloc() and page_aligned_alloc()
skip MAP_POPULATE and the explicit prefault step by masking the caller's
populate request with the global flag. This reduces startup time and
NUMA-related overhead on large systems with huge pages. When ON, the previous
behavior (honor the caller's populate request) is preserved.

The backing global is named srv_large_page_populate, following the srv_
naming convention used by other InnoDB globals. On non-Linux platforms the flag
is a compile-time constant true, so behavior there is unchanged.

@polchawa-percona polchawa-percona changed the title PS-10595 (8.4) Add innodb_large_page_populate to control huge page pre-population Jun 25, 2026
@polchawa-percona polchawa-percona self-assigned this Jun 25, 2026
…re-population

https://perconadev.atlassian.net/browse/PS-10595

Introduce a new InnoDB boolean system variable innodb_large_page_populate
(Linux only) that controls whether huge pages and page-aligned allocations
used by the buffer pool and the page allocator are pre-populated at
allocation time.

When OFF (default), large_page_aligned_alloc() and page_aligned_alloc()
skip MAP_POPULATE and the explicit prefault step by masking the caller's
populate request with the global flag. This reduces startup time and
NUMA-related overhead on large systems with huge pages. When ON, the
previous behavior (honor the caller's populate request) is preserved.

The backing global is named srv_large_page_populate, following the srv_
naming convention used by other InnoDB globals. On non-Linux platforms the
flag is a compile-time constant true, so behavior there is unchanged.
@polchawa-percona polchawa-percona force-pushed the PS-10595-8.4-large-page-populate branch from ab84b8e to 1645c87 Compare June 26, 2026 10:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants