.

异数OS TCP协议栈测试(五)–关于QOS与延迟


##本文来自异数OS社区


github: https://github.com/yds086/HereticOS

异数OS社区QQ群: 652455784

异数OS-织梦师(消息中间件 ,游戏开发方向)群: 476260389

异数OS-织梦师-Xnign(Nginx方向)群: 859548384


关于TCP QOS以及延迟基本理论

本文讲述的是echo模式下的IO延迟与QOS,延迟是个比较敏感的话题,这也是异数OS直到今天才放出具体延迟数据的原因,因为这需要一个具体的业务场景才可以描述清楚延迟是什么,所以当Xnign稳定的提供服务后,我们才开始做具体的更有意义的延迟测试,Xngin是一个httpserver,因此延迟的理论计算很直白很简单,下面是延迟理论计算公式。

1.通常情况下,系统为所有并发服务提供均衡请求时(linux C10K时无法稳定提供)

平均延迟=(系统并发连接数量 /QPS) +(系统链路延迟).

2.当系统有QOS质量控制的情况下(linux无法提供)

平均延迟=(QOS队列中IO数量/QPS) +(系统链路延迟).

3.异数OS则在提供以上两种延迟方式基础上提供第三种延迟模式(linux无法提供)

最小延迟=(业务响应延迟/QPS) +(系统链路延迟) .

除去系统链路延迟(网卡交换机路由延迟),第一第二种模式,延迟都与系统并发数以及系统能够提供的QPS性能有直接关系,而第三种模式典型的业务响应延迟数值上可以认为是1,因此无论连接数量多少,都可以提供1/QPS的延迟,该模式可在海量链接时任然提供低延迟体验,这一方案唯有异数OS平台可提供,数据没有上,明白的私聊。

关于Xnign的实现以及测试代码可以在社区群共享获得。

Xnign延迟测试方案

异数OS软件交换机平台理论延迟测试

1.我们在system2启动两个容器,并分别启动Xnign服务,容器1 ip=192.36.0.51 qos=1,容器2 ip =192.36.0.101 qos=2,命令如下

S2-C1: (list (StartService Xnign “-qosid=1”) )

S2-C2: (list (StartService Xnign “-qosid=2”) )

2.在system4启动两个容器,其中容器2启动4个命令控制模式XnignTest,分别对应链接不同qos下的两个Xnign,命令如下

S4-C2: (list (StartService XnignTest “-dip=192.36.0.51 -qosid=1 -ctl”))

S4-C2: (list (StartService XnignTest “-dip=192.36.0.51 -qosid=2 -ctl”))

S4-C2: (list (StartService XnignTest “-dip=192.36.0.101 -qosid=1 -ctl”))

S4-C2: (list (StartService XnignTest “-dip=192.36.0.101 -qosid=2 -ctl”))

创建的服务:

3.测试两个Xnign的延迟,

S4-C2: (ServiceInput 1 “-pc=10 -lp -start”)

S4-C2: (ServiceInput 1 “-pc=10 -sp -start”)

S4-C2: (ServiceInput 3 “-pc=10 -lp -start”)

S4-C2: (ServiceInput 3 “-pc=10 -sp -start”)

结果:

延迟数据单位为ns,可以看出长连接平均延迟为1us,短连接平均延迟2.5us,注意由于我们开启了两个Xnign并占用两个Qos队列,因此当system上只有一个Xnign时,延迟测试数据只有该数据一半左右,另外延迟统计算法大概占用200ns左右没有剔除。

  1. 给ip=192.36.0.51 qos=1的Xnign服务一个100W并发长链接的循环压测测试

    S4-C1: (list (StartService XnignTest “-dip=192.36.0.51 -c=1000000 -qosid=1”))

100W长链接循环压测,平均延迟570ms。

5.回到S4-C2,再分别测试下两个Xnign的服务延迟

S4-C2: (ServiceInput 1 “-pc=10 -lp -start”)

S4-C2: (ServiceInput 1 “-pc=10 -sp -start”)

S4-C2: (ServiceInput 2 “-pc=10 -lp -start”)

