Запис журналу використання процесора / оперативної пам’яті протягом періоду часу для подачі на CentOS


8

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

Я намагався з варіаціями, topале не пощастило. У мене працює кілька віртуальних серверів CentOS, VM - це 2 Гб оперативної пам'яті, 2 процесор.

Сценарій, який працює протягом певного часу, коли записує рядки з інформацією в текстовий файл, тож наприкінці я можу мати якусь таблицю з даними.

Я збираюся зробити стрес-тест сервера, і я хотів би мати дані, щоб зробити деякі статистичні дані.

Відповіді:


11

Стандарт psдостатній.

while true; do ps o pcpu,rsz -p $pid | tail -n1 >>usage.log; sleep $interval; done

результат:

0.0  3352
0.3 31640
0.4 36924
0.5 36052
...

Перше поле - це використання процесора у%, друге - використання фізичної пам'яті в кбайт.


thatas ідеально, я вже створив довгий сценарій, щоб очистити всі дані з верхнього пакетного виходу, але це спосіб простіший кращий і ефективніший я aprreciate та багато, дякую!
кепонк

врешті-решт я продовжував користуватися своїм сценарієм, оскільки ps дає мені середню завантаженість, яка зазвичай така сама, як CPU%, але це не правило, більше інформації про це у швидкому пошуку Google
keponk

1
Тут% CPU - це не%, що використовується протягом інтервалу, а середній відсоток за весь час роботи програми. Я вважаю, що це вводить в оману.
Буде Сьюелл

2

Якщо ви дбаєте про точні терміни і хочете, щоб процесор був у відсотках:

watch --precise -n 1 'top -b -n 1 -p [PID] | tail -n 1 | awk "{print \$9}" >> [PID].log'

1

Я б запропонував sadc/ sar.


Хіба це не лише для всієї системи?
whitequark

@whitequark: Це залежить від версії sar. Деякі версії використовують sar -x PIDінші pidstat -p PID.
Призупинено до подальшого повідомлення.

Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
saji89

0

Ви намагаєтеся спостерігати, скільки часу для процесора потрібен певний процес.

Я збирався запропонувати інструмент для створення процесора для CentOS? але це отримується для всієї системи, а не лише для одного процесу.

Будь-який процес покаже час процесора на виході ps:

$ ps -ef | egrep blah
root     13988 11152  0 Dec16 ?        00:00:05 sshd: xxx [priv]
xxx      14024 13988  0 Dec16 ?        00:06:00 sshd: xxx@pts/0
xxx      14032 14024  0 Dec16 pts/0    07:00:00 -bash
root      1194   679  0 Apr24 ?        2-05:15:14 [kswapd0]
root      1195   679  0 Apr24 ?        2-06:35:49 [kswapd1]
  • 00:00:00 - це години / хвилини / секунди процесора. Вона накопичиться.
  • Щоб побачити це, вам знадобляться дозволи, якщо користувачем є не ви.
  • Як тільки це значення перевищує день, формат змінюється; вище на 2 дні. Ваш рутинний аналіз повинен буде впоратися з цим.

У цей момент проаналізуйте вихід з Python, попрацюйте з ним якусь математику дати, і ви золото.


0

Наступна команда отримує середнє значення процесора та пам’яті кожні 40 секунд для певного процесу (pid)

pidstat 40 -ru -p <pid>

Висновок для мого випадку (перші два рядки для використання процесора, другі два рядки для пам'яті):

02:15:07 PM       PID    %usr %system  %guest    %CPU   CPU  Command
02:15:47 PM     24563    0.65    0.07    0.00    0.73     3  java

02:15:07 PM       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
02:15:47 PM     24563      6.95      0.00 13047972 2123268   6.52  java
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.