bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[committed mach 1/2] kern: disable stack allocation counters by default


From: Justus Winter
Subject: [committed mach 1/2] kern: disable stack allocation counters by default
Date: Sat, 25 Apr 2015 13:00:07 +0200

Disable the stack allocation counters by default.  Casual checking
revealed that the hits-to-miss ratio is excellent.

* kern/thread.c (stack_alloc_{hits,misses,max}): Move variables...
* kern/counters.c: ... here, and add the usual counter prefix.
* kern/counters.h: New declarations.
---
 kern/counters.c |  3 +++
 kern/counters.h |  3 +++
 kern/thread.c   | 15 +++++++--------
 3 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/kern/counters.c b/kern/counters.c
index 74fd42d..0a0665b 100644
--- a/kern/counters.c
+++ b/kern/counters.c
@@ -46,6 +46,9 @@ mach_counter_t c_stacks_current = 0;
 mach_counter_t c_stacks_max = 0;
 mach_counter_t c_stacks_min = 0;
 mach_counter_t c_stacks_total = 0;
+mach_counter_t c_stack_alloc_hits = 0;
+mach_counter_t c_stack_alloc_misses = 0;
+mach_counter_t c_stack_alloc_max = 0;
 mach_counter_t c_clock_ticks = 0;
 mach_counter_t c_ipc_mqueue_send_block = 0;
 mach_counter_t c_ipc_mqueue_receive_block_user = 0;
diff --git a/kern/counters.h b/kern/counters.h
index bfa9b44..aa1e739 100644
--- a/kern/counters.h
+++ b/kern/counters.h
@@ -69,6 +69,9 @@ extern mach_counter_t c_stacks_current;
 extern mach_counter_t c_stacks_max;
 extern mach_counter_t c_stacks_min;
 extern mach_counter_t c_stacks_total;
+extern mach_counter_t c_stack_alloc_hits;
+extern mach_counter_t c_stack_alloc_misses;
+extern mach_counter_t c_stack_alloc_max;
 extern mach_counter_t c_clock_ticks;
 extern mach_counter_t c_ipc_mqueue_send_block;
 extern mach_counter_t c_ipc_mqueue_receive_block_user;
diff --git a/kern/thread.c b/kern/thread.c
index 5ffa844..009884c 100644
--- a/kern/thread.c
+++ b/kern/thread.c
@@ -124,10 +124,6 @@ vm_offset_t stack_free_list;               /* splsched 
only */
 unsigned int stack_free_count = 0;     /* splsched only */
 unsigned int stack_free_limit = 1;     /* patchable */
 
-unsigned int stack_alloc_hits = 0;     /* debugging */
-unsigned int stack_alloc_misses = 0;   /* debugging */
-unsigned int stack_alloc_max = 0;      /* debugging */
-
 /*
  *     The next field is at the base of the stack,
  *     so the low end is left unsullied.
@@ -160,10 +156,10 @@ boolean_t stack_alloc_try(
 
        if (stack != 0) {
                stack_attach(thread, stack, resume);
-               stack_alloc_hits++;
+               counter(c_stack_alloc_hits++);
                return TRUE;
        } else {
-               stack_alloc_misses++;
+               counter(c_stack_alloc_misses++);
                return FALSE;
        }
 }
@@ -235,8 +231,11 @@ void stack_free(
                stack_lock();
                stack_next(stack) = stack_free_list;
                stack_free_list = stack;
-               if (++stack_free_count > stack_alloc_max)
-                       stack_alloc_max = stack_free_count;
+               stack_free_count += 1;
+#if    MACH_COUNTERS
+               if (stack_free_count > c_stack_alloc_max)
+                       c_stack_alloc_max = stack_free_count;
+#endif /* MACH_COUNTERS */
                stack_unlock();
        }
 }
-- 
2.1.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]