S4-C2: (ServiceInput 2 “-pc=10 -sp -start”)

S4-C2: (ServiceInput 3 “-pc=10 -lp -start”)

S4-C2: (ServiceInput 3 “-pc=10 -sp -start”)

S4-C2: (ServiceInput 4 “-pc=10 -lp -start”)

S4-C2: (ServiceInput 4 “-pc=10 -sp -start”)

得到结果:



可以看出由于100W压测链接影响,S2-C1的Xnign服务器延迟已经比较高了,其中短连接几乎测试失败,长连接则稳定在确定的570ms延迟上,而S2-C2的Xnign由于在Qos2上,因此还能正常低延迟访问。

wrk linux 无优化环境压测

压测客户端为千兆网卡,linux环境,内网无丢包,成绩大概2线程 9W QPS,120us平均延迟,该测试主要被linux本身性能约束,并不反映Xnign服务端的最大性能容量,实际上wrk 16CPU核16线程压测Xnign时,异数OS CPU占用率仅3%,而此时linux wrk已16核满载,成绩却下降到1W QPS,反复测试几次后linux wrk出现无法响应问题,杀掉进程重启wrk任然无响应,netstat显示无异常链接,此时windows浏览器任然可以打开页面,XnignTest压测任然正常,由于异数OS作者并不懂linux 优化,所以测试没有再继续深入,wrk使用保持长连接,短链接由于TIME_WAIT状态问题所以没有参考意义,请求数达到28231后wrk停止响应。



linux wrk异常后windows浏览器的反馈。

82599网卡4%丢包环境测试

下面两项为82599网卡4%丢包环境测试, 4%丢包可以用于模拟广域网高延迟高错误的情况,更能挑战反应协议栈以及上层应用的容错能力,稳定性,通讯延迟,链接活跃保持能力等,压测端使用XnignTest。

XnignTest压测 2W保持链接

196W QPS ,平均10ms,最小40us,正态分布统计99%在115ms中完成,超出400ms以上IO延迟约占0.15%

XnignTest压测 1链接

该测试用于直观分析单个链接的性能表现,可以看到大概1000QPS,平均1ms,最小10us,最大100ms。

这两项82599 4%丢包环境测试可以看到Xnign任然保持着0错误和100%的链接活跃可用,当然QPS性能损失还是有,20000链接时损失20%的性能从230WQPS下降到190W左右,单链接QPS性能则从10W QPS下降到1000,但即便是低延迟要求的游戏而言1000的QPS,100ms最大延迟平均1ms延迟也是完全够用的。

异数OS TCP协议栈测试(五)--关于QOS与延迟的更多相关文章

  1. 异数OS TCP协议栈测试(四)--网卡适配篇

    异数OS TCP协议栈测试(四)–网卡适配篇 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652455784 异 ...

  2. 异数OS TCP协议栈测试(三)--长连接篇

    异数OS TCP协议栈测试(三)--长连接篇 本文来自异数OS社区 github:   异数OS-织梦师(消息中间件)群: 476260389 异数OS TCP长连接技术简介 说起长连接,则首先要谈对 ...

  3. 异数OS TCP协议栈测试(二)--短连接篇

    异数OS TCP协议栈测试(二)--短连接篇 本文来自异数OS社区 github:   异数OS-织梦师(消息中间件)群: 476260389 测试目标 TCP 短链接IO性能测试,Client Se ...

  4. 异数OS TCP协议栈测试(一)--数据传输篇

    异数OS TCP协议栈测试(一)--数据传输篇 本文来自异数OS社区 github:   异数OS-织梦师(消息中间件)群: 476260389 测试目标 数据传输IO性能测试,主要是建立连接后测试收 ...

  5. 异数OS国产CPU平台移植项目需求分析

    异数OS国产CPU平台移植项目需求分析 目录 异数OS国产CPU平台移植项目需求分析 项目立项背景 项目需求分析 异数OS性能指标简介 1.TCP协议栈性能测试 2.异数OS-织梦师-水母 消息队列性 ...

  6. 国产CPU 申威1621 异数OS基础组件理论性能测试报告

    国产CPU 申威1621 异数OS基础组件理论性能测试报告 文章目录 国产CPU 申威1621 异数OS基础组件理论性能测试报告 前言 测试平台 测试项目 SW1621 异数OS 容器虚拟交换机模拟性 ...

  7. 异数OS 织梦师-水桶(三)-- RAM共享存储方案

    . 异数OS 织梦师-水桶(三)– RAM共享存储方案 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652455 ...

  8. 异数OS 织梦师-纤手(二)-- LPC RPC篇

    异数OS 织梦师-纤手(二)– LPC RPC篇 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652455784 ...

  9. 异数OS 2017 DPDK 峰会观后感

    1.DPDK in Container 使用虚拟网卡设备技术为每一个容器分配一个IP 网卡适配器(queue).容器技术可以解决虚拟机技术中虚拟机过于臃肿,难于热迁移的问题,可能可以代替美团OVS方案 ...

