欢迎来到天天文库
浏览记录
ID:20829165
大小:2.37 MB
页数:80页
时间:2018-10-16
《第二部分 端节点算法学》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第二部分端节点算法学端节点算法学端节点算法学:网络算法学在端节点(尤其是服务器)上的运用,是建立高速服务器的一组系统性技术随着网络功能虚拟化的提出,将来数据中心中绝大部分的网络设备都会在通用服务器上实现端节点算法学研究如何减少以下开销:数据拷贝(chapter5)控制转移(chapter6)解复用(chapter7)定时器(chapter8)其它一般性协议处理任务(chapter9)第五章拷贝数据消除不必要的拷贝(P1)网络报文在收发和处理的过程中,通常会被拷贝多次计算机中的数据拷贝消耗两个宝贵的资源:内存带宽:如果处理一个报文涉及k次拷贝,系统吞吐量可能降至1/k内存:如果一个
2、报文在内存中被保存k份,有效内存容量降至1/k本章关注如何消除不必要的拷贝:一个拷贝如果不是由硬件要求的,该拷贝是不必要的本章还将讨论其它需要对数据包载荷进行的操作5.1为什么要拷贝数据应用场景:用户向web服务器请求一个静态文件服务器从磁盘读出文件,发送到网络上两个子系统:文件子系统网络子系统一个简单的故事直观上,这是一个简单的故事:web应用程序通过一个系统调用(读文件),将文件从磁盘读入到它的缓冲区中构造一个HTTP响应头,通过一个系统调用(写套接字),将响应头和缓冲区内容交给网络子系统网络子系统将数据划分成适当大小的块,加上各层协议头,交给网络驱动程序一个真实的故事Cop
3、y1:硬盘文件缓冲区(内核空间)Copy2:文件缓冲区应用缓冲区(用户空间)Copy3:应用缓冲区套接字缓冲区(内核空间)Copy4:套接字缓冲区网卡TCP程序还需要扫描一遍数据,计算TCP检查和资源消耗情况拷贝和TCP检查和计算:每个字需要穿过内存总线7~9次!不同内存区域之间的拷贝(copy2,copy3):每个字都要通过内存总线读一次和写一次计算TCP检查和:每个字都要通过内存总线读一次涉及外设的拷贝(copy1,copy4):如果由CPU做拷贝(PIO):每个字都要通过内存总线读一次和写一次如果由设备做拷贝(DMA):每个字只需通过内存总线读一次或写一次涉及外设的
4、拷贝都需要消耗I/O总线带宽对服务器吞吐量的影响在上面的例子中:Web服务器吞吐量不超过T/7,T为内存速度和内存总线速度中的较小值有效的文件缓冲区大小仅为总容量的1/3多余的拷贝在两个方面损害了服务器的性能:由于使用了过多的总线和内存带宽,服务器的运行速度远远低于总线速度由于使用了过多的内存,服务器不得不大量地从磁盘而不是主存读文件如果请求动态内容,还要增加一次拷贝(CGI程序web服务器)请求动态内容Step6:CGI程序将构造好的网页文件,通过进程间通信机制传给web服务器程序,涉及一次拷贝5.2消除copy4为什么需要copy4?简单的解释:适配器内存和内核存储空间不在
5、同一个硬件上消除Copy4在一个内存映射的体系结构中,设备寄存器被映射到一块内存区域,CPU通过读写这块内存区域与设备通信理论上,内存可以位于总线上的任何地方,包括在适配器中解决方案:利用网络适配器中已有的存储空间(P4,利用系统组件),以及内核存储空间放置的自由度(P13,利用自由度),将套接字缓冲区放在网络适配器中应用缓冲区的内容直接拷贝到网络适配器的内存中如何计算TCP检查和?如何计算检查和?Witless方法(P2c,共享开销):CPU读入每个字时,捎带计算检查和出错的数据包可能被写入应用缓冲区,与TCP语义不符(所以该方法从未被实施)Afterburner适配器(TCP
6、offloadingengine):数据传输由网卡通过DMA完成,网卡使用特殊的硬件在传输数据的同时计算检查和网络适配器的成本vs性能:网络适配器需要很大的内存空间和较强的处理器来支持大量的TCP连接,网卡成本可能较高5.3消除Copy3为什么需要copy3?应用和内核使用不同的虚拟地址空间(不是必要的)应用和内核之间需要通过数据拷贝解除耦合(必要的)如果拷贝不能避免,那么能够减小拷贝的开销吗?写时拷贝(copy-on-write)当应用程序对内核执行一个写时拷贝时,OS将内核缓冲区映射到应用缓冲区的物理内存页上当应用程序试图修改其缓冲区时,内核进行真正的拷贝,但这种情况很少发生
7、写时拷贝的实现举例:假定进程P1的虚拟页X映射到物理页L上,需要复制X的内容到进程P2的虚拟页Y当P1对X进行写时拷贝时:内核修改页表,令Y指向物理页L将X表项的COW保护位置位当P1试图写页X时:硬件读X的COW位,发现置位,产生一个异常操作系统将物理页L拷贝到物理页L’,清除X的COW位,令X指向L’,Y继续指向L写时拷贝的实现(续)对于不提供写时拷贝功能的操作系统(如UNIX和Windows),也可以基于虚拟内存实现类似的功能:可以通过修改页表避免物理拷贝需要找到一种替代C
此文档下载收益归作者所有