tc filter add dev $DEV parent ffff: protocol all matchall police rate 限制带宽 burst 限制带宽 / x drop
上述命令中,“burst 限制带宽 / x” 的x表示什么含义,如何根据限速大小来确定x的值? x必须为2的次方吗?
tc filter add dev $DEV parent ffff: protocol all matchall police rate 限制带宽 burst 限制带宽 / x drop
上述命令中,“burst 限制带宽 / x” 的x表示什么含义,如何根据限速大小来确定x的值? x必须为2的次方吗?
上述命令中,“burst 限制带宽 / x” 中的 x 表示的是允许突发的最大字节数。在 tc 命令中,burst 表示令牌桶的大小,即最大可突发的字节数,也就是在限制带宽下,允许瞬间的数据流量比限制带宽稍微多一些,以应对短时间内的突发流量。x 的大小应该根据限制带宽和期望的突发流量来确定,如果 x 设置得太小,可能会导致限制带宽无法发挥作用,因为令牌桶无法积攒足够的令牌;如果 x 设置得太大,可能会导致网络延迟和抖动增大。一般来说,x 的值可以根据以下公式计算得到:
x = 限制带宽 * 突发时间 / 8
其中,限制带宽是指限制的带宽速率,单位为 bps;突发时间是指允许的最大突发时间,单位为秒。注意,x 的值应当是 2 的次方,这是因为 Linux 内核中使用了一个大小为 2 的次方的数组来管理令牌桶,使用 2 的次方可以提高数据结构的效率。如果 x 不是 2 的次方,Linux 内核会自动将其调整为最接近的 2 的次方。
From:肩匣与橘&GPT