Skip site navigation (1)Skip section navigation (2)
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>