有人能解释一下令牌桶的概念吗?

问题描述 投票:1回答:2

有人能解释一下令牌桶的概念吗?还需要帮助解决以下问题。

给定令牌桶大小,b字节;令牌速率,r字节/秒;最大输出速率M字节/秒,最大突发时间T 1是多少。

请详细说明如何解决这个问题

token bucket
2个回答
7
投票

你读过这个吗? http://en.wikipedia.org/wiki/Token_bucket

基本上,当您想要限制某些内容的速率时,可以使用令牌桶进行限制。以这种方式思考,有人每秒将1个糖果(r)放入桶中,然后每秒只能吃1个糖果。如果你的水桶可以容纳10(b)个糖果,如果你有一段时间没有吃过任何一个,那么你的水桶就会满了,那么你可以一次吃掉10个糖果(M)。

我想你可以用这种方式计算关于最大突发时间T的问题的答案。重点是,当你以M率吃糖果时,它也会按照r率进行补充。

t = b/m;
while(1) {
    T = (b + (t * r)) / m
    if (T == t) return T;
    t = T;
}

因此,如果b = 10,则r = 1 / sec,M = 2 / sec,则T = 9。


0
投票

这是一个很好的解释:https://www.coursera.org/lecture/packet-switching-networks-algorithms/traffic-shaping-by-token-bucket-V07oV

对于您的问题,我们可以根据数据IO建立一个等式:在时间T之后,数据输出应该等于数据输入。即:b + rT = MT T = b /(M-r)

© www.soinside.com 2019 - 2024. All rights reserved.