未来的拥塞控制与 Linux EEVDF 调度器

有破要有立。

前面提到 经典端到端拥塞控制将越来越失效,未来该如何,谈谈我的看法。

端到端拥塞控制的难点根本上是要解决公平性问题,顺带着提高资源利用率。我们很容易理解,在共享资源场景下,不公平一定是低效的,公平甚至是高效的前提,但公平是加权的。

比如一些不重要的后台任务,一致算法对其强加一致公平就多此一举了,为解决这问题,将其纳入 app-limited 就不管了。自己都不需要公平但却被强加公平的情况还有很多,算法很难加权。

为刻画任务权重,引用自己一个想法:四象限调度 以及 Linux 四象限调度。

网络传输如何实现自决,引用自己一个借贷式方案:借贷式拥塞控制。借贷式拥塞控制尝试引入一个新的维度,burst 率,作为发送体验(或者计费)的度量依据,供求关系和 ROI 会自动收敛。

引用一个更实际的 Linux 新调度器:Linux 6.6 的 EEVDF 调度器。

了解一下 EEVDF(Earliest Eligible Virtual Deadline First):
在这里插入图片描述

很有意思的一个调度器。

之前的调度器之所以引入那么多 “启发式” 把戏都不尽人意,就因为无论多么大的权重,很容易被那些来无影去无踪,不易捕捉的 “紧急” 小事不停打断,比如 hardirq,softirq,做过系统运维的都知道,一旦 hardirq 不均衡,softirq 高了,系统就抖动了,这是不公平的根源,也是低效的根源,但一直以来 Linux 调度器都没有把这些 “闪客” 纳入管理,这次 EEVDF 做到了,我觉得这就是一个四象限调度器。

网络传输也一样,类比的话我就不说太多,本质上就是一回事,就说一点,拥塞,公平性,抖动的根源同样来自那些来无影去无踪的 “紧急闪客”,也就是 burst!管理好 burst,拥塞问题就解决了一大半。

CFS 调度器 的优势之一就是承诺去除 O(1) 调度器的启发式把戏,但最终它自己也加入了越来越多的把戏,事后回想,其实就是信息不足,“紧急性” 维度一直作为 “额外” 因素作为把戏的输入,没有被融入到调度权重。

网络传输也有两个维度,cwnd 表示数据量(重要性),而 burst 率表示紧急性,一直以来后者也没有被融入权重,和调度器的问题几乎一模一样。

学学 EEVDF 如何识别并管理闪客的。其实它并没有能力识别,它靠的是信任。谁说时间片小的一定是紧急任务的,信任啊。这也就是拥塞控制自决的依据。

分布式网络非同步网络,没有哪个共享变量可以充作 base vtime,但绝对时间可以一用,我们要的不是它的粒度,而是它定义了一条死线,遵循同一算法的各 sender 的 vtime 不能越过该死线,我们是合作式网络,如果你能靠调本地时间来占便宜,你也可以不用这个算法,换用 pixie。我们是苦于没办法合作共赢,而不是苦于没办法抓坏蛋。

如果不理解为什么绝对时间可以用,就看看天上的太阳。

可以从下面开始实验。

  • 各 sender 采用同一如下算法。
  • 定义函数 cwnd_and_pacing_rate = f(curr_time),获取初始传输配置。
  • 定义 acct,发送量平稳但多时,均匀增加 acct,突发增加时,快速增加 acct。
  • 定义函数 vtime = g(acct),acct 越大,vtime 增长越快。
  • gap = curr_time - vtime,gap 为负暂停传输,gap 越大,传输机会越大。
  • 定义函数 cwnd_and_pacing_rate = h(gap),获取即时传输配置。
  • 各 sender 同一调好一套参数。

再次强调,假设网络是合作网络,没有机会主义者想占便宜,这其实也是所有拥塞控制算法的基本假设,但这也是人们(特别是国内)对拥塞控制算法的误解,以为既然没人管,那就使劲占便宜吧。因此,难点是如何将上述算法迭代得更优秀,而不是如何钻空子。

事实上,Linux 内核也提供给 task 钻空子的机会,但系统的假设是系统是合作式的,没有这样的 task,如果有人非要写个 while(true) {i++} 或者 fork 炸弹,管理员会收拾他。

最后,如何响应丢包和时延增加就不是问题了,以上是 “拥塞控制自决” 框架,它定义了系统的基本法则,所有一切就都可自决,比如丢包,时延增加了,你主动减缓多少发送由自己决定,比如你有一笔紧急数据要发送,那就根据上面的公式计算,如果可以发就按照结果发就好了,如果你发的实在太多,vtime 会越过 base_vtime 的,你只要遵守规则,下次就没法发了,这就量化并节制了突发。perfect。

