My system is a P4 3.8Ghz 2GB RAM and a pair of 250GB SATA drives (16MB Cache) in a software RAID 1 using GMirror.
I ran this new RRDTool tester and here are my results:
./perftest.pl
RRDtool Performance Tester
--------------------------
This Program will create an increassing number of rrds and update them.
The rrds are modeld after what mrtg would create. The Program
will report the number of updates that can be performed per second.
Since rrdtool update performance is helped greatly by the disk cache,
you will observe a sharp drop in performance once the cache is
exhausted. The program tries to detect this change and stop running.
Create 10 rrds 5 c/s (0.03147 sdv) Update 10 rrds 13902 u/s (0.00006 sdv)
Create 10 rrds 1 c/s (0.32202 sdv) Update 20 rrds 7805 u/s (0.00617 sdv)
Create 20 rrds 1 c/s (0.67108 sdv) Update 40 rrds 13992 u/s (0.00004 sdv)
Create 40 rrds 1 c/s (0.23411 sdv) Update 80 rrds 13668 u/s (0.00014 sdv)
Create 80 rrds 2 c/s (0.27723 sdv) Update 160 rrds 11949 u/s (0.00042 sdv)
Create 160 rrds 1 c/s (0.28893 sdv) Update 320 rrds 11388 u/s (0.00049 sdv)
Create 320 rrds 1 c/s (0.33756 sdv) Update 640 rrds 7002 u/s (0.00174 sdv)
Create 640 rrds 2 c/s (0.28723 sdv) Update 1280 rrds 2331 u/s (0.01347 sdv)
Create 384 rrds 1 c/s (0.33604 sdv) Update 1664 rrds 617 u/s (0.05014 sdv)
* Stopping test since your system seems to have hit the cache barrier.
Here is a typical normal poller run time on my system:
10/27/2006 11:18:33 PM - SYSTEM STATS: Time:212.4849 Method:cactid Processes:2 Threads:60 Hosts:199 HostsPerProcess:100 DataSources:22839 RRDsProcessed:8785
I sometimes see my poller run in 82 seconds for a few runs which is great, but most of the time my poller is around 220 seconds.
Oddly, when my system first boots, I sit with about 1.5GB of RAM free.
Then poller.php runs cactid and bang, my system runs there after with only about 50MB of RAM free, sometimes it hits 0 and my swap gets hit!
I am starting to think I need 4GB of RAM as stated a few posts ago by:
Mikf - "Now we have upgraded to 4Go of memory : the poller is terminating in 77 sec! with 3go of cached memory. "
It is weird to see the poller suck up 1.5GB of RAM on the first run then never really release it back to the OS.
At first I thought I had a memory leak, but it never uses more than 1.5GB after that first run.
Even stranger:
When a polling cycle starts, I see my CPU peg for about 20 seconds.
For the next about 3 minutes or so, my CPU is hardly used while the poller completes a cycle.
I imagine cactid is completing in 20 seconds or so?
What am I waiting for during the remaining 3 minutes?
Is that when my RRD files are being updated?
Why do I sometimes get these awesome 82 second runs for a polling cycle?
I am afraid to add more devices to my cacti since my poller is close to 300 seconds sometimes for unknown reasons.
Any thoughts on boosting performance?
"TheWitness: increase Cacti scalability by at least one order of magnitude"
Please do so TheWitness! I would like to get my system to handle 100k data sources, currently I am hitting a 300 second limit on 25k data sources.
I am ready to do multiple pollers, add more RAM and another CPU, whatever is practical.
Let's scale up Cacti as much as possible please!'