top и ps показывают столбец %CPU, но считают его за разное время. Перепутаешь — примешь давно затихший процесс за виновника нагрузки.
top пересчитывает %CPU при каждом обновлении экрана — за последние три секунды. Поэтому в нём видно, кто занимает процессор сейчас. Сколько процессорного времени процесс набрал за всю жизнь, top показывает в столбце TIME+.
ps делит это набранное время на всё время жизни процесса. Процесс, который час назад работал без остановки, а теперь спит, ps покажет с заметным %CPU, а top — с нулём.
Над списком top печатает сводку. В строке Tasks — сколько всего процессов и сколько из них выполняется (running), спит (sleeping) и остановлено (stopped).
Ночная выгрузка час работала без остановки, а теперь ждёт. Что покажут ps и top в столбце %CPU?
-
top считает %CPU за последние три секунды, а в них процесс спал. Заметную долю покажет только
ps, который считает за всю жизнь процесса. -
Наоборот: top смотрит на последние секунды, где процесс спал, а
ps— на всю жизнь процесса, где был час работы. -
psделит набранное процессорное время на всё время жизни процесса, и час работы оставляет заметный %CPU. Ноль покажет top: он считает за последние секунды.
ps делит процессорное время процесса на всё время его жизни, а top — на последние секунды между обновлениями. Поэтому, кто занимает процессор сейчас, смотрят в top.
Главное в шаге
- top считает %CPU за последние секунды: он показывает, кто занимает процессор сейчас.
-
psделит процессорное время на всё время жизни процесса, поэтому помнит прошлую нагрузку.