On Sun, Sep 04, 2016 at 01:50:31AM -0500, Mike Miller wrote:
> When I run htop or top I see compiz using 100% CPU, or nearly that.
> Here is an example:
>
> $ top -b | tail -n+7 | head -6
>
> PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
> 24670 mbmiller 20 0 1706m 332m 12m R 100 2.1 6105:08 compiz
> 297 root 20 0 0 0 0 R 16 0.0 1817:54 md1_raid1
> 22625 root 35 15 0 0 0 D 4 0.0 0:48.54 md1_resync
> 906 messageb 20 0 1665m 1.6g 604 S 2 10.2 41:31.37 dbus-daemon
> 1636 mbmiller 20 0 73372 52m 4048 S 2 0.3 370:22.92 Xvnc4
>
>
> That seemed weird. But when I look at it using ps, it always shows
> some small number like 2% CPU for compiz:
>
> $ ps aux | gawk '$6=="RSS" || $3>1' | cut -c-107
>
> USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
> root 6 8.3 0.0 0 0 ? S 2014 95736:08 [migration/0]
> mbmiller 15582 2.7 3.5 4343684 576972 pts/3 Sl Sep03 23:58 /usr/lib/chromium-browser/chromium-browser
> mbmiller 16733 1.5 4.2 3108676 703844 pts/3 Sl Sep03 11:55 /usr/lib/chromium-browser/chromium-browser
> root 22625 1.7 0.0 0 0 ? DN 00:57 0:48 [md1_resync]
> mbmiller 24670 2.0 2.0 1712416 340952 ? Rl Feb06 6105:17 compiz
>
>
> So my question is why is there that huge difference? If I run htop
> in one xterm and ps in another at the same time, they still give
> these very divergent results.
It is worth reading the man page for ps(1) and htop(1).
ps(1) says:
%cpu %CPU cpu utilization of the process in "##.#" format.
Currently, it is the CPU time used divided by the
time the process has been running
(cputime/realtime ratio), expressed as a
percentage. It will not add up to 100% unless
you are lucky.
and top(1) says:
1. %CPU -- CPU Usage
The task's share of the elapsed CPU time since the last screen
update, expressed as a percentage of total CPU time.
>From ps we can also see that compiz has been running since February,
i.e. it has a very high real time. Thus cputime/realtime is low.
This suggests something bad has happened 'recently', causing compiz to
spin, when it normally just sleeps and occasionally does something.
Andrew