Request for testing - top 3.8b1 in the base system

Garrett Cooper yanefbsd at gmail.com
Sun Sep 28 09:37:50 UTC 2008


On Sun, Sep 28, 2008 at 1:14 AM, Alex Keda <admin at lissyara.su> wrote:
> Edwin Groothuis пишет:
>>
>> I have made an update for the top(1) utility in the FreeBSD base
>> system to get it from the 3.5b12 version to the 3.8b1 version.
>>
>> I have tried them on the amd64 architecture on FreeBSD -current and
>> FreeBSD 7.0 and on the i386 architecture on FreeBSD 7.0.
>>
>> The big new features are a line upper part with kernel statistics
>> (context-switches, traps, interrupts, faults etc) and the FLG table
>> (if you window is big enough)
>>
>> Some features specific to FreeBSD (dual display (press m)), threaded
>> processes, and jails have been ported to 3.8b1.
>>
>> The biggest fix (AFAICT) is the TIME and CPU table for threaded
>> processes, which are now calculated properly.
>>
>> The new code can be found on
>>    http://www.mavetju.org/~edwin/freebsd-top-3.8b1-A.tar.gz
>> Go to 3.8b1/usr.sbin/top and run "make" there to produce the binary,
>> then run it via "./top".
>>
>> Please report any issues with it (compile time, run time) and a way
>> to reproduce it (if possible). Thanks for your help!
>>
>> Edwin
>>
> Some strange. Count running processes not match with system top
> ========= system top =============
> last pid: 30285; load averages: 0.99, 0.91, 0.91 up 0+21:08:49  12:10:40
> 45 processes:  2 running, 43 sleeping
> CPU: 24.3% user,  0.0% nice,  1.3% system,  0.0% interrupt, 74.4% idle
> Mem: 236M Active, 1693M Inact, 414M Wired, 137M Cache, 214M Buf, 5187M Free
> Swap: 4096M Total, 4096M Free
>
>  PID USERNAME   THR PRI NICE   SIZE    RES STATE  C   TIME   WCPU COMMAND
> 87008 root         1   8    0 58728K 43028K wait   0   0:05  0.00% ruby18
> 87002 root         1  44    0  5688K  1124K select 2   0:02  0.00% script
>  1168 root         1  44    0 22872K  4308K select 3   0:01  0.00% sshd
> 30284 root         1  97    0 97420K 90844K CPU1   1   0:01  0.00% cc1plus
>  721 root         1  44    0 10696K  4000K select 0   0:01  0.00% sendmail
> 86980 lissyara     1  44    0 33764K  4840K select 2   0:00  0.00% sshd
>  584 root         1  44    0  5688K  1364K select 2   0:00  0.00% syslogd
>  733 root         1   8    0  6744K  1436K nanslp 0   0:00  0.00% cron
> 52451 lissyara     1  44    0 33764K  4840K select 0   0:00  0.00% sshd
>
> ======== new top ==========
> last pid: 30280;  load avg:  0.99,  0.91,  0.91;
>                            up 0+21:08:48    12:10:39
> 99 processes: 6 running, 76 sleeping, 17 waiting
> CPU:  23.6% user,  0.0% nice,  1.9% system,  0.0% interrupt, 74.5% idle
> Kernel: 4192 ctxsw, 21398 trap, 4 intr, 1000 soft, 4 fork, 21427 flt, 26140
> fr
> Mem:    239M Active, 1693M Inact, 414M Wired, 137M Cache, 214M Buf, 5184M
> Free
> Swap:   4096M Total, 4096M Free
>
>   PID USERNAME THR PRI NICE  SIZE   RES STATE  FLG C   TIME    CPU COMMAND
>  30279 root       1  98    0   97M   91M CPU1   +   1   0:01 48.94% cc1plus
>  30280 root       1  -8    0 2176K 1688K piperd +   0   0:00  0.14% as
>  30277 root       1   8    0 7060K 1884K wait   +   1   0:00  0.06% sh
>  30278 root       1   8    0 4600K 1284K wait   +   0   0:00  0.06% c++
>  30245 root       1  44    0 8112K 2220K select +   0   0:00  0.04% top
>  30219 root       1  44    0 8112K 2284K CPU2   +   2   0:00  0.02% top
>  86980 lissyara   1  44    0   33M 4840K select     2   0:00  0.01% sshd
>  29472 root       1   8    0 3200K 1392K wait   +   3   0:00  0.01% make
>  87008 root       1   8    0   57M   42M wait   +   0   0:05  0.00% ruby18
>  87002 root       1  44    0 5688K 1124K select +   2   0:02  0.00% script
>  1168 root       1  44    0   22M 4308K select s   3   0:01  0.00% sshd
>
> ======================
> FreeBSD serv2.hos-ting.ru 7.1-PRERELEASE FreeBSD 7.1-PRERELEASE #0: Sat Sep
> 27 14:50:59 MSD 2008 lissyara at serv2.hos-ting.ru:/usr/obj/usr/src/sys/HOSTING
>  amd64

I'm not sure I'm finding an issue, but I do find it interesting that...
1. It takes a reasonably long amount of time for top to plateau the
WCPU field (approximately 8-10 iterations), whereas ps registering the
WCPU percentage value is almost instantaneous.
2. top appears to be doing some interesting rounding that ps isn't
doing (ps registers anywhere between 88.4 and 97% via ps vs 100% via
top for a simple operation like `while [ 1 ] ; do cat /dev/urandom >
/dev/null; done').

-Garrett


More information about the freebsd-stable mailing list