基于历史学习的拥塞控制算法

华夏创新都知道的吧,但没几个能学明白它们的,但拙劣的模仿者倒是不在少数。

几乎所有号称基于学习的,基于历史的拥塞控制算法都是在利用局部性原理,比如简单的移动指数平均,企图用刚刚逝去的历史启动现在,你会看到,即便历史已经表明 RTT 事实上一直在上下波动,这种启发式算法给出的永远是一个单独的预测值,你觉得这个值能准确到哪去。

曾经 Linux 内核有个 net.ipv4.tcp_no_metrics_save = 0 参数,但几乎没什么卵用,你仿照它的实现在里面再多增加几个 metric,依然没什么卵用,因为你不懂长程依赖的发现要在不同跨度错开,但一说傅里叶级数你就又懂了。

依然是用历史去启发现在,只不过是用不同时间跨度的同比替代单一环比,难道不是这种策略更能精确刻画历史的每一个细节吗,所有的尺度同比数据就摆在那里,就像傅里叶展开一样,你将看到整个历史在任意精度下的全貌,而不只是一个值,事实上,可以认为同比是大跨度的环比。

你会发现,用 n 个跨度的移动指数平均跟踪 RTT,可以快速发现长程依赖的规律,接下来你就知道什么时间段设置什么 cwnd 了,就是这么简单。

我准备连续观察两个月的数据,跨度从秒,分钟,一刻钟,小时,日,周,半月一直到月,可是这么多值保存在哪里呢,没有任何连接可以持续这么久,同时我也不想为每个跨度只保存一个某种均值(若保存均值,只需保存 8 个值即可),我想全部保存下来,摊开一张纸上来立体直观看,我只相信我的眼睛以及我的脑子的判断。

是的,以前我真的就是摊开到纸上肉眼看,字面意义的纸上,打印机打出来的,辅助手抄,于是诞生了我那经典的 1000 个 if 分支,效果杠杠的。如今不用那么麻烦了,结合一个大模型即可,喂养的数据就是各个跨度的 RTT,cwnd 信息,在学习过程中将历史全部塑造在神经网络的权重中,历史存在整个模型。接下来,只需要把当前度量喂进去,一个推理结束,cwnd 就出来了,准不准不说,肯定会越来越准的。简单拿 sigmoid(rtt/bw) + sigmoid(丢包率) 做损失函数,复杂的自己想。

还有一种方法,参考阿里的 TCPRT,实时或周期性通过 relayfs 将数据通过类似 kalfka 吐给专门的数据分析服务,但它没有干净利索的损失函数进行反哺,不过这也算是大模型之前的传统方法了,显然没有大模型清爽。

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

Read more

Flutter 组件 jerelo 适配鸿蒙 HarmonyOS 实战:JSON-RPC 2.0 通讯,构建高性能远程过程调用与边缘端分布式协同架构

Flutter 组件 jerelo 适配鸿蒙 HarmonyOS 实战:JSON-RPC 2.0 通讯,构建高性能远程过程调用与边缘端分布式协同架构

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 jerelo 适配鸿蒙 HarmonyOS 实战:JSON-RPC 2.0 通讯,构建高性能远程过程调用与边缘端分布式协同架构 前言 在鸿蒙(OpenHarmony)生态迈向工业 4.0、涉及海量边缘节点调度、分布式服务调用及跨端轻量级 RPC(Remote Procedure Call)互联的背景下,如何实现一套低开销、标准化且具备“方法导理”能力的通讯协议,已成为决定分布式系统协同效率的关键工程命题。在鸿蒙设备这类强调微内核架构与软总线高效吞吐的环境下,如果应用依然依赖沉重的 HTTP/REST 封装进行频繁的小报文交互,由于由于 HTTP 协议头的冗余性,极易由于由于“通讯开销过高”导致实时监控系统的响应滞后。 我们需要一种能够支持请求/响应对齐、具备通知(Notification)机制且符合

By Ne0inhk
别再手动调优了!KingbaseES连接条件下推自动拯救慢 SQL

别再手动调优了!KingbaseES连接条件下推自动拯救慢 SQL

告别SQL性能焦虑:金仓数据库“连接条件下推”的性能魔法 你是否遇到过这样的场景:一个看似复杂的SQL,在测试环境运行飞快,一到生产环境就“卡死”,一查执行计划,发现子查询生成了一个巨大的中间结果集,导致后续操作全部陷入性能泥潭? 如果你正被此类场景困扰,那么,是时候认识一项改变游戏规则的技术:金仓数据库(KingbaseES)「基于代价的连接条件下推」。它不仅是技术优化,更是应对复杂业务查询的“性能终结者”。 一、 为什么你的复杂SQL会“爆内存”? 在金融、政务等复杂业务系统中,为了逻辑清晰,SQL常常被写成这样: SELECT * FROM (SELECT DISTINCT * FROM 巨表_A) AS 子查询结果, 筛选表_B WHERE 子查询结果.关键ID = 筛选表_B.关键ID AND 筛选表_B.过滤字段 = '

By Ne0inhk
构建基于Go语言的高性能命令行AI对话客户端:从环境部署到核心实现

构建基于Go语言的高性能命令行AI对话客户端:从环境部署到核心实现

前言 在现代软件开发领域,Go语言凭借其卓越的并发处理能力、静态类型安全以及高效的编译速度,已成为构建命令行工具(CLI)的首选语言之一。本文将详细阐述如何在Ubuntu Linux环境下部署Go开发环境,并结合蓝耘(Lanyun)提供的DeepSeek大模型API,手写一个支持多轮对话、上下文记忆的智能终端聊天工具。 一、 基础运行环境的准备与构建 任何上层应用的稳健运行都离不开坚实的底层系统支持。本次部署的目标环境为Ubuntu LTS系列(20.04/22.04/24.04),这些长期支持版本保证了系统库的稳定性与安全性。硬件层面,建议配置至少1GB的内存与5GB的磁盘空间,以满足编译器运行及依赖包缓存的需求。 1. 系统包索引更新与系统升级 在进行任何开发工具安装之前,首要任务是确保操作系统的软件包索引与现有软件处于最新状态。这不仅能修复已知的安全漏洞,还能避免因依赖库版本过旧导致的编译错误。 执行系统更新操作: sudoapt update &&sudoapt upgrade -y 该指令分为两部分:apt update 用于从软件源服务器获取最新的软件包列

By Ne0inhk
系统编程语言大乱斗:Go、Rust、Zig、C++ 与 C# 全面对比(2026 年版)

系统编程语言大乱斗:Go、Rust、Zig、C++ 与 C# 全面对比(2026 年版)

在现代软件开发的战场上,系统级编程语言的选择早已不再是“C 还是 C++”的二元问题。随着云原生、嵌入式、高性能计算和安全关键系统的兴起,Go、Rust、Zig、C++ 和 C# 五位选手各自亮出绝活,争夺开发者的心智。本文将从设计哲学、内存管理、并发模型、性能表现、适用场景五大维度,为你揭开这场“语言战争”的真相。 一、设计哲学:五种不同的编程信仰 语言核心理念关键词C“信任程序员,贴近硬件”极简、自由、无抽象C++“零成本抽象,不为不用的东西付费”多范式、兼容 C、极致控制Go“简单即生产力”快速编译、内置并发、自动 GCRust“内存安全无需妥协性能”所有权、零运行时、无畏并发Zig“透明即自由”

By Ne0inhk