Я рассматривал возможность использования учета процессов для отслеживания различных пользователей и сайтов, запускающих проблемные в нашей среде скрипты, вместо того, чтобы пытаться делать что-то вроде регулярного сбора данных.
Единственное, что не совсем ясно, это какие поляДействительнообозначает использованные секунды/минуты процессора. В прочитанных мной страницах руководства говорится, что столбец '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
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(исходная ссылка найденаздесь).