I assume you mean ..3 thds per spout/bolt is on the high side ?
Currently there is an executor thd, a xsfer thd and flusher thd. The plan (in 
the redesign – STORM-2284 subtask 2) is to have 1 thread per spout/bolt. 
Also have some (untested) thoughts on reducing the number of remaining threads 
in the worker. 
-roshan


On 3/16/17, 5:07 PM, "S G" <[email protected]> wrote:

    Thanks for sharing the doc Roshan.
    It is very informative.
    
    I think number of threads per bolt is on the high side (When 60 bolts are
    run per node, there are 1200 total threads/node).
    
    Some of these would be essential for the worker's book-keeping but still it
    seems we can get a lot of performance boost if we can somehow reduce these
    threads and the associated context switching between them.
    
    
    On Thu, Mar 16, 2017 at 12:53 PM, Roshan Naik <[email protected]>
    wrote:
    
    > Typically  there are 3 threads per spout or bolt instance (unless the
    > spout or bolt is spawning its own threads). There are the acker bolts,
    > event loggers and system bolt running there too.
    >
    > Then there are several more per worker. See a summary of it in section 3.1
    > of this document
    >
    > https://docs.google.com/document/d/1EzeHL3d7EE-
    > RyyBEpN7CwRmWz3oqjbbKiVVAlzFp2Nc/edit?usp=sharing
    >
    >
    >
    >
    > Get Outlook for iOS<https://aka.ms/o0ukef>
    >
    >
    >
    >
    > On Thu, Mar 16, 2017 at 12:16 PM -0700, "S G" <[email protected]<
    > mailto:[email protected]>> wrote:
    >
    > Hi,
    >
    > I am trying to make sense of number of threads seen in JConsole.
    > It seems like a very high number of threads are launched per bolt thread.
    >
    >
    > [cid:ii_j0crtbtm0_15ad8874d0924ae2]
    > ​
    > Experiment 1
    > topology.workers.val=16
    > spout.parallelism.val=1
    > bolt1.parallelism.val=900
    > bolt2.parallelism.val=160
    > observation:
    > Threads seen per node in jconsole = 1200
    > Bolt threads per node = (900 + 160)/16 = 66
    > Threads per bolt = 1200/66 = 18
    >
    >
    > Experiment 2
    > topology.workers.val=16
    > spout.parallelism.val=1
    > bolt1.parallelism.val=16
    > bolt2.parallelism.val=16
    > observation:
    > Threads seen per node in jconsole = 61
    > Bolt threads per node = (16+16)/16 = 2
    > Threads per bolt = 61/2 = 30
    >
    > There are no other topologies running in my cluster.
    > There are no other spouts/bolts running in my cluster except the ones
    > mentioned above.
    > I am running only one worker process per machine.
    >
    >
    > So the question is how many threads per bolt are launched by storm?
    > I am not interested in the exact number, but concerned about the high
    > number of extra threads (18+ thread) for running a single bolt.
    >
    > Can we limit or optimize it somehow?
    > Or if all of them are required, it would be good to document them
    > somewhere.
    >
    > Thanks
    > SG
    >
    >
    >
    >
    

Reply via email to