diff options
author | Maria Matejka <mq@ucw.cz> | 2022-09-20 14:57:43 +0200 |
---|---|---|
committer | Maria Matejka <mq@ucw.cz> | 2022-09-20 14:57:43 +0200 |
commit | 28d4ac6c97fd8021083a523fc713fc6d9322f181 (patch) | |
tree | 5f332b4a80df8378b8b29a6e2980e68b456a11db | |
parent | a00e0b5930b6f1e56eed65cb5250aa9120a6f506 (diff) |
Fixed display of standby memory
-rw-r--r-- | nest/cmds.c | 6 | ||||
-rw-r--r-- | sysdep/unix/alloc.c | 10 |
2 files changed, 7 insertions, 9 deletions
diff --git a/nest/cmds.c b/nest/cmds.c index 96a3ec91..0748c74f 100644 --- a/nest/cmds.c +++ b/nest/cmds.c @@ -120,9 +120,9 @@ cmd_show_memory(void) print_size("Protocols:", rmemsize(proto_pool)); struct resmem total = rmemsize(&root_pool); #ifdef HAVE_MMAP - int pages_kept = atomic_load_explicit(&pages_kept, memory_order_relaxed); - print_size("Standby memory:", (struct resmem) { .overhead = page_size * pages_kept }); - total.overhead += page_size * pages_kept; + int pk = atomic_load_explicit(&pages_kept, memory_order_relaxed); + print_size("Standby memory:", (struct resmem) { .overhead = page_size * pk }); + total.overhead += page_size * pk; #endif print_size("Total:", total); cli_msg(0, ""); diff --git a/sysdep/unix/alloc.c b/sysdep/unix/alloc.c index 47cd4624..1559fe97 100644 --- a/sysdep/unix/alloc.c +++ b/sysdep/unix/alloc.c @@ -93,9 +93,7 @@ alloc_page(void) if (!fp) return alloc_sys_page(); - if (atomic_fetch_sub_explicit(&pages_kept, 1, memory_order_relaxed) <= KEEP_PAGES_MIN) - SCHEDULE_CLEANUP; - + atomic_fetch_sub_explicit(&pages_kept, 1, memory_order_relaxed); return fp; #endif } @@ -146,15 +144,15 @@ page_cleanup(void *_ UNUSED) else free_page(f); } - while (stack && (atomic_fetch_sub_explicit(&pages_kept, 1, memory_order_relaxed) >= KEEP_PAGES_MAX / 2)); + while ((atomic_fetch_sub_explicit(&pages_kept, 1, memory_order_relaxed) >= KEEP_PAGES_MAX / 2) && stack); while (stack) { - atomic_fetch_sub_explicit(&pages_kept, 1, memory_order_relaxed); - struct free_page *f = stack; stack = atomic_load_explicit(&f->next, memory_order_acquire); free_page(f); + + atomic_fetch_sub_explicit(&pages_kept, 1, memory_order_relaxed); } } #endif |