网络上找iocp性能分析的文章很少,因工作关系,花了点时间特意从客观数据和理论角度分析了下iocp的性能

环境 CPU i7 4核8线程 1G网卡,echo方式测试(一个客户机模拟多个客户端模式,模拟100连接),TCP无延迟模式,网卡理论上双向在125M,单向发包为每秒8万到9万个

1.连接性能 ,连接速度和发包速度几乎一致,大概在每秒8-9万个,但是由于TCP原因,连接方主动断开连接的话,连接数会被TIME_OUT的生命期限制,以及最大端口数量限制,服务端则会受到句柄系统拖累,到12万连接时几乎不能工作了。

2. 数据传输性能测试,如果数据发送方提交的缓冲尺寸小于服务端接收缓冲时,效率会非常低,iops一般都在1万以下,并且CPU占用率极高,网卡使用率也会很低,当发送方提交数据缓存尺寸大于服务端接收缓存时iops才可以提高网络利用率,并降低CPU占用率,1G网卡环境中,发送方提交缓存在64k,服务端接收方在512字节时,或者发送方32k,接收方256字节时才可占满网卡,客户端iops在10万到15万左右,服务端iops在60万左右,60万应该是API的调用频率的极限了

3.理论分析,在数据发送方和接收方提交缓存相近时,效率非常低,TCP无延迟选项作用有限,最多提升20%的性能,原因应该在于提交的io极有可能被提交到了NDIS网卡层去做单包收发动作,这样硬件延迟系统延迟会让发包收包效率大大降低,当发送提交的缓存远远大于接受方提交的缓存时,在硬件延迟系统延迟的时间内,NDIS完成了批量包的发送,接收方则经常性的读取socket接收缓存中的数据,这样延迟的影响就被降低了,简单说就是缓存换IO性能的方式,如果走硬件IO,100客户端1万iops,则单个客户端最多能提供100iops的性能。

4. 一些影响性能的参数,SO_RCVBUF,大的SO_RCVBUF可以提高网络性能的稳定性,但是win7环境下,设置一个大的SO_RCVBUF有可能会降低性能。

在收发双方提交的缓存相近时,TCP_NODELAY能提高20%的实时性能,但会降低带宽利用率。

iocp性能分析的更多相关文章

  1. 如何进行python性能分析?

    在分析python代码性能瓶颈,但又不想修改源代码的时候,ipython shell以及第三方库提供了很多扩展工具,可以不用在代码里面加上统计性能的装饰器,也能很方便直观的分析代码性能.下面以我自己实 ...

  2. SQL Server-聚焦IN VS EXISTS VS JOIN性能分析(十九)

    前言 本节我们开始讲讲这一系列性能比较的终极篇IN VS EXISTS VS JOIN的性能分析,前面系列有人一直在说场景不够,这里我们结合查询索引列.非索引列.查询小表.查询大表来综合分析,简短的内 ...

  3. SQL Server-聚焦NOT IN VS NOT EXISTS VS LEFT JOIN...IS NULL性能分析(十八)

    前言 本节我们来综合比较NOT IN VS NOT EXISTS VS LEFT JOIN...IS NULL的性能,简短的内容,深入的理解,Always to review the basics. ...

  4. SQL Server-聚焦LEFT JOIN...IS NULL AND NOT EXISTS性能分析(十七)

    前言 本节我们来分析LEFT JOIN和NOT EXISTS,简短的内容,深入的理解,Always to review the basics. LEFT JOIN...IS NULL和NOT EXIS ...

  5. SQL Server-聚焦EXISTS AND IN性能分析(十六)

    前言 前面我们学习了NOT EXISTS和NOT IN的比较,当然少不了EXISTS和IN的比较,所以本节我们来学习EXISTS和IN的比较,简短的内容,深入的理解,Always to review ...

  6. SQL Server-聚焦NOT EXISTS AND NOT IN性能分析(十五)

    前言 上一节我们分析了INNER JOIN和IN,对于不同场景其性能是不一样的,本节我们接着分析NOT EXISTS和NOT IN,简短的内容,深入的理解,Always to review the b ...

  7. SQL Server-聚焦INNER JOIN AND IN性能分析(十四)

    前言 本节我们来讲讲联接综合知识,我们在大多教程或理论书上都在讲用哪好,哪个性能不如哪个的性能,但是真正讲到问题的实质却不是太多,所以才有了本系列每一篇的篇幅不是太多,但是肯定是我用心去查找许多资料而 ...

  8. Java 性能分析工具 , 第 3 部分: Java Mission Control

    引言 本文为 Java 性能分析工具系列文章第三篇,这里将介绍如何使用 Java 任务控制器 Java Mission Control 深入分析 Java 应用程序的性能,为程序开发人员在使用 Jav ...

  9. Java 性能分析工具 , 第 2 部分:Java 内置监控工具

    引言 本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具.在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身.在 JDK 中有许多内置的工 ...

随机推荐

  1. win10 uwp 商业游戏 1.1.5

    本文是在win10 uwp 商业游戏 基础上继续开发,添加一些无聊的游戏 因为在发布几个月,下载量很少,小伙伴说游戏就玩不到几分钟就不想玩,于是我就想加入其他游戏 下面我来告诉大家如何在游戏中添加多个 ...

  2. H3C CIDR

  3. H3C 聚合链路负载分担原理

  4. H3C配置Trunk端口

  5. 修改github上的项目语言类型

    当在github上上传一个项目时,可能会出现一个问题就是项目代码类型是自动生成的,可能与我们实际项目代码种类不匹配,此时就需要修改项目语言类型了. 由于无法直接更改,所以用到此方法: 在你的项目根目录 ...

  6. H3C TFTP操作示例

  7. H3C在设备上使用TFTP服务

  8. CKEditor配置,最适合新手两种方式详解。

    CKEditor.js的配置,大概有两种方式,这里有基础版和全面的版本可以试验 https://cdn.ckeditor.com/4.8.0/full-all/ckeditor.js http://c ...

  9. Linux USB 的 Urbs

    linux 内核中的 USB 代码和所有的 USB 设备通讯使用称为 urb 的东西( USB request block). 这个请求块用 struct urb 结构描述并且可在 include/l ...

  10. springmvc 参数校验/aop失效/@PathVariable 参数为空

    添加依赖 <!-- 参数校验 --> <dependency> <groupId>org.hibernate.validator</groupId> & ...