diff options
author | ajs <ajs> | 2005-04-16 17:11:24 +0000 |
---|---|---|
committer | ajs <ajs> | 2005-04-16 17:11:24 +0000 |
commit | 924b9229717b749e303f3fb161616bebf53b5cdc (patch) | |
tree | 4788cd7cdc18bfc1cd12916ba506c091e9d73fb8 /lib/thread.c | |
parent | dc830cbfac8dd9633e070550359a5d6f8dac8fe5 (diff) |
2005-04-16 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* configure.ac: Added AC_ARG_ENABLE(time-check). By default,
warning messages will now be printed for threads or commands that take
longer than 5 seconds, but this configure argument can be used
to disable the checks or change the threshold.
* thread.h (thread_consumed_time): Declare new function to calculate
elapsed microseconds.
* thread.c (thread_consumed_time): Must be global not static so we
can call it from lib/vty.c:vty_command.
(thread_should_yield): Surround with `#if 0' to make clear that this
function is not currently being used anywhere.
(thread_call): If CONSUMED_TIME_CHECK is defined, print a CPU HOG
warning message if the thread takes more than CONSUMED_TIME_CHECK
microseconds.
* vty.c (vty_command): If CONSUMED_TIME_CHECK is defined, print a CPU
HOG warning message if the command takes more than CONSUMED_TIME_CHECK
microseconds.
Diffstat (limited to 'lib/thread.c')
-rw-r--r-- | lib/thread.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/lib/thread.c b/lib/thread.c index 05212d85..d1c925c4 100644 --- a/lib/thread.c +++ b/lib/thread.c @@ -804,7 +804,7 @@ thread_fetch (struct thread_master *m, struct thread *fetch) } } -static unsigned long +unsigned long thread_consumed_time (RUSAGE_T *now, RUSAGE_T *start) { unsigned long thread_time; @@ -821,6 +821,10 @@ thread_consumed_time (RUSAGE_T *now, RUSAGE_T *start) return thread_time; } +#if 0 + +/* This function is not currently used: threads never yield! */ + /* We should aim to yield after THREAD_YIELD_TIME_SLOT milliseconds. */ int @@ -836,6 +840,8 @@ thread_should_yield (struct thread *thread) return 0; } +#endif + /* We check thread consumed time. If the system has getrusage, we'll use that to get indepth stats on the performance of the thread. If not - we'll use gettimeofday for some guestimation. */ @@ -864,20 +870,20 @@ thread_call (struct thread *thread) ++cpu->total_calls; cpu->types |= (1 << thread->add_type); -#ifdef THREAD_CONSUMED_TIME_CHECK - if (thread_time > 200000L) +#ifdef CONSUMED_TIME_CHECK + if (thread_time > CONSUMED_TIME_CHECK) { /* * We have a CPU Hog on our hands. * Whinge about it now, so we're aware this is yet another task * to fix. */ - zlog_err ("CPU HOG task %s (%lx) ran for %ldms", - thread->funcname, - (unsigned long) thread->func, - thread_time / 1000L); + zlog_warn ("CPU HOG: task %s (%lx) ran for %ldms", + thread->funcname, + (unsigned long) thread->func, + thread_time / 1000L); } -#endif /* THREAD_CONSUMED_TIME_CHECK */ +#endif /* CONSUMED_TIME_CHECK */ } /* Execute thread */ |