]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Fixed display of standby memory
authorMaria Matejka <mq@ucw.cz>
Tue, 20 Sep 2022 12:57:43 +0000 (14:57 +0200)
committerMaria Matejka <mq@ucw.cz>
Tue, 20 Sep 2022 12:57:43 +0000 (14:57 +0200)
nest/cmds.c
sysdep/unix/alloc.c

index 96a3ec91a6986b930480a97d23aa3bad58dd2dff..0748c74f326371241cf80e4c34270059e535c579 100644 (file)
@@ -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, "");
index 47cd46249b246c3ec48f172fabfc509c98762b38..1559fe97d07f75137a3d3fd6892b20d71471ae6f 100644 (file)
@@ -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