pcpu
não faz o que você pensa.
De páginas man do UNIX: ps () :
CODE HEADER DESCRIPTION
%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. (alias pcpu).
Como você pode ver, pcpu
não mede o uso atual da CPU, mas o uso médio da CPU desde o início do processo. Se um processo estiver em execução por alguns dias antes de se comportar mal, você não poderá ver essa variação usando o comando ps
.
Por outro lado, top
mostra o uso atual da CPU na coluna %CPU
.
De páginas man UNIX: top () :
k: %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. In a true SMP
environment, if 'Irix mode' is Off, top will operate in 'Solaris
mode' where a task's cpu usage will be divided by the total number
of CPUs. You toggle 'Irix/Solaris' modes with the 'I' interactive
command.
top
classifica automaticamente os processos pelo uso atual da CPU, portanto, o primeiro processo deve ser o culpado.