* [PATCH] Remove time waiting for user from walltime in stats [not found] <CAHX8C++LmtfTqjOvargL3O1WiwL9+RP=3uXqQB0gutSGd+49sA@mail.gmail.com> @ 2012-05-21 20:22 ` Aaron Gamble 2012-05-21 20:43 ` Aaron Gamble 0 siblings, 1 reply; 5+ messages in thread From: Aaron Gamble @ 2012-05-21 20:22 UTC (permalink / raw) To: gdb-patches Hi, Here is a patch to remove the time a gdb is waiting for a user to respond to paging from gdb's internal statistics. Currently if a user is reading paged output and waits 10 seconds to read/respond, those 10 seconds are added to the walltime for the command issued. Time spent waiting for the user is stored in a global static variable in utils.c and is subtracted from the wall time when the stats are printed. 2012-05-21 Aaron Gamble <agamble@google.com> * gdb/utils.c: Added global static variable to track time spend waiting for user in paging --- a/gdb/utils.c 2012-05-11 12:21:33.000000000 -0700 +++ b/gdb/utils.c 2012-05-18 14:16:56.000000000 -0700 @@ -104,6 +104,14 @@ static void set_screen_size (void); static void set_width (void); +/* Time spent in prompt_for_continue in the currently executing command + waiting for user to respond. + Initialized in make_command_stats_cleanup. + Modified in prompt_for_continue. + Used in report_command_stats. */ + +static struct timeval prompt_for_continue_wait_time; + /* A flag indicating whether to timestamp debugging messages. */ static int debug_timestamp = 0; @@ -535,6 +543,10 @@ timeval_sub (&delta_wall_time, &now_wall_time, &start_stats->start_wall_time); + /* Subtract time spend in prompt_for_continue from walltime. */ + timeval_sub (&delta_wall_time, + &delta_wall_time, &prompt_for_continue_wait_time); + printf_unfiltered (msg_type == 0 ? _("Startup time: %ld.%06ld (cpu), %ld.%06ld (wall)\n") : _("Command execution time: %ld.%06ld (cpu), %ld.%06ld (wall)\n"), @@ -568,6 +580,7 @@ struct cleanup * make_command_stats_cleanup (int msg_type) { + static const struct timeval zero_timeval = { 0 }; struct cmd_stats *new_stat = XMALLOC (struct cmd_stats); #ifdef HAVE_SBRK @@ -578,6 +591,9 @@ new_stat->msg_type = msg_type; new_stat->start_cpu_time = get_run_time (); gettimeofday (&new_stat->start_wall_time, NULL); + + /* Initalize timer to keep track of how long we waited for the user. */ + prompt_for_continue_wait_time = zero_timeval; return make_cleanup_dtor (report_command_stats, new_stat, xfree); } @@ -1795,6 +1811,11 @@ { char *ignore; char cont_prompt[120]; + /* Used to add duration we waited for user to respond to + prompt_for_continue_wait_time. */ + struct timeval prompt_started, prompt_ended, prompt_delta; + + gettimeofday (&prompt_started, NULL); if (annotation_level > 1) printf_unfiltered (("\n\032\032pre-prompt-for-continue\n")); @@ -1821,6 +1842,12 @@ whereas control-C to gdb_readline will cause the user to get dumped out to DOS. */ ignore = gdb_readline_wrapper (cont_prompt); + + /* Add time spend in this routine to prompt_for_continue_wait_time. */ + gettimeofday (&prompt_ended, NULL); + timeval_sub (&prompt_delta, &prompt_ended, &prompt_started); + timeval_add (&prompt_for_continue_wait_time, + &prompt_for_continue_wait_time, &prompt_delta); if (annotation_level > 1) printf_unfiltered (("\n\032\032post-prompt-for-continue\n")); ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] Remove time waiting for user from walltime in stats 2012-05-21 20:22 ` [PATCH] Remove time waiting for user from walltime in stats Aaron Gamble @ 2012-05-21 20:43 ` Aaron Gamble 2012-05-21 21:01 ` Doug Evans 0 siblings, 1 reply; 5+ messages in thread From: Aaron Gamble @ 2012-05-21 20:43 UTC (permalink / raw) To: gdb-patches Oops. Corrected ChangeLog entry: * utils.c (prompt_for_continue_wait_time): New static global. (make_command_stats_cleanup): Initialize it. (report_command_stats): Subtract time waiting for user. (prompt_for_continue): Track time waiting for user. -Aaron On Mon, May 21, 2012 at 1:21 PM, Aaron Gamble <agamble@google.com> wrote: > Hi, > > Here is a patch to remove the time a gdb is waiting for a user to > respond to paging from gdb's internal statistics. Currently if a user > is reading paged output and waits 10 seconds to read/respond, those 10 > seconds are added to the walltime for the command issued. > > Time spent waiting for the user is stored in a global static variable > in utils.c and is subtracted from the wall time when the stats are > printed. > > 2012-05-21 Aaron Gamble <agamble@google.com> > > * gdb/utils.c: Added global static variable to track time spend > waiting for user in paging > > --- a/gdb/utils.c 2012-05-11 12:21:33.000000000 -0700 > +++ b/gdb/utils.c 2012-05-18 14:16:56.000000000 -0700 > @@ -104,6 +104,14 @@ > static void set_screen_size (void); > static void set_width (void); > > +/* Time spent in prompt_for_continue in the currently executing command > + waiting for user to respond. > + Initialized in make_command_stats_cleanup. > + Modified in prompt_for_continue. > + Used in report_command_stats. */ > + > +static struct timeval prompt_for_continue_wait_time; > + > /* A flag indicating whether to timestamp debugging messages. */ > > static int debug_timestamp = 0; > @@ -535,6 +543,10 @@ > timeval_sub (&delta_wall_time, > &now_wall_time, &start_stats->start_wall_time); > > + /* Subtract time spend in prompt_for_continue from walltime. */ > + timeval_sub (&delta_wall_time, > + &delta_wall_time, &prompt_for_continue_wait_time); > + > printf_unfiltered (msg_type == 0 > ? _("Startup time: %ld.%06ld (cpu), %ld.%06ld (wall)\n") > : _("Command execution time: %ld.%06ld (cpu), %ld.%06ld (wall)\n"), > @@ -568,6 +580,7 @@ > struct cleanup * > make_command_stats_cleanup (int msg_type) > { > + static const struct timeval zero_timeval = { 0 }; > struct cmd_stats *new_stat = XMALLOC (struct cmd_stats); > > #ifdef HAVE_SBRK > @@ -578,6 +591,9 @@ > new_stat->msg_type = msg_type; > new_stat->start_cpu_time = get_run_time (); > gettimeofday (&new_stat->start_wall_time, NULL); > + > + /* Initalize timer to keep track of how long we waited for the user. */ > + prompt_for_continue_wait_time = zero_timeval; > > return make_cleanup_dtor (report_command_stats, new_stat, xfree); > } > @@ -1795,6 +1811,11 @@ > { > char *ignore; > char cont_prompt[120]; > + /* Used to add duration we waited for user to respond to > + prompt_for_continue_wait_time. */ > + struct timeval prompt_started, prompt_ended, prompt_delta; > + > + gettimeofday (&prompt_started, NULL); > > if (annotation_level > 1) > printf_unfiltered (("\n\032\032pre-prompt-for-continue\n")); > @@ -1821,6 +1842,12 @@ > whereas control-C to gdb_readline will cause the user to get dumped > out to DOS. */ > ignore = gdb_readline_wrapper (cont_prompt); > + > + /* Add time spend in this routine to prompt_for_continue_wait_time. */ > + gettimeofday (&prompt_ended, NULL); > + timeval_sub (&prompt_delta, &prompt_ended, &prompt_started); > + timeval_add (&prompt_for_continue_wait_time, > + &prompt_for_continue_wait_time, &prompt_delta); > > if (annotation_level > 1) > printf_unfiltered (("\n\032\032post-prompt-for-continue\n")); ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] Remove time waiting for user from walltime in stats 2012-05-21 20:43 ` Aaron Gamble @ 2012-05-21 21:01 ` Doug Evans 2012-05-22 20:50 ` Aaron Gamble 0 siblings, 1 reply; 5+ messages in thread From: Doug Evans @ 2012-05-21 21:01 UTC (permalink / raw) To: Aaron Gamble; +Cc: gdb-patches On Mon, May 21, 2012 at 1:43 PM, Aaron Gamble <agamble@google.com> wrote: > Oops. Corrected ChangeLog entry: > > * utils.c (prompt_for_continue_wait_time): New static global. > (make_command_stats_cleanup): Initialize it. > (report_command_stats): Subtract time waiting for user. > (prompt_for_continue): Track time waiting for user. > > > -Aaron > > On Mon, May 21, 2012 at 1:21 PM, Aaron Gamble <agamble@google.com> wrote: >> Hi, >> >> Here is a patch to remove the time a gdb is waiting for a user to >> respond to paging from gdb's internal statistics. Currently if a user >> is reading paged output and waits 10 seconds to read/respond, those 10 >> seconds are added to the walltime for the command issued. >> >> Time spent waiting for the user is stored in a global static variable >> in utils.c and is subtracted from the wall time when the stats are >> printed. >> >> 2012-05-21 Aaron Gamble <agamble@google.com> >> >> * gdb/utils.c: Added global static variable to track time spend >> waiting for user in paging The patch is ok with me. Give it a few days to see if anyone wants to comment. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] Remove time waiting for user from walltime in stats 2012-05-21 21:01 ` Doug Evans @ 2012-05-22 20:50 ` Aaron Gamble 2012-05-24 17:02 ` Tom Tromey 0 siblings, 1 reply; 5+ messages in thread From: Aaron Gamble @ 2012-05-22 20:50 UTC (permalink / raw) To: gdb-patches re: http://sourceware.org/ml/gdb-patches/2012-05/msg00790.html Here is an updated version of the patch to also remove the time spend at y/n decision/question prompts. * utils.c (prompt_for_continue_wait_time): New static global. (make_command_stats_cleanup): Initialize it. (report_command_stats): Subtract time waiting for user. (prompt_for_continue): Track time waiting for user. (defaulted_query): Track time waiting for user. --- a/gdb/utils.c 2012-05-20 14:22:01.000000000 -0700 +++ b/gdb/utils.c 2012-05-22 12:00:08.000000000 -0700 @@ -104,6 +104,14 @@ static void set_screen_size (void); static void set_width (void); +/* Time spent in prompt_for_continue in the currently executing command + waiting for user to respond. + Initialized in make_command_stats_cleanup. + Modified in prompt_for_continue and defaulted_query. + Used in report_command_stats. */ + +static struct timeval prompt_for_continue_wait_time; + /* A flag indicating whether to timestamp debugging messages. */ static int debug_timestamp = 0; @@ -535,6 +543,10 @@ timeval_sub (&delta_wall_time, &now_wall_time, &start_stats->start_wall_time); + /* Subtract time spend in prompt_for_continue from walltime. */ + timeval_sub (&delta_wall_time, + &delta_wall_time, &prompt_for_continue_wait_time); + printf_unfiltered (msg_type == 0 ? _("Startup time: %ld.%06ld (cpu), %ld.%06ld (wall)\n") : _("Command execution time: %ld.%06ld (cpu), %ld.%06ld (wall)\n"), @@ -568,6 +580,7 @@ struct cleanup * make_command_stats_cleanup (int msg_type) { + static const struct timeval zero_timeval = { 0 }; struct cmd_stats *new_stat = XMALLOC (struct cmd_stats); #ifdef HAVE_SBRK @@ -578,6 +591,9 @@ new_stat->msg_type = msg_type; new_stat->start_cpu_time = get_run_time (); gettimeofday (&new_stat->start_wall_time, NULL); + + /* Initalize timer to keep track of how long we waited for the user. */ + prompt_for_continue_wait_time = zero_timeval; return make_cleanup_dtor (report_command_stats, new_stat, xfree); } @@ -1188,6 +1204,9 @@ int def_value; char def_answer, not_def_answer; char *y_string, *n_string, *question; + /* Used to add duration we waited for user to respond to + prompt_for_continue_wait_time. */ + struct timeval prompt_started, prompt_ended, prompt_delta; /* Set up according to which answer is the default. */ if (defchar == '\0') @@ -1244,6 +1263,9 @@ /* Format the question outside of the loop, to avoid reusing args. */ question = xstrvprintf (ctlstr, args); + + /* Used for calculating time spend waiting for user. */ + gettimeofday (&prompt_started, NULL); while (1) { @@ -1321,6 +1343,12 @@ printf_filtered (_("Please answer %s or %s.\n"), y_string, n_string); } + + /* Add time spend in this routine to prompt_for_continue_wait_time. */ + gettimeofday (&prompt_ended, NULL); + timeval_sub (&prompt_delta, &prompt_ended, &prompt_started); + timeval_add (&prompt_for_continue_wait_time, + &prompt_for_continue_wait_time, &prompt_delta); xfree (question); if (annotation_level > 1) @@ -1795,6 +1823,11 @@ { char *ignore; char cont_prompt[120]; + /* Used to add duration we waited for user to respond to + prompt_for_continue_wait_time. */ + struct timeval prompt_started, prompt_ended, prompt_delta; + + gettimeofday (&prompt_started, NULL); if (annotation_level > 1) printf_unfiltered (("\n\032\032pre-prompt-for-continue\n")); @@ -1821,6 +1854,12 @@ whereas control-C to gdb_readline will cause the user to get dumped out to DOS. */ ignore = gdb_readline_wrapper (cont_prompt); + + /* Add time spend in this routine to prompt_for_continue_wait_time. */ + gettimeofday (&prompt_ended, NULL); + timeval_sub (&prompt_delta, &prompt_ended, &prompt_started); + timeval_add (&prompt_for_continue_wait_time, + &prompt_for_continue_wait_time, &prompt_delta); if (annotation_level > 1) printf_unfiltered (("\n\032\032post-prompt-for-continue\n")); On Mon, May 21, 2012 at 2:01 PM, Doug Evans <dje@google.com> wrote: > On Mon, May 21, 2012 at 1:43 PM, Aaron Gamble <agamble@google.com> wrote: >> Oops. Corrected ChangeLog entry: >> >> * utils.c (prompt_for_continue_wait_time): New static global. >> (make_command_stats_cleanup): Initialize it. >> (report_command_stats): Subtract time waiting for user. >> (prompt_for_continue): Track time waiting for user. >> >> >> -Aaron >> >> On Mon, May 21, 2012 at 1:21 PM, Aaron Gamble <agamble@google.com> wrote: >>> Hi, >>> >>> Here is a patch to remove the time a gdb is waiting for a user to >>> respond to paging from gdb's internal statistics. Currently if a user >>> is reading paged output and waits 10 seconds to read/respond, those 10 >>> seconds are added to the walltime for the command issued. >>> >>> Time spent waiting for the user is stored in a global static variable >>> in utils.c and is subtracted from the wall time when the stats are >>> printed. >>> >>> 2012-05-21 Aaron Gamble <agamble@google.com> >>> >>> * gdb/utils.c: Added global static variable to track time spend >>> waiting for user in paging > > The patch is ok with me. > > Give it a few days to see if anyone wants to comment. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] Remove time waiting for user from walltime in stats 2012-05-22 20:50 ` Aaron Gamble @ 2012-05-24 17:02 ` Tom Tromey 0 siblings, 0 replies; 5+ messages in thread From: Tom Tromey @ 2012-05-24 17:02 UTC (permalink / raw) To: Aaron Gamble; +Cc: gdb-patches >>>>> "Aaron" == Aaron Gamble <agamble@google.com> writes: Aaron> * utils.c (prompt_for_continue_wait_time): New static global. Aaron> (make_command_stats_cleanup): Initialize it. Aaron> (report_command_stats): Subtract time waiting for user. Aaron> (prompt_for_continue): Track time waiting for user. Aaron> (defaulted_query): Track time waiting for user. Ok. Tom ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2012-05-24 17:02 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <CAHX8C++LmtfTqjOvargL3O1WiwL9+RP=3uXqQB0gutSGd+49sA@mail.gmail.com>
2012-05-21 20:22 ` [PATCH] Remove time waiting for user from walltime in stats Aaron Gamble
2012-05-21 20:43 ` Aaron Gamble
2012-05-21 21:01 ` Doug Evans
2012-05-22 20:50 ` Aaron Gamble
2012-05-24 17:02 ` Tom Tromey
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox