You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@storm.apache.org by 潘臻轩 <zh...@gmail.com> on 2014/07/22 08:03:53 UTC

disruptor eat up cpu

when i use storm(it use disruptor),I find a process eat up cpu, i use
cgroup to bind 2 core
I use jstack to find which thread use more cpu. i find
"Thread-40" prio=10 tid=0x00007fb534c2d000 nid=0x27129 waiting on condition
[0x000000004632a000]
   java.lang.Thread.State: TIMED_WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for <0x0000000756c6ff30> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at
java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:196)
        at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2116)
        at
com.lmax.disruptor.BlockingWaitStrategy.waitFor(BlockingWaitStrategy.java:87)
        at
com.lmax.disruptor.ProcessingSequenceBarrier.waitFor(ProcessingSequenceBarrier.java:54)
        at
backtype.storm.utils.DisruptorQueue.consumeBatchWhenAvailable(DisruptorQueue.java:56)
        at
backtype.storm.disruptor$consume_batch_when_available.invoke(disruptor.clj:62)
        at
backtype.storm.daemon.executor$fn__4384$fn__4393$fn__4440.invoke(executor.clj:658)
        at backtype.storm.util$async_loop$fn__469.invoke(util.clj:396)
        at clojure.lang.AFn.run(AFn.java:24)
        at java.lang.Thread.run(Thread.java:662)

I check storm use strategy, it use BlockingWaitStrategy .
I see some info, it says, if use blockingWaitStrategy, it use no cpu while
idle.
so ,i so confused.who know it?