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

Reply via email to