La clave está en la diferencia de concepto existente entre top y ps:
Si leéis el man del ps y del top, por ejemplo, la definición de la columna CPU:
%CPU en el man del top: 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.
%CPU en el man del ps: 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).
Para entendernos bien, un coche alcanza 220 km/h en una recta -> eso nos lo indica el top. Si ese coche hace una carrera de 200 km en 1h30minutos y su velocidad media es de 133km/h (regla de 3) -> esa es la información que nos aporta el comando ps.
NOTA: El paquete sysstat que incorpora los comandos sar, iostat y mpstat, y junto con otros del sistema como vmstat, lsof, fuser y ps podemos tener el control total de lo que pasa en nuestro sistema operativo Linux y también en Solaris y otros UNIX like SO.