[
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)