2016-02-06 26 views
5

Conosco questo esempio di sar sar -u 1 3 che fornisce statistiche per i successivi 3 secondi con intervallo di 1 secondo.Come posso controllare gli ultimi 5 minuti di utilizzo complessivo della CPU usando SAR

Tuttavia, continua anche a raccogliere le informazioni in background (Il mio cron impostato per raccogliere statistiche per ogni minuto). C'è un modo che posso semplicemente interrogare usando il comando sar per dire le ultime statistiche di 5 minuti e la sua media.

In questo momento sto utilizzando seguente sotto comando

interval=5; sar -f /var/log/sysstat/sa22 | tail -n $interval | head -n -1 | awk '{print $4+$6}'| awk '{s+=$1} END {print s/$interval}' 

per verificare l'utilizzo complessivo della CPU negli ultimi 5 minuti.

C'è un modo migliore?

risposta

0

Sfortunatamente quando si utilizza l'opzione -f in sar insieme con intervallo e conteggio, non restituisce il valore medio per l'intervallo specificato (come ci si aspetterebbe). Invece restituisce sempre il primo valore registrato nel file sar

L'unico modo per ovviare è quello di utilizzare l'opzione -s che consente di specificare un momento in cui iniziare il periodo di campionamento. Ho fornito uno script perl qui sotto che termina con una chiamata a sar costruita in un modo che restituirà quello che stai cercando.

Spero che questo aiuti.

Peter Rhodes.

#!/usr/bin/perl 
 

 
$interval = 300;  # seconds. 
 
$epoch = `date +%s`; 
 
$epoch -= $interval; 
 
$time  = `date -d \@$epoch +%H:%M:00`; 
 
$dom  = `date +%d`; 
 
chomp($time,$dom); 
 
system("sar -f /var/log/sysstat/sa$dom -B -s $time 300 1");