Globalement, le script est terminé et je suis juste en train de faire quelques tests. A cette occasion, j'ai voulu connaître le différentiel de performance entre RRD via le binaire et via la bibliothèque Perl.
Pour se faire, j'ai donc écrit le script suivant :
#!/usr/bin/perl
use RRDs;
$use_system = 1;
$current = time();
$step = 30;
$range = 3600 * 24 * 7;
$start = $current - $range;
print "Début : ".scalar(localtime())."\n";
if($use_system) {
system("rrdtool create test.rrd --start $start --step $step DS:valeur_test:GAUGE:600:U:U RRA:AVERAGE:0.5:1:".($range / $step));
} else {
RRDs::create("test.rrd", "--start", $start, "--step", $step, "DS:valeur_test:GAUGE:600:U:U", "RRA:AVERAGE:0.5:1:".($range / $step));
}
$j = 0.;
$| = 1;
$i = 0;
for($t = $start; $t < $current; $t += $step) {
$value = int(200.5 + cos($j) * 100.);
if($use_system) {
system("rrdtool update test.rrd $t:$value");
} else {
RRDs::update("test.rrd", "$t:$value");
}
$j += 0.001;
$i++;
}
print "Insertion de $i valeurs\n";
if($use_system) {
system("rrdtool graph speed.png --start $start --end $current DEF:def=test.rrd:valeur_test:AVERAGE LINE1:def#000000 -w 1000 -h 400");
} else {
RRDs::graph("speed.png", "--start", $start, "--end", $current,
"DEF:def=test.rrd:valeur_test:AVERAGE", "LINE1:def#000000", "-w", 1000, "-h", 400);
}
print "Fin : ".scalar(localtime())."\n";
system("gwenview speed.png");
En gros, le script génère une sinusoïde que j'affiche ensuite sous gwenview (prenez votre lecteur d'image préféré).
Un rapide test nous donne le résultat suivant :
* via l'utilisation de la bibliothèque :
drayan@robinet:~/nagios/RRD$ ./generate_rrd.pl
Début : Mon May 10 22:45:56 2010
Insertion de 20160 valeurs
Fin : Mon May 10 22:45:57 2010
* via l'utilisation des binaires :
Début : Mon May 10 22:46:08 2010
ERROR: test.rrd: illegal attempt to update using time 1272919568 when last update time is 1272919568 (minimum one second step)
Insertion de 20160 valeurs
1081x449
Fin : Mon May 10 22:48:57 2010
Donc 1 seconde contre environ 3 minutes dans le second cas. On va donc passer par la bibliothèque !
Aucun commentaire:
Enregistrer un commentaire