On Sep 30, 2013, at 12:37 PM, Les Mikesell <lesmikes...@gmail.com> wrote:
> On Mon, Sep 30, 2013 at 12:19 PM, Fabrice Bacchella > <fbacche...@spamcop.net> wrote: >> >>>> I kept FILE as the backend, I agree that NIO is too heavy on memory. >>>> >>>> >>>> What symptoms do you have of NIO weightiness? I've struggled with NIO, >>>> too, >>>> and just wonder what you are seeing. Perhaps I missed something in the >>>> scroll back on this thread, sorry. >>>> >>>> >>>> I think the problems is in the read ahead policy on linux, that load page >>>> in >>>> chunk of mega bytes, just for a simple update of a few bytes. When you have >>>> a lot of rrd collected, it files the memory in a blink and you get too much >>>> swap in/swap out for real data. Switching from NIO to FILE decreased >>>> dramaticaly my IO load. >>> >>> Whether that is good or bad should depend on how much RAM you have >>> available for buffering - and RAM is pretty cheap these days. How >>> much does your system have besides what you give to the JVM? >> >> I have 42 GB of rrd in 12154 files, all of them are updated every 5 minutes. >> I think there is better usage of so much data than caching useless data. >> > > Making the system use swap to emulate RAM for disk buffering is > clearly a bad idea. But, on a 2nd thought, I don't see how using > FILE can avoid any overhead added by linux filesystem access - NIO > must be (over)doing something to hold it in memory. I've got 162GB of rrd on a host with 72GB of ram, and update the files every 5 minutes also. The system has a lot of I/O going on, and its able to keep up writing the data out. The point is that every time you want to update a single file, there is too much read overhead associated with opening the file just to write out a single update and close the file. I've wondered if you were to implement something like storeByGroup, but for all metrics under the node (storeByNode?) and have it pre-allocate a specific size whether you could take advantage then of being able to keep the RRDs open (and thus limit the read hits). So you would see something like: share/rrd/1/ files.properties rrd-types.properties base1-chunk1.rrd base2-chunk1.rrd rrd-types.properties would map the <rrd><rra>…</rrd> blocks to the baseX prefixes. files.properties would map the the path & datasources to the specific chunk files. The chunk files would pre-allocate 50-100 datasources each. If you were able to store more datasources into these files, then the rrd strategy wouldn't need to open/close the files for each update. It could take advantage of the RrdDbPool and keep the files open. Ron ------------------------------------------------------------------------------ October Webinars: Code for Performance Free Intel webinars can help you accelerate application performance. Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from the latest Intel processors and coprocessors. See abstracts and register > http://pubads.g.doubleclick.net/gampad/clk?id=60133471&iu=/4140/ostg.clktrk _______________________________________________ Please read the OpenNMS Mailing List FAQ: http://www.opennms.org/index.php/Mailing_List_FAQ opennms-devel mailing list To *unsubscribe* or change your subscription options, see the bottom of this page: https://lists.sourceforge.net/lists/listinfo/opennms-devel