diff options
author | Justus Winter <4winter@informatik.uni-hamburg.de> | 2015-04-23 19:51:51 +0200 |
---|---|---|
committer | Justus Winter <4winter@informatik.uni-hamburg.de> | 2015-04-23 19:51:51 +0200 |
commit | 862b733dcbeabed8dd545e1c3b3e55bb4e4da52f (patch) | |
tree | f7a8cc035729126b11fe124e4ed040164375b83b /kern | |
parent | bdd46d40d96c4da6f2b98d4e1b2aa04ba5f5848e (diff) |
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.
Diffstat (limited to 'kern')
-rw-r--r-- | kern/counters.c | 3 | ||||
-rw-r--r-- | kern/counters.h | 3 | ||||
-rw-r--r-- | 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(); } } |