You're right about the order of variables. It was a typo!.

I tried your recommendation and still I get the error message:

ERROR while updating 21.rrd: expected 2 data source readings (got 576)

The issue is with LOTS of RRDs the performance lags when you create an RRD
and try to fit a months worth of 5 minutes samples into several rrds at once
(converting some raw 5 minutes samples into rrd files). Right now, to do 10
rrd files at 8928 (number of 5 minutes samples in 31 days) takes 10 to 11
seconds. I'm trying to reduce this into a single RRD update perl file in
order to reduce the overall time to convert.

For those who are interested, here is my complete example:

use RRDs;

# 288 = day
# 2016 = 7 days
# 8928 = 31 days

if (! $ARGV[0]) { 
        print "\n\nNo Arg specified defaulting to 8928 (31 days)\n";
        $ARGV[0] = 8928;
}

print "Total Datapoints: $ARGV[0]\n";

foreach (1..10) {
        unlink "2${_}.rrd";
        RRDs::create ("2${_}.rrd",
                "--start","1",
                "DS:input:GAUGE:600:U:U",
                "DS:output:GAUGE:600:U:U",
                "RRA:AVERAGE:0.5:1:600",
                "RRA:AVERAGE:0.5:6:700",
                "RRA:AVERAGE:0.5:24:775",
                "RRA:AVERAGE:0.5:288:797",
                "RRA:MAX:0.5:1:600",
                "RRA:MAX:0.5:6:700",
                "RRA:MAX:0.5:24:775",
                "RRA:MAX:0.5:288:797"
        );
}

$StartTime = time();

foreach $c (1 .. 10) {
        @DataPoints = undef;
        foreach $d (1 .. $ARGV[0]) {
                $TimeStamp = time() + ($d * 300);
                $in = int(rand(1000000));
                $out = int(rand(1000000));

                push (@DataPoints, "${TimeStamp}:${in}:${out}");
        }
        
        #RRDs::update ("2${c}.rrd", @DataPoints);
        RRDs::update ("2${c}.rrd", join (" ",@DataPoints));

        my $ERR=RRDs::error;
        die "ERROR while updating 2${c}.rrd: $ERR\n" if $ERR;
}


$totalTime = time() - $StartTime;

print "total time : $totalTime\n";


I appreciate the help!

Sincerely,
Marc

-----Original Message-----
From: Serge Maandag [mailto:[EMAIL PROTECTED] 
Sent: Thursday, April 14, 2005 10:46 AM
To: Marc Bilodeau; rrd-users@list.ee.ethz.ch
Subject: RE: [rrd-users] Re: Adding many data samples at once

> foreach (1..5000) {
>       $NewTimeStamp = $baseTime + 300;
>       Push (@DataPoints, "ValIn:ValOut:$NewTimeStamp");
> } 

shouldn't that be "$NewTimeStamp:ValIn:ValOut" ?

> RRDs::update ("test.rrd", @DataPoints);
> 
> The problem is that this will produce an error because it 
> tells me that it
> was looking for 2 data points but got 5000 (in this example). 
> How can I
> perform this update in 1 rrd update instead of (much slower) 
> 5000 updates?

Uhm, perhaps this works?

RRDs::update ("test.rrd", join (" ",@DataPoints));

Serge.

-------------
Op de inhoud van dit e-mailbericht en de daaraan gehechte bijlagen is de
inhoud van de volgende disclaimer van toepassing:
http://www.zeelandnet.nl/disclaimer.php

-------------
For the content of this e-mail message and its attachment(s) the following
disclaimer applies: http://www.zeelandnet.nl/disclaimer.php

---
[This E-mail scanned for viruses by Declude Virus]


---
[This E-mail scanned for viruses by Declude Virus]

--
Unsubscribe mailto:[EMAIL PROTECTED]
Help        mailto:[EMAIL PROTECTED]
Archive     http://lists.ee.ethz.ch/rrd-users
WebAdmin    http://lists.ee.ethz.ch/lsg2.cgi

Reply via email to