mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-04-14 22:51:50 +03:00
Add opt hpa_hugify_sync to hugify synchronously
Linux 6.1 introduced `MADV_COLLAPSE` flag to perform a best-effort synchronous collapse of the native pages mapped by the memory range into transparent huge pages. Synchronous hugification might be beneficial for at least two reasons: we are not relying on khugepaged anymore and get an instant feedback if range wasn't hugified. If `hpa_hugify_sync` option is on, we'll try to perform synchronously collapse and if it wasn't successful, we'll fallback to asynchronous behaviour.
This commit is contained in:
parent
a361e886e2
commit
0ce13c6fb5
15 changed files with 141 additions and 8 deletions
|
|
@ -32,6 +32,8 @@ static hpa_shard_opts_t test_hpa_shard_opts_default = {
|
|||
false,
|
||||
/* hugify_delay_ms */
|
||||
10 * 1000,
|
||||
/* hugify_sync */
|
||||
false,
|
||||
/* min_purge_interval_ms */
|
||||
5 * 1000,
|
||||
/* experimental_max_purge_nhp */
|
||||
|
|
@ -49,6 +51,8 @@ static hpa_shard_opts_t test_hpa_shard_opts_purge = {
|
|||
true,
|
||||
/* hugify_delay_ms */
|
||||
0,
|
||||
/* hugify_sync */
|
||||
false,
|
||||
/* min_purge_interval_ms */
|
||||
5 * 1000,
|
||||
/* experimental_max_purge_nhp */
|
||||
|
|
@ -371,9 +375,10 @@ defer_test_purge(void *ptr, size_t size) {
|
|||
}
|
||||
|
||||
static size_t ndefer_hugify_calls = 0;
|
||||
static void
|
||||
defer_test_hugify(void *ptr, size_t size) {
|
||||
static bool
|
||||
defer_test_hugify(void *ptr, size_t size, bool sync) {
|
||||
++ndefer_hugify_calls;
|
||||
return false;
|
||||
}
|
||||
|
||||
static size_t ndefer_dehugify_calls = 0;
|
||||
|
|
|
|||
|
|
@ -288,6 +288,7 @@ TEST_BEGIN(test_mallctl_opt) {
|
|||
TEST_MALLCTL_OPT(const char *, dss, always);
|
||||
TEST_MALLCTL_OPT(bool, hpa, always);
|
||||
TEST_MALLCTL_OPT(size_t, hpa_slab_max_alloc, always);
|
||||
TEST_MALLCTL_OPT(bool, hpa_hugify_sync, always);
|
||||
TEST_MALLCTL_OPT(size_t, hpa_sec_nshards, always);
|
||||
TEST_MALLCTL_OPT(size_t, hpa_sec_max_alloc, always);
|
||||
TEST_MALLCTL_OPT(size_t, hpa_sec_max_bytes, always);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue