bbr中的缩放因子BW_SCALE/BBR_SCALE
0. 前言
不知道有没有人跟我一样,看源码的时候如果想不清一个点总会特别难受,就盯着它不放。
bbr的源码最开始处就定义了这样的宏,并写了注释,可是我一开始想不通,就是想不通为什么取这个值,在网上还搜不到相关的解释。我奇怪这是不是一眼就该看懂的东西,可是我确实就是没懂吖。纠结之后选择问我老大,终于给解释明白了哈哈哈。整理以备忘,也分享给有需要的人。
/* Scale factor for rate in pkt/uSec unit to avoid truncation in bandwidth* estimation. The rate unit ~= (1500 bytes / 1 usec / 2^24) ~= 715 bps.* This handles bandwidths from 0.06pps (715bps) to 256Mpps (3Tbps) in a u32.* Since the minimum window is >=4 packets, the lower bound isn't* an issue. The upper bound isn't an issue with existing technologies.*/
#define BW_SCALE 24
#define BW_UNIT (1 << BW_SCALE)#define BBR_SCALE 8 /* scaling factor for fractions in BBR (e.g. gains) */
#define BBR_UNIT (1 << BBR_SCALE)
1. BW_UNIT
如它的名字所言,它就是一个单位,一个自定义单位,为什么需要它呢,就是方便表示罢了。比如 0.040s 可以这样表示,但如果数据都是几十秒以下的,那这时考虑换成 40ms 来表示会更方便,也不需要浮点数了。这个情况下,单位是熟知的ms,从s过来的缩放因子是1000。
搞清楚这个其实就明白了。我们最终要得到 pkt/uSec 为单位,但实际计算过程当中的数据会长什么样呢。定一包数据为1500字节好了。
1pkt/uSec = 1500B/us = 1500*8b/0.000001s = 1500*8*1000000 bps ~= 12G bps
这时我们就取pkt/uSec为单位的话,1就表示了这个速度了。要知道百兆带宽的网络,拉满了也就100Mbps啊。这个单位显然对于实际来说还太大了,我们需要更精确的。
如果定2^24为单位的话,那么 1从表示 12G可以降到 715,即
1500 bytes / 1 usec / 2^24 ~= 715 bps
这时一个u32的数可以表示的范围从[1,UINT_MAX]变成了 [715, 715*UINT_MAX],也是就是“0.06pps (715bps) to 256Mpps (3Tbps)”。这个范围对于实际运算来讲是合适的,所以可以取这个值。就是说,24只是一个合适的数,它并不是必须的或者精确的。
2. BBR_UNIT
同理地,BBR_UNIT取的单位值是8,也是为了表示方便而加入缩放因子来调整数据表示范围。
比如有这样一个数组 {5/4,3/4,1,1,1,1,1,1 },我们可以选择定义成一个浮点数的类型来存放这些比例值,也可以选择加一个缩放因子,比如取4, 然后按这样子来定义数组,那么就可以直接用int类型来表示就可以了。
static const int bbr_pacing_gain[] = {BBR_UNIT * 5 / 4, /* probe for more available bw */BBR_UNIT * 3 / 4, /* drain queue and/or yield bw to other flows */BBR_UNIT, BBR_UNIT, BBR_UNIT, /* cruise at 1.0*bw to utilize pipe, */BBR_UNIT, BBR_UNIT, BBR_UNIT /* without creating excess queue... */
};
bbr中的缩放因子BW_SCALE/BBR_SCALE相关推荐
- CVPR 2019 | 旷视提出超分辨率新方法Meta-SR:单一模型实现任意缩放因子
点击我爱计算机视觉标星,更快获取CVML新技术 CV君按:图像超分辨率(Super-Resolution,SR )的研究由来已久,但近两年来随着深度学习在该领域的成功应用,工业界的研究突然火了起来,互 ...
- CVPR | 旷视提出Meta-SR:单一模型实现超分辨率任意缩放因子
点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 编辑:Sophia 计算机视觉联盟 报道 | 公众号 CVLianMeng 转载于 :旷视 [人工智能资源(书籍 ...
- 求n!中含有质因子p的个数
定理: 中含有质因子p的个数为 ,其中 int cal(int n, int p) {int ans = 0;while (n != 0) {ans += n / p;n /= p; //相当与 ...
- R语言使用pROC包绘制ROC曲线实战:roc函数计算AUC值、plot.roc函数绘制ROC曲线、添加置信区间、为回归模型中的每个因子绘制ROC曲线并在同一个图中显示出来
R语言使用pROC包绘制ROC曲线实战:roc函数计算AUC值.plot.roc函数绘制ROC曲线.添加置信区间.为回归模型中的每个因子绘制ROC曲线并在同一个图中显示出来 目录
- 关于定点机中的比例因子
计算机采用定点数表示时,对于既有整数又有小数的原始数据,需要设定一个比例因子,数据按比例因子缩小成定点小数或扩大成定点整数再参加运算,结果输出时再按比例折算成实际值. 比例因子必须选择恰当.选择不当, ...
- html 图片自由缩放_PS中的“缩放”
大家好!今天我们来总结一下Photoshop中的缩放,主要有图像(图片)的缩放.选区缩放.图层样式缩放. 1.图像的缩放 选中图像-快捷键 Ctrl+T-选择变换点.单击鼠标拖动进行变换. 2.选区缩 ...
- 关于WPF中平移缩放问题的解决
问题解决步骤 关于WPF中平移缩放问题的解决 图形缩放移动的实现 遇到的问题描述 问题解决 问题总结 关于WPF中平移缩放问题的解决 一直在研究WPF的绘图问题,其中需要用到图形的移动,以及图形的缩放 ...
- 在VirtualBox中退出缩放模式的快捷方式[关闭]
本文翻译自:Shortcut to exit scale mode in VirtualBox [closed] 在Oracle VirtualBox,Windows 7主机中退出缩放模式的快捷方式是 ...
- 怎么在CAD看图中适时缩放CAD图纸
在CAD工作中,在使用CAD看图进行查看图纸的时候,我们会遇到很多的问题,就比如说图纸有的大有的小,那么我们怎么将CAD图纸适时缩放到指定的位置呢?下面我们就一起来看看怎么解决方法吧! 步骤一:首先, ...
最新文章
- 多媒体指令(灰度像素最大值)
- php 应用宝支付,U8SDK——应用宝YSDK新的支付流程
- C++中的wchar_t(转)
- TCP/IP详解学习笔记(2)-数据链路层
- php里面没有mssql,为什么没有正确使用PHP / MSSQL的日期/时间?
- 带你认识数据库视图对象,下次不要再认成“表”了
- Xml序列化自引用/循环引用问题2
- 他在 Stack Overflow 提问如何黑掉Stack Overflow,结果成了
- 【C、C++】ctype.h、cctype中的isnumber()函数和isdigit()函数的区别
- 九大内置对象及四个域对象的总结
- C++总结学习(一)
- cadence allegro 绘制蛇形等长线
- 牛客网初阶练习(6)
- python2 与 python3 共存
- bzoj 4987 Tree - dp
- 前端优质网络内容(引用)
- 【视频】老外拍的阿里巴巴纪录片,讲述淘宝怎么打败eBay
- OSPF主流LSA及域内域间Vlink虚链路配置
- Qt添加.qrc文件和设置exe图标和控件图标
- c++ 因数分解(递归)