.Net性能调优——网络、I/O

前言

在我们的经验中,有相当一部分的性能问题并不是由于未经优化的算法和大量的CPU占用造成的,而是由低效的I/O设备的使用造成的。
1.应用程序由于低效的I/O操作造成大量的CPU开销
2.进行大量小规模I/O传输,将降低I/O设备的使用率并造成资源浪费
阅读本文,你将知道:
1.I/O设备如何做异步的
2.同步I/O导致的问题
3..Net线程池有哪些部分组成,如何处理I/O
4.有哪些高效利用网络容量并降低网络延迟的优化手段

I/O设备如何做异步的

几乎所有的现在硬件都天生异步的,不需要在传输时进行数据轮询,也不需要判断I/O何时结束。大多数硬件都依赖内存访问控制器,在没有CPU参与的情况下,在设备和计算机内存间进行数据传输。
同步操作仅存于Windows应用层,而其内部实质是异步的。

同步I/O导致的问题

在同步I/O中,I/O传递函数在I/O操作完成前均保持堵塞状态。这并不高效,设备在连续的I/O访问的间隙有可能处于空闲状态,设备利用率可能较低。

.Net线程池有哪些部分组成,如何处理I/O

.Net线程池具备多种用途,不同的用途使用不同类型的线程
1.工作线程
2.I/O完成线程,用于处理全局的IOCP操作
3.等待线程
4.计时器线程,用于合并多个计时器的等待操作
5.门线程,用于监视线程池中线程的CPU使用情况,并根据限定值增加或减少线程的数量,以达到最佳的性能。

有哪些高效利用网络容量并降低网络延迟的优化手段
应用层网络协议(第七层)的实现方式可以极大的影响性能,有以下这些优化手段:
1.流水线。对于没有流水线的协议,客户端向服务器发送请求后,必须等待服务器返回响应才能发送下一个请求。因此,网络容量并没有得到有效利用,因为网络在往返时延中处于空闲状态。流水线可以在服务器返回先前的响应之前发送更多的请求。更有优势的时,可以对请求顺序重排,先处理快速响应的请求。
2.流传输
在流传输的支持下,应用程序可以在数据传输结束之前将其发送到网络上。例如视频,直播平台。
3.消息分块
每次传输少量的数据是对网络资源的浪费。这是因为以太网、IP和TCP/UDP的头部信息都不小,将网络容量大量消耗在头部信息上是非常大的浪费。若协议可以将多个请求进行合并,则可以减缓这种消耗。例如,DNS服务允许客户一次性解析多个域名。
4.聊天式协议
有时候,后一个请求是依赖前一个请求的响应的。例如,访问网页时,要先下载HTML,JS,CSS和图片等等。
为了降低其影响,服务器可以提示客户端需要获得哪些URL,以便进行页面渲染。甚至,可以在客户端未请求的情况下发送所需的内容。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,918评论 1 32
  • 1. 基础知识 1.1、 基本概念、 功能 冯诺伊曼体系结构1、计算机处理的数据和指令一律用二进制数表示2、顺序执...
    yunpiao阅读 10,960评论 1 22
  • 操作系统概论 操作系统的概念 操作系统是指控制和管理计算机的软硬件资源,并合理的组织调度计算机的工作和资源的分配,...
    野狗子嗷嗷嗷阅读 14,218评论 3 34
  • 如果一个结局是为了新的开始,那么我不得不接受一个残酷的事实。那年冬天,我们分手了。 不是那种哭泣到死去活来,也不是...
    爱杨的梅子阅读 2,958评论 0 1
  • 接龙客栈纯文字协会【七夕大接龙】 接龙客栈纯文字协会 七约 摘星妮妮 鱼酱的诗屿歌 况天赋声 著 目录君 上一章...
    况天赋声阅读 2,750评论 3 4

友情链接更多精彩内容