Учет процессов в Linux - разница между полями cp и cpu?

Я рассматривал использование учета процессов для отслеживания различных пользователей и сайтов, на которых выполняются скрипты, которые являются проблематичными в нашей среде, вместо того, чтобы пытаться делать что-то вроде очистки вершины через регулярные промежутки времени.

Единственное, что не совсем понятно, это то, какие поля в действительности обозначают используемые секунды / минуты. Страницы руководства, которые я прочитал, говорят, что столбец 'cpu' записан за секунды, однако есть также столбец 'cp', отображаемый с -m - и они могут показывать разные итоги. Например:

Когда я использую флаг -m, я получаю

 $sa -m | grep username
 username 14944      65.53re      29.90cp     5308k

Когда я использую флаг -u и суммирую столбец для 'cpu', я получаю следующее:

 sa -u |grep username|awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{print TOTAL}'
 1032.86

Кто-нибудь может помочь мне понять разницу между столбцами "cp" и "cpu" в этих двух разных режимах?

Спасибо!

1 ответ

Решение

Позвольте мне использовать пример, чтобы объяснить, что показывают ваши результаты выше:

Во-первых: я создал скрипт bash, который я запускал как пользователь patrickr, который должен был обеспечить достаточную нагрузку на систему, чтобы быть заметным.

#!/bin/bash
#this file is named loop_script.sh
for i in {1..5000}
do
   echo "Welcome $i times"
done

Второе: я удалил, а затем переустановил acct, чтобы мои файлы в / var / log / acct были свежими. Создайте копию файла /var/log/acct/pacct, чтобы в будущем вы могли легко усечь файл с правильно отформатированным файлом (вы не можете просто удалить и заново создать файл - sa перестанет работать, если вы это сделаете). Обратите внимание, что этот файл представляет собой журнал всех команд в системе, и, насколько я могу судить, нет способа извлекать части из журнала в зависимости от периодов времени.

В-третьих: я запускал этот скрипт дважды как Патрикр

patrickr@hostname:~$ bash loop_script.sh

Я дам вам результаты, а затем объясню их:

Запускается от имени пользователя root (или любого другого пользователя, кроме patrickr). После первого цикла как patrickr:

**sa -m**
                            24       0.09re       0.03cp         0avio       894k
root                        22       0.07re       0.02cp         0avio       853k
patrickr                    2       0.02re       0.01cp         0avio      1336k

**sa -u |grep patrickr**

patrickr   0.38 cpu     1336k mem      0 io bash             

После второго цикла как patrickr:

**sa -m**
                            30       0.09re       0.03cp         0avio       850k
root                        27       0.07re       0.02cp         0avio       814k
patrickr                    3       0.02re       0.01cp         0avio      1178k

**sa -u |grep patrickr**

patrickr   0.38 cpu     1336k mem      0 io bash            
patrickr   0.35 cpu     1336k mem      0 io bash            
patrickr   0.00 cpu      863k mem      0 io ls  (I happened to also run ls at patrickr)

**sa -u**

The results returned 106 results for a total of 2.86cpu that averaged to 0.03cp

Вот что вы видите:

sa -m показывает средние значения для всей активности этого сервера в сверхурочное время. Этот файл увеличивается со временем по мере выполнения большего количества команд.

sa -u | grep patrickr показывает сумму системного и пользовательского времени в минутах процессора для определенных команд.

Выполнение: sa -u |grep patrickr|awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{print TOTAL}'

Выдаст вам суммарную сумму за пользователя patrick, но команда sa -m фактически даст вам средние значения. Посмотрите на значения памяти, вам нужен второй пример. Они тоже усреднены.

Если я добавлю три результата, перечисленных выше для patrickr, .35 + .37 + .0 и разделю на 106 и округлю до ближайшей сотой, я получу 0.01cp.

Результат 0,01cp - это средняя нагрузка пользователя patrickr в системе по сравнению со всей нагрузкой в ​​системе с момента установки приложения acct (т.е. с тех пор, как файл /var/log/acct/pacct начал отслеживать).

Output Fields
cpu   -  sum of system and user time in cpu minutes
re    -  actual time in minutes
k     -  cpu-time averaged core usage, in 1k units
k*sec -  cpu storage integral (kilo-core seconds)
u     -  user cpu time in cpu minutes
s     -  system time in cpu minutes

Хороший ресурс, который поможет вам, находится на beginlinux.com (оригинальная ссылка найдена здесь).

Другие вопросы по тегам