From 54752baf1a668abfb311ec1463998cf84894d060 Mon Sep 17 00:00:00 2001 From: Danny Auble <da@llnl.gov> Date: Thu, 6 Aug 2009 20:23:00 +0000 Subject: [PATCH] added END_TIMER3 to give a limit with end_time --- src/common/timers.c | 15 +++++++++++---- src/common/timers.h | 11 ++++++++--- .../mysql/accounting_storage_mysql.c | 2 +- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/common/timers.c b/src/common/timers.c index 5cc6ca1bd1e..d16cbacc568 100644 --- a/src/common/timers.c +++ b/src/common/timers.c @@ -49,15 +49,22 @@ * IN from - where the function was called form */ inline void diff_tv_str(struct timeval *tv1,struct timeval *tv2, - char *tv_str, int len_tv_str, char *from) + char *tv_str, int len_tv_str, char *from, + long limit) { long delta_t; + delta_t = (tv2->tv_sec - tv1->tv_sec) * 1000000; delta_t += tv2->tv_usec - tv1->tv_usec; snprintf(tv_str, len_tv_str, "usec=%ld", delta_t); - if ((delta_t > 1000000) && from) { - verbose("Warning: Note very large processing time from %s: %s", - from, tv_str); + if(from) { + if(!limit) + limit = 1000000; + if(delta_t > limit) { + verbose("Warning: Note very large processing " + "time from %s: %s", + from, tv_str); + } } } diff --git a/src/common/timers.h b/src/common/timers.h index 6cc38daf46a..e7fb6cc9162 100644 --- a/src/common/timers.h +++ b/src/common/timers.h @@ -44,9 +44,11 @@ #define DEF_TIMERS struct timeval tv1, tv2; char tv_str[20] #define START_TIMER gettimeofday(&tv1, NULL) #define END_TIMER gettimeofday(&tv2, NULL); \ - diff_tv_str(&tv1, &tv2, tv_str, 20, NULL) + diff_tv_str(&tv1, &tv2, tv_str, 20, NULL, 0) #define END_TIMER2(from) gettimeofday(&tv2, NULL); \ - diff_tv_str(&tv1, &tv2, tv_str, 20, from) + diff_tv_str(&tv1, &tv2, tv_str, 20, from, 0) +#define END_TIMER3(from, limit) gettimeofday(&tv2, NULL); \ + diff_tv_str(&tv1, &tv2, tv_str, 20, from, limit) #define DELTA_TIMER diff_tv(&tv1, &tv2) #define TIME_STR tv_str @@ -56,9 +58,12 @@ * IN tv2 - end of event * OUT tv_str - place to put delta time in format "usec=%ld" * IN len_tv_str - size of tv_str in bytes + * IN from - Name to be printed on long diffs + * IN limit - limit to wait */ extern inline void diff_tv_str(struct timeval *tv1,struct timeval *tv2, - char *tv_str, int len_tv_str, char *from); + char *tv_str, int len_tv_str, char *from, + long limit); /* * diff_tv - return the difference between two times diff --git a/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c b/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c index 8a165ce5ec1..ba8158cec81 100644 --- a/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c +++ b/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c @@ -9964,7 +9964,7 @@ extern int acct_storage_p_roll_usage(mysql_conn_t *mysql_conn, if((rc = mysql_hourly_rollup(mysql_conn, start_time, end_time)) != SLURM_SUCCESS) return rc; - END_TIMER2("hourly_rollup"); + END_TIMER3("hourly_rollup", 5000000); /* If we have a sent_end do not update the last_run_table */ if(!sent_end) query = xstrdup_printf("update %s set hourly_rollup=%d", -- GitLab