[rrd-developers] implementing portable format - change format?
Sfiligoi Igor
sfiligoi at lnf.infn.it
Wed Nov 19 17:25:00 CET 2008
Hi Tobi.
I created a DB file with 50k tables, each with 10k rows...
the resulting file is ~4GB.
Speed tests were quite dismaying;
To start, it took me ~12h to create the 50k tables!
This translates to ~1 table per second.
Then I tested the updates...
here the results are even worse....
SQLlite does not seem to handle big DB files very well...
to update 1 database it takes ~2s!
Updating all 50k tables in a single transaction is better: ~700s
But this is still only ~70Hz.
Igor
Tobias Oetiker wrote:
> Today Sfiligoi Igor wrote:
>
>> Hi Tobi.
>>
>> You want
>> 10k-20k DB files, or
>> 10k-20k tables inside a single DB file?
>>
>> Plus, how many rows per table do you want?
>
> I can only speak form the rrdtool side, there we see a dramatic
> fall in performance once not everything is in cache anymore ...
> (if you do not call rrdtool on the commandline but using the
> language bindings, you can do up to 20k updates per second as long
> as the files are in memory/cached). Realworld applications normally
> can not keep them in memory though, rrdtool tries to give the OS
> hints on what to keep to optimize performance.
>
> As for the setup (one file vs many) there you should whatever works
> well for sqlite. I guess one of the advantages of SQLite would be
> that more RRD structures can be held in a single file which should
> improve performance.
>
> cheers
> tobi
>
>
>> Cheers,
>> Igor
>>
>> Tobias Oetiker wrote:
>>> Hi Igor,
>>>
>>> the constant size is good news ...
>>>
>>> for a realistic simulation you have to have 10-20k rrd file
>>> aequivalents ... since the caching effect is a rather important
>>> part of the equation.
>>>
>>> cheers
>>> tobi
>>>
>>> Today Sfiligoi Igor wrote:
>>>
>>>> kevin brintnall wrote:
>>>>> On Mon, Nov 17, 2008 at 12:14:04PM -0600, Sfiligoi Igor wrote:
>>>>>> Running a simple open/update/close loop, I get ~9 updates per second:
>>>>> Igor, what kind of rates can you get with RRD update on the same hardware?
>>>>>
>>>> I get ~350 updates per second using plain rrdtool update invocations:
>>>> bash-3.2$ rrdtool create t1.rrd DS:val:GAUGE:300:0:200000 RRA:LAST:0.9:1:100
>>>> bash-3.2$ date; for ((i=0; $i<10000; i++)); do rrdtool update t1.rrd
>>>> N:$RANDOM; done; date
>>>> Mon Nov 17 12:40:20 CST 2008
>>>> Mon Nov 17 12:40:48 CST 2008
>>>> bash-3.2$ date; for ((i=0; $i<10000; i++)); do rrdtool update t1.rrd
>>>> N:$RANDOM; done; date
>>>> Mon Nov 17 12:41:00 CST 2008
>>>> Mon Nov 17 12:41:28 CST 2008
>>>>
>>>> bash-3.2$ rrdtool create t2.rrd DS:val:GAUGE:300:0:200000
>>>> RRA:LAST:0.9:1:2000
>>>> bash-3.2$ date; for ((i=0; $i<10000; i++)); do rrdtool update t2.rrd
>>>> N:$RANDOM; done; date
>>>> Mon Nov 17 12:41:35 CST 2008
>>>> Mon Nov 17 12:42:03 CST 2008
>>>> bash-3.2$ date; for ((i=0; $i<10000; i++)); do rrdtool update t2.rrd
>>>> N:$RANDOM; done; date
>>>> Mon Nov 17 12:42:08 CST 2008
>>>> Mon Nov 17 12:42:37 CST 2008
>>>>
>>>>
>>>> Indeed, sqlite approach seems to be viable only when grouping together
>>>> many updates into a singular transaction:
>>>> 1 row update/transaction = ~9Hz
>>>> 10 row updates/transaction = ~85Hz
>>>> 100 row updates/transaction = ~800Hz
>>>>
>>>> Igor
>>>>
>>>>
>>
>
More information about the rrd-developers
mailing list