随机推荐

  1. jquery的offset().top和js的offsetTop的区别,以及jquery的offset().top的实现方法

    jquery的offset().top和js的offsetTop的区别,以及jquery的offset().top的实现方法 offset().top是JQ的方法,需要引入JQ才能使用,它获取的是你绑 ...

  2. Linux 内核 ksets 之上的操作

    对于初始化和设置, ksets 有一个接口非常类似于 kobjects. 下列函数存在: void kset_init(struct kset *kset); int kset_add(struct ...

  3. NOIP2009 压轴---最优贸易

    链接:https://ac.nowcoder.com/acm/contest/959/H来源:牛客网 C国有n个大城市和m条道路,每条道路连接这n个城市中的某两个城市.任意两个城市之间最多只有一条道路 ...

  4. CSS3(3)---2D变形(transform)

    CSS3(3)---2D变形(transform) 2D变形是CSS3中具有颠覆性的特征之一,它常用的属性有:移动(translate).缩放(scale).旋转(rotate).倾斜 (skew). ...

  5. 利用Python实现高度定制专属RSS

    前言 本文转载自个人博客网站,欢迎来访订阅.本篇属于定制RSS系列终极一弹,是三种方式中自由度最高.定制化最强的,也需要一定的编程能力.附上前两篇链接:1.利用Feed43为网站自制RSS源:2.如何 ...

  6. cocos2dx Quaternion 四元数(1/2)

    这篇文章只是我学完四元数之后的一些理解,其实是对别人理解的理解,有些地方我理解但是没有写下来,如果真的想深入的学习四元数,建议从学习复数开始. 这个知识点需要几何想象的天赋和学习的耐心,缺一不可,慢慢 ...

  7. 【游记】THUWC2019-2 Bystander

    [游记]THUWC2019-2 Bystander Day0/-1 感觉自己怎么样都去不了PKUWC(没错)了,差点放弃模拟面试,在老妈的要求下勉强面试,自我介绍没怎么准备,然后就说 我喜欢唱跳Rap ...

  8. 洛谷$P1864\ [NOI2009]$二叉查找树 区间$dp$

    正解:区间$dp$ 解题报告: 传送门$QwQ$ 首先根据二叉查找树的定义可知,数据确定了,这棵树的中序遍历就已经改变了,唯一能改变的就是通过改变权值从而改变结点的深度. 发现这里权值的值没有意义,所 ...

  9. $bzoj2560$ 串珠子 容斥+$dp$

    正解:容斥+$dp$ 解题报告: 传送门$QwQ$ $umm$虽然题目蛮简练的了但还是有点难理解,,,我再抽象一点儿,就说有$n$个点,点$i$和点$j$之间有$a_{i,j}$条无向边可以连,问有多 ...

  10. $CH$ $0x50$ & $0x51$ 做题记录

    [X]$Mr.Young's\ Picture\ Permutations$ 前面这儿写了挺多道辣,,,懒得写辣$QAQ$ (后面所有同上都是同这个$QwQ$ [X]$LCIS$ 做过了,看这儿 $u ...