异数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协议栈测试(四)--网卡适配篇的更多相关文章

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

    . 异数OS TCP协议栈测试(五)–关于QOS与延迟 ##本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 6524 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 异数OS 织梦师-Xnign(四)-- 挑战100倍速Nginx,脚踩F5硬件负载均衡

    . 异数OS 织梦师-Xnign(四)– 挑战100倍速Nginx,脚踩F5硬件负载均衡 本文来自异数OS社区 github: https://github.com/yds086/HereticOS ...

随机推荐

  1. H3C端口状态

  2. 关于CPython中set集合的无序研究

    set集合本身是无序的,但是无意间发现set集合中都是数字时set貌似有序了. 无论声明这个set时数字如何摆放,输出结果总是以一种固定的顺序!同样我将dict字典的key值设为int类型,这时候字典 ...

  3. 使用 node.js三行代码实现手机端访问html页面文件

    首先确保你安装了node (全局安装) npm install -g browser-sync // --files 路径是相对于运行该命令的项目(目录) browser-sync start --s ...

  4. IDEA + Spring boot 单元测试

    1. 创建测试类 打开IDEA,在任意类名,任意接口名上,按ctrl+shift+t选择Create New Test image 然后根据提示操作(默认即可),点击确认,就在项目的/test/jav ...

  5. Java逻辑思维训练题

    两柱香问题题目:有两柱不均匀的香,每柱香燃烧完需要1个小时,问:怎样用两柱香切出一个15分钟的时间段?这个题的重点就是怎么切. 答案:将甲香的一头点着,将乙香的两头点着,当乙香燃烧完时,说明已经过了半 ...

  6. ABP-AsyncLocal的使用

    1.与AsyncLocal对应的是ThreadLocal 2.两种类型 初始赋值 AsyncLocalString.Value = new List { "1" }; AsyncL ...

  7. Centos虚拟机安装指南

    按照文档安装有任何问题,欢迎随时留言 ·准备工作: linux发行版CentOS镜像下载地址: http://isoredirect.centos.org/centos/7/isos/x86_64/ ...

  8. Windows和Linux下与VMware虚拟机通过内网IP通讯

    首先分两种情况:一种是你的电脑已经在一个内网的环境下且有额外的内网IP地址,和另一种只是想给自己电脑上的虚拟机分配个内网IP来通讯. ①有可用的内网IP 找到一个空闲的IP地址(这里以192.168. ...

  9. 一起来立Flag吧!超炫的数据图表分析 2020 年 Java 技术趋势

    引言 2020 来了,第一批 00 后已经 20 岁了,95 后也到了晚婚的年龄,员外的头发也越来越少了,新的一年大家有立下了哪些 Flag ?小伙伴们别急着立 Flag,让员外帮你分析一下哪些技术正 ...

  10. windows创建git并连结github

    1.下载跟自己系统相对应的git版本 2.默认安装 3.绑定用户 git config --global user.name ""git config --global user. ...