I happened to be checking a thread dump from my opennms and noticed that 9 out of 10 of the QueueingRrdStrategy-X threads were parking on the same lock. This got me to thinking, does it make sense if your using org.jrobin.core.RrdBackendFactory=MNIO to increase the number of threads since that particular jrobin backend storage method has its own locking?
Here's what the parked threads looked like with the exception being that the RrdDb.store() lock was unique for each thread. "QueuingRrdStrategy-2" prio=3 tid=0x00000001069f6800 nid=0xed waiting on condition [0xfffffffe476fe000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0xfffffffebd497ce8> (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158) at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:811) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:842) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1178) at java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lock(ReentrantReadWriteLock.java:807) at org.jrobin.core.RrdNioByteBufferBackend.write(RrdNioByteBufferBackend.java:93) at org.jrobin.core.RrdBackend.writeDouble(RrdBackend.java:180) at org.jrobin.core.RrdPrimitive.writeDouble(RrdPrimitive.java:87) at org.jrobin.core.RrdDouble.set(RrdDouble.java:43) at org.jrobin.core.Datasource.accumulate(Datasource.java:268) at org.jrobin.core.Datasource.process(Datasource.java:204) at org.jrobin.core.RrdDb.store(RrdDb.java:600) - locked <0xfffffffe8a93c5b0> (a org.jrobin.core.RrdDb) at org.jrobin.core.Sample.update(Sample.java:221) at org.jrobin.core.Sample.setAndUpdate(Sample.java:243) at org.opennms.netmgt.rrd.jrobin.JRobinRrdStrategy.updateFile(JRobinRrdStrategy.java:219) at org.opennms.netmgt.rrd.jrobin.JRobinRrdStrategy.updateFile(JRobinRrdStrategy.java:80) at org.opennms.netmgt.rrd.QueuingRrdStrategy$UpdateOperation.process(QueuingRrdStrategy.java:520) at org.opennms.netmgt.rrd.QueuingRrdStrategy.processPendingOperations(QueuingRrdStrategy.java:1139) at org.opennms.netmgt.rrd.QueuingRrdStrategy.run(QueuingRrdStrategy.java:1094) at java.lang.Thread.run(Thread.java:662) Ron This e-mail message is being sent solely for use by the intended recipient(s) and may contain confidential information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by phone or reply by e-mail, delete the original message and destroy all copies. Thank you. ------------------------------------------------------------------------------ Storage Efficiency Calculator This modeling tool is based on patent-pending intellectual property that has been used successfully in hundreds of IBM storage optimization engage- ments, worldwide. Store less, Store more with what you own, Move data to the right place. Try It Now! http://www.accelacomm.com/jaw/sfnl/114/51427378/ _______________________________________________ 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