ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

linux – tbf中的存储桶大小

2019-08-09 14:51:23  阅读:311  来源: 互联网

标签:linux qos tc


我已经阅读了很多次关于Linux’s token bucket filter (tbf)但仍然不完全理解我应该如何计算突发和延迟参数,对我感到羞耻:(

我想合理的延迟大约是50毫秒.好的,但应该突破什么价值呢?

该联机帮助页说:

The latter calculation takes into account the size of the bucket,
the rate and possibly the peakrate (if set). These two parameters are
mutually exclusive.

那么,延迟与桶和过滤器有什么关系呢?有计算公式吗?或者只是一个问题,“好吧,X字节的突发和Y秒的延迟对我有好处”?

解决方法:

从联机帮助页中,对爆发的唯一约束是它必须足够高以允许您配置的速率:它必须至少为速率/ HZ. HZ是内核配置参数;您可以通过检查内核配置来弄清楚系统中的内容.例如,在Debian上,您可以:

$egrep '^CONFIG_HZ_[0-9]+' /boot/config-`uname -r`
CONFIG_HZ_250=y

所以我系统上的HZ是250.要达到10mbps的速率,我需要至少10,000,000比特/秒÷250 Hz = 40,000比特= 5000字节的突发. (注意,联机帮助页中的较高值来自HZ = 100时的默认值).

但除此之外,爆发也是一种政策工具.它配置了您现在可以使用更少带宽来“保存”以供将来使用的程度.这里有一个常见的事情是,您可能希望允许小型下载(例如,网页)非常快,同时限制大量下载.您可以通过将突发增加到您认为小型下载的大小来实现此目的. (虽然,你经常切换到类似htb的有类qdisc,所以你可以分割出不同的流量类型.)

因此:您将突发配置为至少足够大以实现所需的速率.除此之外,你可以进一步增加它,这取决于你想要达到的目标.

令牌桶过滤器的概念模型

“桶”是一个隐喻对象.它的关键属性是它可以保存令牌,并且它可以容纳的令牌数量是有限的 – 如果你试图添加更多,它会“溢出”并且额外的令牌会丢失(就像试图在水中放入太多水一样)实际的桶).桶的大小称为突发.

为了实际将数据包传输到网络上,该数据包必须获得等于其大小(以字节或mpu为单位)的令牌(以较大者为准).

存在(或可以)等待令牌的分组的行(队列).当存储桶为空时,或者具有比数据包大小更少的令牌时,会发生这种情况.在水桶前面的人行道上只有这么多的空间,房间的数量(以字节为单位)是由限制直接设定的.或者,它可以间接地设置延迟(在理想的世界中,计算将是速率×延迟).

当内核想要从过滤的接口发送数据包时,它会尝试将数据包放在行的末尾.如果人行道上没有任何空间,那对于包裹来说是不幸的,因为在人行道的尽头是一个无底洞,内核掉落了包裹.

最后一块是一个令牌制作机,每次打勾都会将速率/ HZ令牌添加到桶中. (这就是为什么你的桶必须至少这么大,否则一些新的令牌会被立即丢弃).

标签:linux,qos,tc
来源: https://codeday.me/bug/20190809/1630364.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有