[ 
https://issues.apache.org/jira/browse/STORM-886?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14715351#comment-14715351
 ] 

ASF GitHub Bot commented on STORM-886:
--------------------------------------

Github user revans2 commented on a diff in the pull request:

    https://github.com/apache/storm/pull/700#discussion_r38022111
  
    --- Diff: storm-core/src/clj/backtype/storm/daemon/executor.clj ---
    @@ -671,7 +689,19 @@
                                         user-context (:user-context task-data)
                                         sampler? (sampler)
                                         execute-sampler? (execute-sampler)
    -                                    now (if (or sampler? execute-sampler?) 
(System/currentTimeMillis))]
    +                                    now (if (or sampler? execute-sampler?) 
(System/currentTimeMillis))
    +                                    receive-queue (:receive-queue 
executor-data)]
    +                                (if (and ((:storm-conf executor-data) 
TOPOLOGY-BACKPRESSURE-ENABLE) 
    +                                         (> (.population receive-queue) 
high-watermark) 
    +                                         (not @(:backpressure 
executor-data)))
    +                                  (do (reset! (:backpressure 
executor-data) true)
    +                                      (log-debug "executor " (:executor-id 
executor-data) " is congested, set backpressure flag true")
    +                                      
(disruptor/notify-backpressure-checker (:backpressure-trigger (:worker 
executor-data)))))
    +                                (if (and ((:storm-conf executor-data) 
TOPOLOGY-BACKPRESSURE-ENABLE) 
    +                                         (< (.population receive-queue) 
low-watermark) 
    +                                         @(:backpressure executor-data))
    +                                  (do (reset! (:backpressure 
executor-data) false)
    +                                      
(disruptor/notify-backpressure-checker (:backpressure-trigger (:worker 
executor-data)))))
    --- End diff --
    
    I am a bit confused.  Why are we doing this as part of the metrics tick?  
What does that have to do with back pressure at all?


> Automatic Back Pressure
> -----------------------
>
>                 Key: STORM-886
>                 URL: https://issues.apache.org/jira/browse/STORM-886
>             Project: Apache Storm
>          Issue Type: Improvement
>            Reporter: Robert Joseph Evans
>            Assignee: Zhuo Liu
>         Attachments: an simple example for backpressure.png, backpressure.png
>
>
> This new feature is aimed for automatic flow control through the topology DAG 
> since different components may have unmatched tuple processing speed. 
> Currently, the tuples may get dropped if the downstream components can not 
> process as quickly, thereby causing a waste of network bandwidth and 
> processing capability. In addition, it is difficult to tune the 
> max.spout.pending parameter for best backpressure performance. Therefore, an 
> automatic back pressure scheme is highly desirable.
> Heron proposed a form of back pressure that  does not rely on acking or max 
> spout pending.  Instead spouts throttle not only when max.spout.pending is 
> hit, but also if any bolt has gone over a high water mark in their input 
> queue, and has not yet gone below a low water mark again.  There is a lot of 
> room for potential improvement here around control theory and having spouts 
> only respond to downstream bolts backing up, but a simple bang-bang 
> controller like this is a great start.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to