top все прекрасно отображает (в колонке %CPU процент использования, в колонке COMMAND имя процесса), можно использовать более удобный htop.
Можно в cron запускать программы через time, тогда после выполнения на емейл придет отчет вот такого вида:
real 1m1.694s
user 0m3.360s
sys 0m5.516s
из которого понятно, сколько процессорного времени затратила программа и в каком режиме.
Можно запускать с помощью cron каждую минуту команду
ps h -eo pcpu,comm | sort -n | tail -n1 >>/home/user/cpu-usage-stat
и после поступления очередной жалобы смотреть, какой же процесс встречается чаще всего. Если бы передо мной встала такая задачка, я бы таким же образом выводил штук 5 самых жадных до CPU процессов, сохранял в БД, а потом посмотрел.