异数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软件交换机本地核定向转发。
客户端服务端总计IOPS, recv 7.2M, send 7.2M,软件交换机包交换能力20Mpps.
测试方案二 (单核单向负载传输测试)
在同一个CPU核上创建一个Server,一个Client,使用ACK No Delay模式,TCP单向收发,以太层使用异数OS软件交换机本地核定向转发。
客户端服务端总计IOPS, recv 5.1M, send 5.1M, 由于TCP ACK NoDelay的原因,软件交换机包交换能力28.5Mpps.
测试方案三 (多核双向负载传输测试)
双核CPU,CPU1仅创建Server,CPU3上创建两个Client, TCP双向收发,ACK Delay模式,以太层使用异数OS软件交换机定向跨核转发。
两客户端以及服务端IOPS总计recv 4.8M , send 4.8M ,软件交换机包交换能力估算为14Mpps,该模式下由于跨核软件交换机转发miss的情况较大,占用大概50%的CPU负载,因此分载方案失效,反而比单核集中负载情况下性能更低。
测试方案四 (多核单向负载传输测试)
双核CPU,CPU1仅创建Server,CPU3上创建两个Client, TCP单向收发,ACK NoDelay模式,以太层使用异数OS软件交换机定向跨核转发。
两客户端以及服务端IOPS总结,recv 3.8M ,send 3.8M , 对于软件交换机来讲,由于TCP ACK的原因,因此总计包转发为12Mpps,和上面多核双向传输测试有同样的问题。
总结
由于时间有限,简单看了下64字节包的IO能力(去除包头,仅10字节负载),性能大概提升有10%左右,由于软件交换机在单核环境中大概有20%的负载占用,多核更是达到50%,因此在真实硬件环境中预计每核有望达到双向总计2000W的IO能力,大概是主流操作系统IO能力的100倍左右,且主流操作系统一般IO能力不易多核扩充。