异数OS TCP协议栈测试(四)--网卡适配篇
异数OS TCP协议栈测试(四)–网卡适配篇
本文来自异数OS社区
github: https://github.com/yds086/HereticOS
异数OS社区QQ群: 652455784
异数OS-织梦师(消息中间件)群: 476260389
为了实际走向应用,异数OS目前适配了netmap平台,DPDK平台,暂时每端口单核单队列的模式,后面各项问题解决后,开始适配RSS FDIR方案,下面是目前适配各个网卡驱动平台的测试结果。
测试说明
测试硬件平台
CPU : E5 2670 V1 2.3G
内存:64G
网卡: intel 82599 双口,5GT PCI E限制(损失30%满载收发包性能)
测试用例
1.双口双核,将网卡两个口用光纤回环链接,CPU3 创建TCP server,CPU 5创建 指定连接数量的TCP Client线程(每链接4线程),测试方案使用 异数OS TCP协议栈测试(三)–长连接篇的的测试方法,成绩是ECHO的iops成绩。
1.单口单核,将网卡1个口的TX RX光纤回环链接,CPU3 创建TCP server,同时创建 指定连接数量的TCP Client线程,测试方案使用 异数OS TCP协议栈测试(三)–长连接篇的的测试方法,成绩是ECHO的iops成绩。
3.UDP NIC回环,分别在双口双核 单口单核模式下,创建两个线程,两个线程绑定对应的网卡适配器,对发UDP包记录下收发包的速度,成绩是收包发包循环的次数,一次收一个发把一个包。
测试结果
网卡接口平台 | 测试用例 | NIC UDP 回环 | 1链接 | 8TCP链接 | 32TCP链接 | 64TCP链接 | 128TCP链接 | 256TCP链接 | 600WTCP链接 |
---|---|---|---|---|---|---|---|---|---|
dpdk | 双口双核 | 10M | 136K | 1.037M | 3.47M | 4.06M | 4.2M | 4.4M | 3.1M 会丢包丢链接 |
dpdk | 单口单核 | 9M | 136K | 1.018M | 2.35M | 2.5M | 1.95M | 1.9M | 950k |
netmap | 双口双核 | 8M | 131K | 940k | 3.6M | 4.2M | 4.5M | 4.7M | 2.3M |
netmap | 单口单核 | 6M | 131K | 940k | 2.2M | 2.8M | 2.7M | 2.4M | 1.5M |
异数OS软件交换机 | 双口双核 | 13M | 1.8M | 4.6M | 4.6M | 4.6M | 4.7M | 4.8M | 3.3M |
异数OS软件交换机 | 单口单核 | 14M | 5.3M | 5.0M | 5.0M | 4.95M | 4.95M | 5.03M | 4.3M |
适配总结
netmap,dpdk,异数OS软件交换机测试对比
通过适配netmap和DPDK平台,总结一些问题,netmap适配下来,性能比DPDK要强大概10%到100%,尤其是在链接多,app业务占用内存多的环境,dpdk在3W链接以上会出现Server端RX丢包(Dropped),导致链接大量的丢失,600W丢失500w,并造成不稳定,而这一现象目前在netmap环境下没有出现,netmap以及异数OS软件交换机可以做到600W 0丢包,另外netmap由于采用ring与上层协议栈交换数据,不需要分配释放包缓存,因此降低了适配复杂度,并提高了包交换性能,这使得netmap的性能可以达到异数OS软件交换机性能的90%,而DPDK只能交换包数组,需要大量的工作做包缓存管理,效率较低,这可能是DPDK实际上比netmap以及异数OS软件交换机慢的原因。
TCP协议栈适配网卡的问题
由于TCP需要类似ECHO的传输流程控制机制,因此单个链接并不能批量收发包,这导致使用批量收发包技术的网卡出现性能损失,性能被网卡约束所影响,出现了一个性能墙,由测试数据来看,必须在32或者64路以上并发TCP链接,才有希望利用10G网卡的IO能力,由于异数OS软件交换机使用内存交换技术(多核采用CPU cache跨核交换),因此延迟比较低,一般在70ns左右,因此不存在单链接性能墙的问题。
DPDK丢包问题分析
DPDK经过反复分析调参,任然无法解决丢包的问题,在3W链接以下以及UDP收发包测试中,DPDK可以0丢包,推断可能是需要设置网卡流控,但实际上设置后并没有任何效果,排除流控的问题,无奈用异数OS做了软件流控,将TCP客户端发包能力控制在5000以内,发现丢包问题任然无法解决,而异数OS此时对rte_eth_rx_burst的polling速度是30M,所以排除是协议栈延迟高的问题,经过慢速持续增长的链接线程观察(每秒创建1000个TCPClient,netmap平台可每秒创建200W链接无问题),在Client链接线程数创建超过3W时,丢包现象开始发生,此时软件层占用巨页内存20M,正好达到E52670 L3 Cache的尺寸,所以暂时推断DPDK的ddio的ring polling技术可能存在问题,当l3 cache不足,需要在内存交换包时可能出现丢包。
异数OS TCP协议栈测试(四)--网卡适配篇的更多相关文章
- 异数OS TCP协议栈测试(五)--关于QOS与延迟
. 异数OS TCP协议栈测试(五)–关于QOS与延迟 ##本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 6524 ...
- 异数OS TCP协议栈测试(一)--数据传输篇
异数OS TCP协议栈测试(一)--数据传输篇 本文来自异数OS社区 github: 异数OS-织梦师(消息中间件)群: 476260389 测试目标 数据传输IO性能测试,主要是建立连接后测试收 ...
- 异数OS TCP协议栈测试(三)--长连接篇
异数OS TCP协议栈测试(三)--长连接篇 本文来自异数OS社区 github: 异数OS-织梦师(消息中间件)群: 476260389 异数OS TCP长连接技术简介 说起长连接,则首先要谈对 ...
- 异数OS TCP协议栈测试(二)--短连接篇
异数OS TCP协议栈测试(二)--短连接篇 本文来自异数OS社区 github: 异数OS-织梦师(消息中间件)群: 476260389 测试目标 TCP 短链接IO性能测试,Client Se ...
- 异数OS国产CPU平台移植项目需求分析
异数OS国产CPU平台移植项目需求分析 目录 异数OS国产CPU平台移植项目需求分析 项目立项背景 项目需求分析 异数OS性能指标简介 1.TCP协议栈性能测试 2.异数OS-织梦师-水母 消息队列性 ...
- 异数OS 织梦师-水桶(三)-- RAM共享存储方案
. 异数OS 织梦师-水桶(三)– RAM共享存储方案 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652455 ...
- 国产CPU 申威1621 异数OS基础组件理论性能测试报告
国产CPU 申威1621 异数OS基础组件理论性能测试报告 文章目录 国产CPU 申威1621 异数OS基础组件理论性能测试报告 前言 测试平台 测试项目 SW1621 异数OS 容器虚拟交换机模拟性 ...
- 异数OS 织梦师-纤手(二)-- LPC RPC篇
异数OS 织梦师-纤手(二)– LPC RPC篇 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652455784 ...
- 异数OS 织梦师-Xnign(四)-- 挑战100倍速Nginx,脚踩F5硬件负载均衡
. 异数OS 织梦师-Xnign(四)– 挑战100倍速Nginx,脚踩F5硬件负载均衡 本文来自异数OS社区 github: https://github.com/yds086/HereticOS ...
随机推荐
- P1051 八皇后问题
题目描述 在国际象棋中,皇后是同时具备象和车的攻击范围的,它可以横竖移动,也可以斜着移动.那么在一个8*8的标准国际象棋棋盘中,我们要放入8个皇后,同时皇后之间无法互相攻击,问有多少种皇后的放置方法. ...
- Eclipse文档注释导出doc
选择要导出的项目,右键选择Export 直接next,在最后finish之前加上编码格式.要不然会出现乱码
- 1134 最长上升子序列 (序列型 DP)
思路: 由于一般的动态规划时间复杂度是O(n^2)(哈哈哈哈 第一次用的就是这个!)用在这里由于n最大为50000 所以会超时 到这里我们可以用一个数组来动态维护这个最长上升的子序列,将你要输入的子序 ...
- 相似文本文档分析之SimHash算法
Simhash算法: Simhash算法由Google的Charikar提出,是将一篇文档转化为n位的签名,通过比较签名的相似度来计算原文档的相似度.签名越相近,则文档越相近.因此,整个过程就不会涉及 ...
- sort排序,按指定字段进去重,sort -t "^" -k 8 -su,ls给文件名中数字排序sort -k1.5n,Tab符要转义
sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序. sort语法 ...
- 常用MouseEvent鼠标事件对象&KeyboardEvent键盘事件对象&常用键盘码
MouseEvent鼠标事件对象: e.target //=> 事件源(操作的是哪个元素) e.clientX e.clientY //当前鼠标触发点距离当前窗口左上角的X|Y轴坐标 e.pag ...
- windows编译caffe2遇到的问题
首先介绍下window编译caffe2整体流程: 说明:如果不需要python支持只需3.4即可,而且编译亦不会出现问题. 1. 安装python2.7,. 我使用的是anaconda python2 ...
- SSL/TLS 配置
Quick Start 下列说明将使用变量名 $CATALINA_BASE 来表示多数相对路径所基于的基本目录.如果没有为 Tomcat 多个实例设置 CATALINA_BASE 目录,则 $CATA ...
- TCP&IP基础概念复习
第一章概述 NII(National Information Infrastructure):国家信息基础设施 GII(Global Information Infrastructure):全球信息基 ...
- Your development team, "", does not support the Push Notifications capability.
问题: Your development team, "", does not support the Push Notifications capability. 解决方法: 1 ...