Date: Fri, 12 Sep 2008 17:34:58 GMT From: Pekka Savola <pekkas@netcore.fi> To: freebsd-gnats-submit@FreeBSD.org Subject: bin/127331: [patch] top(1) only shows cputime used by one process thread Message-ID: <200809121734.m8CHYwAZ062987@www.freebsd.org> Resent-Message-ID: <200809121740.m8CHe1Go091880@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 127331 >Category: bin >Synopsis: [patch] top(1) only shows cputime used by one process thread >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Fri Sep 12 17:40:01 UTC 2008 >Closed-Date: >Last-Modified: >Originator: Pekka Savola >Release: 7.1-PRERELEASE >Organization: CSC/FUNET >Environment: FreeBSD sixpack.funet.fi 7.1-PRERELEASE FreeBSD 7.1-PRERELEASE #11: Wed Sep 10 04:55:20 EEST 2008 root@sixpack.funet.fi:/usr/obj/usr/src/sys/SIXPACK i386 >Description: top(1) default view does not seem to show the total cputime used by all the process threads, for example: PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 16955 nobody 6 20 0 28252K 23032K sigwai 1 0:26 51.46% miredo if you press 'H', you get to see every thread: 16955 nobody 70 0 28252K 23032K CPU1 1 535:55 28.47% miredo 16955 nobody 4 0 28252K 23032K RUN 1 410:49 22.27% miredo 16955 nobody 8 0 28252K 23032K nanslp 1 0:31 0.00% miredo 16955 nobody 20 0 28252K 23032K sigwai 1 0:26 0.00% miredo 16955 nobody 20 0 28252K 23032K sigwai 1 0:00 0.00% miredo 16955 nobody 20 0 28252K 23032K sigwai 1 0:00 0.00% miredo ps is using the kvm interface slightly differently, and it's getting the total cputime correctly: nobody 16955 0.0 1.1 28252 23032 ?? S Wed11PM 947:38.87 /usr/loca/sbin/miredo -c /usr/local/etc/miredo.conf -p /var/run/mir... There is already code in top(1) to add together information from all threads. However, only CPU usage percentage is added, not CPU time. The following patch fixes this. Then the output is like follows: 16955 nobody 6 20 0 28252K 23036K sigwai 0 947:55 51.56% miredo >How-To-Repeat: Run a multi-threaded app and compare its threads' cpu time. >Fix: See the attached one-line patch. Patch attached with submission follows: --- usr.bin/top/machine.c.orig 2008-04-11 14:45:27.000000000 +0300 +++ usr.bin/top/machine.c 2008-09-12 20:19:15.000000000 +0300 @@ -725,6 +725,7 @@ prev_pp = pp; } else { prev_pp->ki_pctcpu += pp->ki_pctcpu; + prev_pp->ki_runtime += pp->ki_runtime; } } >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200809121734.m8CHYwAZ062987>