Date: Thu, 2 Jun 2011 16:42:36 +0000 From: Alexander Best <arundel@freebsd.org> To: John Baldwin <jhb@FreeBSD.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r222530 - in head: contrib/top usr.bin/top Message-ID: <20110602164236.GA95713@freebsd.org> In-Reply-To: <201105311511.p4VFBNnu028827@svn.freebsd.org> References: <201105311511.p4VFBNnu028827@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue May 31 11, John Baldwin wrote: > Author: jhb > Date: Tue May 31 15:11:23 2011 > New Revision: 222530 > URL: http://svn.freebsd.org/changeset/base/222530 > > Log: > Add a new option to toggle the display of the system idle process (per-CPU > idle threads). The process is displayed by default (subject to whether or > not system processes are displayed) to preserve existing behavior. The > system idle process can be hidden via the '-z' command line argument or the > 'z' key while top is running. When it is hidden, top more closely matches > the behavior of FreeBSD <= 4.x where idle time was not accounted to any > process. does it make sense to have the -z flag and "z" key available, when the -S flag or the "S" key was not specified? cheers. alex > > MFC after: 2 weeks > > Modified: > head/contrib/top/commands.c > head/contrib/top/machine.h > head/contrib/top/top.X > head/contrib/top/top.c > head/usr.bin/top/machine.c > > Modified: head/contrib/top/commands.c > ============================================================================== > --- head/contrib/top/commands.c Tue May 31 15:05:29 2011 (r222529) > +++ head/contrib/top/commands.c Tue May 31 15:11:23 2011 (r222530) > @@ -94,6 +94,7 @@ S - toggle the displaying of syste > a - toggle the displaying of process titles\n\ > t - toggle the display of this process\n\ > u - display processes for only one user (+ selects all users)\n\ > +z - toggle the displaying of the system idle process\n\ > \n\ > \n", stdout); > } > > Modified: head/contrib/top/machine.h > ============================================================================== > --- head/contrib/top/machine.h Tue May 31 15:05:29 2011 (r222529) > +++ head/contrib/top/machine.h Tue May 31 15:11:23 2011 (r222530) > @@ -65,6 +65,7 @@ struct process_select > int uid; /* only this uid (unless uid == -1) */ > int wcpu; /* show weighted cpu */ > int jail; /* show jail ID */ > + int kidle; /* show per-CPU idle threads */ > char *command; /* only this command (unless == NULL) */ > }; > > > Modified: head/contrib/top/top.X > ============================================================================== > --- head/contrib/top/top.X Tue May 31 15:05:29 2011 (r222529) > +++ head/contrib/top/top.X Tue May 31 15:11:23 2011 (r222530) > @@ -10,7 +10,7 @@ top \- display and update information ab > .SH SYNOPSIS > .B top > [ > -.B \-abCHIijnPqStuv > +.B \-abCHIijnPqStuvz > ] [ > .BI \-d count > ] [ > @@ -142,6 +142,9 @@ Write version number information to stde > No other processing takes place when this option is used. To see current > revision information while top is running, use the help command \*(lq?\*(rq. > .TP > +.B \-z > +Do not display the system idle process. > +.TP > .BI \-d count > Show only > .I count > @@ -303,6 +306,9 @@ ID. > Toggle the display of the > .I top > process. > +.TP > +.B z > +Toggle the display of the system idle process. > .SH "THE DISPLAY" > The actual display varies depending on the specific variant of Unix > that the machine is running. This description may not exactly match > > Modified: head/contrib/top/top.c > ============================================================================== > --- head/contrib/top/top.c Tue May 31 15:05:29 2011 (r222529) > +++ head/contrib/top/top.c Tue May 31 15:11:23 2011 (r222530) > @@ -196,9 +196,9 @@ char *argv[]; > fd_set readfds; > > #ifdef ORDER > - static char command_chars[] = "\f qh?en#sdkriIutHmSCajo"; > + static char command_chars[] = "\f qh?en#sdkriIutHmSCajzo"; > #else > - static char command_chars[] = "\f qh?en#sdkriIutHmSCaj"; > + static char command_chars[] = "\f qh?en#sdkriIutHmSCajz"; > #endif > /* these defines enumerate the "strchr"s of the commands in command_chars */ > #define CMD_redraw 0 > @@ -224,8 +224,9 @@ char *argv[]; > #define CMD_wcputog 19 > #define CMD_showargs 20 > #define CMD_jidtog 21 > +#define CMD_kidletog 22 > #ifdef ORDER > -#define CMD_order 22 > +#define CMD_order 23 > #endif > > /* set the buffer for stdout */ > @@ -258,6 +259,7 @@ char *argv[]; > ps.thread = No; > ps.wcpu = 1; > ps.jail = No; > + ps.kidle = Yes; > ps.command = NULL; > > /* get preset options from the environment */ > @@ -283,7 +285,7 @@ char *argv[]; > optind = 1; > } > > - while ((i = getopt(ac, av, "CSIHPabijnquvs:d:U:m:o:t")) != EOF) > + while ((i = getopt(ac, av, "CSIHPabijnquvzs:d:U:m:o:t")) != EOF) > { > switch(i) > { > @@ -412,10 +414,14 @@ char *argv[]; > pcpu_stats = Yes; > break; > > + case 'z': > + ps.kidle = !ps.kidle; > + break; > + > default: > fprintf(stderr, > "Top version %s\n" > -"Usage: %s [-abCHIijnPqStuv] [-d count] [-m io | cpu] [-o field] [-s time]\n" > +"Usage: %s [-abCHIijnPqStuvz] [-d count] [-m io | cpu] [-o field] [-s time]\n" > " [-U username] [number]\n", > version_string(), myname); > exit(1); > @@ -1075,7 +1081,13 @@ restart: > reset_display(); > putchar('\r'); > break; > - > + case CMD_kidletog: > + ps.kidle = !ps.kidle; > + new_message(MT_standout | MT_delayed, > + " %sisplaying system idle process.", > + ps.kidle ? "D" : "Not d"); > + putchar('\r'); > + break; > default: > new_message(MT_standout, " BAD CASE IN SWITCH!"); > putchar('\r'); > > Modified: head/usr.bin/top/machine.c > ============================================================================== > --- head/usr.bin/top/machine.c Tue May 31 15:05:29 2011 (r222529) > +++ head/usr.bin/top/machine.c Tue May 31 15:11:23 2011 (r222530) > @@ -624,6 +624,7 @@ get_process_info(struct system_info *si, > int show_system; > int show_uid; > int show_command; > + int show_kidle; > > /* > * Save the previous process info. > @@ -664,6 +665,7 @@ get_process_info(struct system_info *si, > show_system = sel->system; > show_uid = sel->uid != -1; > show_command = sel->command != NULL; > + show_kidle = sel->kidle; > > /* count up process states and get pointers to interesting procs */ > total_procs = 0; > @@ -705,6 +707,11 @@ get_process_info(struct system_info *si, > /* skip idle or non-running processes */ > continue; > > + if (displaymode == DISP_CPU && !show_kidle && > + pp->ki_tdflags & TDF_IDLETD) > + /* skip kernel idle process */ > + continue; > + > if (displaymode == DISP_IO && !show_idle && p_io == 0) > /* skip processes that aren't doing I/O */ > continue; -- a13x
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110602164236.GA95713>