Hi Roman,

Thank you for the reply.

Yes, I am aware that backpressure can be the result of many factors and yes this is an oversimplification of something very complex, please bare with me. Lets assume that this has been taken into account and has lowered the threshold for when this status permanently comes into effect, i.e. HIGH.

Example: The system is running along perfectly fine under normal conditions, accessing external sources, and processing at an average of 100,000 messages/sec. Lets assume the maximum capacity is around 130,000 message/sec before back pressure starts propagating messages back up the stream. Therefore, utilization is at 0.76 (100K/130K). Great, but at present we dont know that 130,000 is the limit.

For this example or for any job, is there a way of finding this maximum capacity (and hence the utilization) without pushing the system to its limit based on the current throughput? Possibly by measuring (as you say) the saturation of certain buffers (looking into this now, however, i am not too familiar with flink internals)? It doesn't have to be extremely precise. Any hints would be greatly appreciated.

Regards,
M.

On 25.02.20 13:34, Khachatryan Roman wrote:
Hi Morgan,

Regarding backpressure, it can be caused by a number of factors, e.g. writing to an external system or slow input partitions.

However, if you know that a particular resource is a bottleneck then it makes sense to monitor its saturation. It can be done by using Flink metrics. Please see the documentation for more details:
https://ci.apache.org/projects/flink/flink-docs-release-1.10/monitoring/metrics.html

Regards,
Roman


On Tue, Feb 25, 2020 at 12:33 PM Morgan Geldenhuys <morgan.geldenh...@tu-berlin.de <mailto:morgan.geldenh...@tu-berlin.de>> wrote:

    Hello community,

    I am fairly new to Flink and have a question concerning
    utilization. I
    was hoping someone could help.

    Knowing that backpressure is essentially the point at which
    utilization
    has reached 100% for any particular streaming pipeline and means that
    the application cannot "keep up" with the messages coming into the
    system.

    I was wondering, assuming a fairly stable input throughput, is
    there a
    way of determining the average utilization as a percentage? Can we
    determine how much more capacity each operator has before
    backpressure
    kicks in from metrics alone, i.e. 60% of capacity for example?
    Knowing
    that the maximum throughput of the DSP application is dictated by the
    slowest part of the pipeline, we would need to identify the slowest
    operator and then average horizontally.

    The only method that I can see of determining the point at which the
    system cannot keep up any longer is by scaling the input throughput
    slowly until the backpressure HIGH alarm is shown and hence the
    number
    of messages/sec is known.

    Yes I know this is a gross oversimplification and there are many many
    factors that need to be taken into account when dealing with
    backpressure, but it would be nice to have a general indicator, a
    rough
    estimate is fine.

    Thank you in advance.

    Regards,
    M.




Reply via email to