summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/patches/disable-more-counters.patch83
-rw-r--r--debian/patches/series1
2 files changed, 84 insertions, 0 deletions
diff --git a/debian/patches/disable-more-counters.patch b/debian/patches/disable-more-counters.patch
new file mode 100644
index 0000000..9e5a106
--- /dev/null
+++ b/debian/patches/disable-more-counters.patch
@@ -0,0 +1,83 @@
+commit 862b733dcbeabed8dd545e1c3b3e55bb4e4da52f
+Author: Justus Winter <4winter@informatik.uni-hamburg.de>
+Date: Thu Apr 23 19:51:51 2015 +0200
+
+ kern: disable stack allocation counters by default
+
+ 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.
+
+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();
+ }
+ }
diff --git a/debian/patches/series b/debian/patches/series
index eb09925..b0558f3 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -17,3 +17,4 @@ reorder-ipc_port.patch
0007-ipc-inline-key-ipc-entry-lookup-functions.patch
0008-xxx-use-a-rbtree-for-reverse-lookups.patch
0009-kern-fix-comment.patch
+disable-more-counters.patch