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

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

本文来自异数OS社区

 

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

异数OS社区QQ群:  652455784

异数OS-织梦师(消息中间件)群: 476260389

测试目标

 

TCP 短链接IO性能测试,Client Server都采用单线程半双工模式,Client发起连接,连接后发送请求,接收Server回应,收到Server回应后,关闭连接,循环此ECHO流程。

 

 

基本测试环境

VMware 12

异数OS宿主操作系统 debian 8 64

CPU : NUC i3 2.6G 双核

内存:2GB

 

TCP重要参数如下:

 

1. bPassiveForceClose,该参数等于1表示被动强制关闭连接,被关闭方收到Fin时,不在继续完成默认的Fin执行流程,而是发送RST重置链接,快速关闭连接。

2. nMSLTimeOutMSL一般为30秒,在测试ECHO类应用性能时会导致Client 资源出现泄露(一般设计正常的Server端不会),为了方便测试默认设置为0,表示主动发起关闭链接的一方不进入TIME WAIT状态,直接进入CLOSED状态,

3. 带包头200字节负载,不带crc checksum, 无丢包,无硬件延迟情况。

 

测试方案一 (单核快速关闭)

在同一个CPU核上创建一个Server,1Client, bPassiveForceClose=1,以太层使用异数OS软件交换机本地核定向转发。

 

总计ECHO IOPS 1.8M ,软件交换机包交换能力26Mpps,由于Client占用50%的负载,软件交换机占用20%负载,所以预计真实环境中最大可达到4.0M左右的ECHO能力。

 

测试方案二 (单核正常关闭)

在同一个CPU核上创建一个Server,1Client, bPassiveForceClose=0,以太层使用异数OS软件交换机本地核定向转发。

 

 

总计ECHO IOPS 1.4M ,软件交换机包交换能力25Mpps,由于Client占用60%的负载,软件交换机占用10%负载,所以预计真实环境中最大可达到3.0M左右的ECHO能力。

 

测试方案三 (多核分载快速关闭)

 

双核CPUCPU1 仅创建ServerCPU3上创建1ClientbPassiveForceClose=1,以太层使用异数OS软件交换机定向跨核转发。

 

 

总计ECHO IOPS 1.9M ,软件交换机包交换能力26Mpps,由于多核模式下软件交换机会占用50%以上负载,所以分载后性能甚至不如单核模式。

 

测试方案四 (多核分载正常关闭)

双核CPUCPU1 仅创建ServerCPU3上创建1ClientbPassiveForceClose=0,以太层使用异数OS软件交换机定向跨核转发。

 

 

 

总计ECHO IOPS 1.5M ,软件交换机包交换能力26Mpps,相对快速关闭连接模式,在同样包转发能力下,性能下降25%左右。

 

总结

由于时间有限,简单看了下1400字节包的IO能力,性能大概降低有10%左右,由于软件交换机在单核环境中大概有20%的负载占用,多核更是达到50%,因此在真实硬件环境中预计每核有望达到4.0M的短链接能力,大概是主流操作系统IO能力的100倍左右,且主流操作系统一般IO能力不易多核扩充,下面是几种主流系统的单核ECHO对比,数据来自官网以及第三方测试,可比性可能不高,但也可做参考估算。

 

 

异数OS TCP单核短链接

Seastar-Httpd短链接

F-Stack nginx 短链接

F-Stack nginx 长链接

Asio epoll长连接

Asio epoll短链接

400W

32W

9W

20W

14W(不可多核扩充)

4W(不可多核扩充)

 

posted @ 2018-02-18 19:51  yds_086  阅读(259)  评论(0编辑  收藏  举报