KonsanNet 网络通信框架实现(第三章)— 性能测试

源码地址

      GitHub:https://github.com/KonsanAlide/KonsanNet

性能测试

      昨天有空,对性能做了一些测试,今天整理下,把一些参数和截图发上来。

Windows服务端测试

      在Windows上运行服务端,服务端的电脑参数如下:

      系统:Windows 10
      内存:16GB
      CPU:i7 6700k (4核心)

      网络:1000M

 

Windows服务端接收连接测试

      先测试接收连接并发数,如下面表格:

 

测试项

客户端

服务端处理性能

测试每秒能处理的连接数

系统:Centos7 x64(虚拟机)

内存:2GB

CPU:i7 7200k (2核心)

网络:1000M

连接数:6万

连接数:6397个/每秒

CPU:7%左右

内存:325MB

 

测试每秒能处理的连接数

系统:Windows 10 x64

内存:8GB

CPU:i5 7200k (2核心)

网络:1000M

连接数:6万

连接数:10892个/每秒

CPU:7%左右

内存:49MB     

       网上有朋友说Windows客户端发起连接测试,速度比较慢,一般在3000到4000的并发左右,而用Linux客户端发起的连接测试速度比较快,能达到15000左右,所以我都做了下测试,数据有些不同,大家大概知道下,自己回头有需要可以测试下,截图如下:

        

                                                  Windows客户端发起的连接测试(运行Windows服务器)图

                                                         windows服务端Linux客户端连接测试图

 

 

Windows服务端IOPS测试

      客户端的电脑参数如下:

      系统:Windows 10 x64
      内存:8GB
      CPU:i5 7200k (2核心)
      网络:1000M
      线程数:1000

      几种情况下测试结果如下表格:

 

测试项

服务端处理性能

以100bytes的包大小发送测试。

线程数目:1000

每连接连续发送10万个包

 

以100字节的Buffer来接收

CPU:29%左右

内存:132MB

IOPS:161859

以512bytes的包大小发送测试。

线程数目:1000

每连接连续发送10万个包

 

以512字节的Buffer来接收

CPU:5.7%左右

内存:51MB

IOPS:27000

以1024bytes的包大小发送测试。

线程数目:1000

每连接连续发送10万个包

 

以1024字节的Buffer来接收

CPU:4.3%左右

内存:51MB

IOPS:22000

以4096bytes的包大小发送测试。

线程数目:1000

每连接连续发送10万个包

 

以4096字节的Buffer来接收

CPU:0.8%左右

内存:51MB

IOPS:5500

        

                                                      100字节IO并发测试图

                                                          4096字节IO并发测试图

在IOCP机制里面,WSARecv提交的Buffer的大小严重的影响IOPS,大家有空可以自己测试下,不过我的台式电脑测试的结果可能有些问题,容易出现卡顿。

Linux服务端测试

      在Linux上运行服务端,服务端的电脑参数如下:

     系统:Centos7 x64(虚拟机)
     内存:6GB
     CPU:i7 6700k (4核心)
     网络:1000M

 

Linux服务端接收连接测试

      先测试接收连接并发数,如下面表格:

 

测试项

客户端

服务端处理性能

测试每秒能处理的连接数

系统:Windows 10 x64

内存:8GB

CPU:i5 7200k (2核心)

网络:1000M

连接数:11000个/每秒

CPU:20%左右

内存:40MB

 

 只测试了Windows客户端发起的连接,截图如下:

                                                Linux服务端Windows客户端连接测试图

 

Linux服务端IOPS测试

      客户端的电脑参数如下:

      系统:Windows 10 x64
      内存:8GB
      CPU:i5 7200k (2核心)
      网络:1000M
      线程数:1000

      两种情况下测试结果如下表格:

      

测试项

服务端处理性能

以100bytes的包大小发送测试。

线程数目:1000

每连接连续发送10万个包

 

以100字节的Buffer来接收

CPU:92%左右

内存:40MB

IOPS:240000-430000

以4096bytes的包大小发送测试。

线程数目:1000

每连接连续发送10万个包

 

以4096字节的Buffer来接收

CPU:20%左右

内存:40MB

IOPS:24000-26000

 

                                                            100字节包并发测试图

 

                                                                 4096字节包并发测试图

       

 

总结

        从以上的数据中,在连接接收方面IOCP和epoll差别不大,但是在数据接收处理方面,差距有点大,Linux的epoll的明显比IOCP的性能好很多,不过CPU用的有点高,IOPS的测试都是接收到包后直接扔掉,不放入后面的消息处理逻辑的。

        不过因为我的Windows系统是win10,和Server版系统有不少差别,这也可能是出现卡顿、性能低的原因之一。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值