[zeromq-dev] Integrating additional PGM rate limit controls into ØMQ
Martin Sustrik
sustrik at 250bpm.com
Sat Nov 27 09:05:49 CET 2010
Hi Steven,
For getting the best usability I propose following:
> * TXW_MAX_RTE, the maximum transport rate.
(this is max rate for both ODATA and RDATA combined, right?)
> * ODATA_MAX_RTE, limit for original data packets.
> * RDATA_MAX_RTE, limit for repair data packets.
ZMQ_RATE => TXW_MAX_RATE
A new option, say ZMQ_RAPAIR_RATIO, that would be the percentage of
ZMQ_RATE to guaranteed to be available for the repairs.
> And for whatever reason you can also set the following flags:
>
> * ODATA_CONTROLLED, whether original data packets are rate limited.
> * RDATA_CONTROLLED, whether repair data packets are rate limited.
As far as I understand, the ODATA limit can be turned off because the
overall limit is bound by TXW_MAX_RTE and thus ODATA cannot surpass that
value anyway.
> So for deployment you can set a percentage of the channel capacity to
> TXW_MAX_RTE, low enough to allow some TCP traffic in and out, and
> ODATA_MAX_RTE to a value lower with sufficient head room for some repair
> data to occur.
>
> I would ignore the flags as they seem a bit redundant but configuring
> ODATA and RDATA limits is what you have been after.
Let me give an example:
ZMQ_RATE = 100Mb/s
ZMQ_REPAIR_RATIO = 5%
would mean:
The whole traffic consisting of both ODATA and RDATA will never exceed
100Mb/s. If there are no repairs ODATA would flow at rate of 100Mb/s.
If there is need for repairs, the bandwidth for them is cut from the
overall quota, say 97Mb/s for ODATA and 3Mb/s for RDATA.
When the rate of RDATA packets reaches 5% of overall bandwidth (5Mb/s)
some of them have to be dropped, meaning that some receivers will loose
messages ("unrecoverable data loss").
Thoughts?
Martin
More information about the zeromq-dev
mailing list