Scrivere un registro utilizzo CPU / RAM per un periodo di tempo su file su CentOS


8

Sto cercando un'applicazione o una riga di codice che mi consenta di osservare un processo, salvare le informazioni in un numero di variabili, quindi inserire le informazioni raccolte su un file.

Ho provato con variazioni di topma senza fortuna. Sono in esecuzione diversi server virtuali CentOS, VM è una RAM da 2 GB, 2 processori.

Uno script che funziona per un determinato periodo di tempo durante la scrittura di righe con le informazioni su un file di testo, quindi alla fine posso avere una sorta di tabella con i dati funzionerebbe.

Proverò lo stress test sul server e vorrei avere i dati per fare delle statistiche.

Risposte:


11

Lo standard psè abbastanza.

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

risultato:

0.0  3352
0.3 31640
0.4 36924
0.5 36052
...

Il primo campo è l'utilizzo della CPU in%, il secondo è l'utilizzo della memoria fisica in kbyte.


è perfetto, avevo già realizzato un lungo script per ripulire tutti i dati da un output batch superiore, ma è molto meglio, semplice ed efficace, che apprezzo molto, grazie!
Keponk,

alla fine ho continuato a usare il mio script, dal momento che ps mi dà la media del carico che è normalmente uguale a% CPU ma non è una regola, maggiori informazioni su questo in una rapida ricerca su Google
keponk,

1
La CPU% qui non è la% utilizzata nell'intervallo, ma la percentuale media sull'intero tempo di esecuzione del programma. Credo che questo sia fuorviante.
Will Sewell,

2

Se ti interessa un tempismo preciso e desideri una CPU in percentuale:

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


0

Stai cercando di osservare quanto tempo CPU richiede un determinato processo.

Stavo per suggerire lo strumento stat CPU per CentOS? ma questo lo ottiene per l'intero sistema, non solo per un processo.

Qualsiasi processo mostrerà il tempo della CPU nell'output di 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 è ore / minuti / secondi della cpu. Si accumulerà.
  • Avrai bisogno delle autorizzazioni per vederlo se l'utente non sei tu.
  • Una volta che questo valore supera un giorno, il formato cambia; sopra sono 2 giorni. La tua routine di analisi dovrà gestirla.

A questo punto, analizza l'output con Python, lavora un po 'di matematica con la data e sei d'oro.


0

Il comando seguente ottiene la media dell'utilizzo della CPU e della memoria ogni 40 secondi per un processo specifico (pid)

pidstat 40 -ru -p <pid>

Output per il mio caso (prime due righe per l'utilizzo della CPU, seconde due righe per la memoria):

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.