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

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

本文来自异数OS社区

 

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

异数OS社区QQ群:  652455784

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


测试目标

 

数据传输IO性能测试,主要是建立连接后测试收发数据的IO的性能,分为单向双向两种。

 

 

基本测试环境

VMware 12

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

CPU : NUC i3 2.6G 双核

内存:2GB

 

TCP参数默认是ACK Delay,带包头200字节负载,不带crc checksum, 无丢包,无硬件延迟情况。

 

测试方案一 (单核双向负载传输测试)

在同一个CPU核上创建一个Server,一个Client,使用ACK Delay模式,TCP双向收发,以太层使用异数OS软件交换机本地核定向转发。

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

客户端服务端总计IOPS, recv 7.2M, send 7.2M,软件交换机包交换能力20Mpps.

 

测试方案二 (单核单向负载传输测试)

在同一个CPU核上创建一个Server,一个Client,使用ACK No Delay模式,TCP单向收发,以太层使用异数OS软件交换机本地核定向转发。

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

 

客户端服务端总计IOPS, recv 5.1M, send 5.1M, 由于TCP ACK NoDelay的原因,软件交换机包交换能力28.5Mpps.

 

测试方案三 (多核双向负载传输测试)

 

双核CPUCPU1仅创建ServerCPU3上创建两个Client, TCP双向收发,ACK Delay模式,以太层使用异数OS软件交换机定向跨核转发。

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

两客户端以及服务端IOPS总计recv 4.8M , send 4.8M ,软件交换机包交换能力估算为14Mpps,该模式下由于跨核软件交换机转发miss的情况较大,占用大概50%CPU负载,因此分载方案失效,反而比单核集中负载情况下性能更低。

 

测试方案四 (多核单向负载传输测试)

双核CPUCPU1仅创建ServerCPU3上创建两个Client, TCP单向收发,ACK NoDelay模式,以太层使用异数OS软件交换机定向跨核转发。

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

两客户端以及服务端IOPS总结,recv 3.8M ,send 3.8M , 对于软件交换机来讲,由于TCP ACK的原因,因此总计包转发为12Mpps,和上面多核双向传输测试有同样的问题。

 

总结

由于时间有限,简单看了下64字节包的IO能力(去除包头,仅10字节负载),性能大概提升有10%左右,由于软件交换机在单核环境中大概有20%的负载占用,多核更是达到50%,因此在真实硬件环境中预计每核有望达到双向总计2000WIO能力,大概是主流操作系统IO能力的100倍左右,且主流操作系统一般IO能力不易多核扩充。