任何拥塞控制算法都和一个新的调度器一样,在大量部署并成为默认之前,必须经过大量的实验和验证以及数学论证,绝对不能损害他者。不能轻易部署。

浙江温州皮鞋湿,下雨进水不会胖。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/169975.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

v-bind和v-model

目录 前言 v-bind 作用 语法格式 编译原理 简写 v-model 作用 使用方法 v-bind和v-model的区别和联系 前言 本文我们来了解一下模板语法之指令语法中的v-bind和v-model v-bind 作用 v-bind可以让html标签的某个属性的值产生动态的效果 语法格式 <html标签 v-bin…

U-Mail邮件中继,让海外邮件沟通更顺畅

在海外&#xff0c;电子邮件是人们主要的通信工具&#xff0c;尤其是商务往来沟通&#xff0c;企业邮箱是标配。这主要是因为西方国家互联网发展较早&#xff0c;在互联网早期&#xff0c;电子邮件技术较为成熟&#xff0c;大家都用电子邮件交流&#xff0c;于是这成了一种潮流…

终端安全/SOC安全/汽车信息安全大课来袭-共计204节课

在近两年的时间里&#xff0c;我投入了大量的心血和精力&#xff0c;不仅创作了数千篇精美的图片&#xff0c;还编写了超过1000篇文章&#xff0c;以及数百篇内容丰富的PPT。经过这番努力我终于成功地构建出两套系统化的学习课程&#xff0c;它们分别是“Trustzone/TEE/安全从入…

3d max软件中的缓存垃圾该如何清理?

使用3d max建模到渲染操作&#xff0c;来回对效果图调整的次数过多时&#xff0c;就会出现一下看不到的垃圾缓存&#xff0c;影响保存的速度&#xff0c;影响效率&#xff01; 对于这类的3d垃圾清理的有什么高效方法呢&#xff1f; 3dmax垃圾清理的常规操作如下&#xff1a; 1、…

虚假内容检测,谣言检测,不实信息检测,事实核查;纯文本,多模态,多语言;数据集整理

本博客系博主个人理解和整理所得&#xff0c;包含内容无法详尽&#xff0c;如有补充&#xff0c;欢迎讨论。 这里只提供数据集相关介绍和来源出处&#xff0c;或者下载地址等&#xff0c;因版权原因不提供数据集所含的元数据。如有需要&#xff0c;请自行下载。 “Complete d…

【Springboot】基于注解式开发Springboot-Vue3整合Mybatis-plus实现分页查询(一)——后端实现思路

系列文章目录 基于注解式开发Springboot-Vue3整合Mybatis-plus实现分页查询(二&#xff09;——前端el-pagination实现 文章目录 系列文章目录系统版本实现功能操作步骤1. 新建Mybatis的全局分页配置文件2. 编写OrderMapper :继承Mybatis-plus提供的BaseMapper3. 编写OrderSer…

mini-vue 的设计

mini-vue 的设计 mini-vue 使用流程与结果预览&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name&qu…

Unity - 各向异性 - 丝绸材质

文章目录 目的环境主观美术效果的[假]丝绸基于物理的方式ProjectPBR filament web captureReferences 目的 拾遗&#xff0c;备份 环境 Unity : 2020.3.37f1 Pipeline : Builtin Rendering Pipeline 主观美术效果的[假]丝绸 非常简单 : half specualr pow(1 - NdotV, _Edg…

换根dp学习笔记

最近模拟赛经常做到&#xff0c;于是我就学习了一下。 算法原理 换根 d p dp dp的题一般都会给出一个无根树&#xff0c;因为以不同的点为根时&#xff0c;问题的答案不一样&#xff0c;所以它会让你输出答案的最大或最小值。 暴力去做这种题&#xff0c;就是以每个点为根然…

汽车ECU的虚拟化技术初探(一)

目录 1.为什么要提汽车ECU的虚拟化&#xff1f; 2.虚拟化技术分类 2.1 硬件虚拟化 2.2 操作系统虚拟化 问题引入&#xff1a; Hypervisor是如何来管理和隔离硬件资源&#xff0c;保证各个不同功能的应用程序的资源使用安全和资源调度&#xff1f;没有MMU就做不了虚拟化&am…

CS224W6.2——深度学习基础

在本文中&#xff0c;我们回顾了深度学习的概念和技术&#xff0c;这些概念和技术对理解图神经网络至关重要。从将机器学习表述为优化问题开始&#xff0c;介绍了目标函数、梯度下降、非线性和反向传播的概念。 文章目录 1. 大纲2. 优化问题2.1 举例损失函数 3. 如何优化目标函…

案例续集留言板

前端没有保存数据的功能,后端把数据保存下来(内存,数据库等等......) 前端代码如下 : <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initia…