top doesn't show any Process in idle-Mode

Stefan Esser se at FreeBSD.org
Mon Jan 30 06:28:32 PST 2006


On 2006-01-30 13:49 +0100, Michael Schuh <michael.schuh at gmail.com> wrote:
> Hello,
> 
> i use top mostly in idle-mode.
> # top <return> <i>
> or
> # top -I
> 
> Under releng_6 (stable p4) and the older versions,
> i think down to releng_5, doesn't show a running process.
> 
> I have tryed to dig in the source but my experiences are not
> so good that i can find the possible error.

See line 603 (in HEAD) of /usr/src/usr.bin/top/machine.c:

                if (displaymode == DISP_CPU && !show_idle &&
                    (pp->ki_pctcpu == 0 || pp->ki_stat != SRUN))
                        /* skip idle or non-running processes */
                        continue;

Since I do not like the current behaviour, I considered removing the
test for state SRUN. But I guess that the teest can not be completely
eliminated. Instead of selecting only SRUN, some states may need to
be suppressed (SZOMB, possibly also SIDL, SSTOP).

I'll test the following version on my system:

                if (displaymode == DISP_CPU && !show_idle &&
                    (pp->ki_pctcpu == 0 || pp->ki_stat == SZOMB || pp->ki_stat == SSTOP))
                        /* skip idle or non-running processes */
                        continue;

> Has anyone same experiences made with top, or has
> anyone a workaround (please not like while true........)

Patch included (not verified to apply to 5.x or 6.x, but editing the
test in place should be easy, then).

Regards, STefan

--- /usr/src/usr.bin/top/machine.c	18 May 2005 13:42:51 -0000	1.74
+++ /usr/src/usr.bin/top/machine.c	30 Jan 2006 14:26:08 -0000
@@ -601,7 +601,7 @@
 			continue;
 
 		if (displaymode == DISP_CPU && !show_idle &&
-		    (pp->ki_pctcpu == 0 || pp->ki_stat != SRUN))
+		    (pp->ki_pctcpu == 0 || pp->ki_stat == SZOMB || pp->ki_stat == SSTOP))
 			/* skip idle or non-running processes */
 			continue;
 


More information about the freebsd-stable mailing list