【教学课件】第二部分端节点算法学.ppt
《【教学课件】第二部分端节点算法学.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第二部分端节点算法学.ppt(77页珍藏版)》请在三一办公上搜索。
1、第二部分 端节点算法学,端节点算法学,端节点算法学:网络算法学在端节点(尤其是服务器)上的运用,是建立高速服务器的一组系统性技术。研究如何减少以下开销:数据拷贝(chapter 5)控制转移(chapter 6)解复用(chapter 7)定时器(chapter 8)其它一般性协议处理任务(chapter 9),第五章 拷贝数据,消除不必要的拷贝(P1),接收和发送的报文在终端中通常会被拷贝多次计算机中的数据拷贝消耗两个宝贵的资源:内存带宽:如果处理一个报文涉及k次拷贝,系统吞吐量可能降至1/k内存:如果一个报文在内存中被保存k份,有效内存容量降至1/k一个拷贝如果不是由硬件要求的,该拷贝是不
2、必要的。消除多余的拷贝使得软件接近实现硬件的潜力,是网络算法学的目标之一。,5.1 为什么要拷贝数据,应用场景:用户向web服务器请求一个文件服务器从磁盘读出文件,发送到网络上,资源消耗情况,拷贝和TCP检查和计算都要消耗内存总线带宽不同内存区域之间的拷贝(copy 2,copy 3):每个字都要通过内存总线读一次和写一次计算TCP检查和:需对每个字读一次涉及外设的拷贝(copy 1,copy 4):如果由CPU做拷贝(PIO):每个字都要通过内存总线读一次和写一次如果由设备做拷贝(DMA):每个字只需通过内存总线读一次或写一次涉及外设的拷贝还消耗I/O总线带宽,对服务器吞吐量的影响,在上面的
3、例子中:Web服务器吞吐量不超过T/7,T为内存速度和内存总线速度中的较小值。有效的文件缓冲区大小仅为总容量的1/3。多余的拷贝在两个方面损害了服务器的性能:由于使用了过多的总线和内存带宽,服务器的运行速度低于总线速度。由于使用了过多的内存,服务器不得不大量地从磁盘而不是主存读文件。,请求动态内容,5.2 消除 Copy 4,为什么需要copy 4?适配器内存位于适配器上,而内核存储空间位于存储子系统中。理论上,在一个内存映射的体系结构中,内存可以位于总线上的任何地方,包括在适配器中。利用网络适配器中已有的存储空间(P4,利用系统组件)和内核存储空间放置的自由度(P13,利用自由度),可以将部
4、分内核空间放在网络适配器中。,如何计算检查和?,Witless方法(P2c,共享开销):CPU读入每个字时,捎带计算检查和。Afterburner适配器(TCP offloading engine):数据传输由网卡通过DMA完成,网卡使用特殊的硬件在传输数据的同时计算检查和。缺点:在Witless方法中,出错的数据包可能写入应用缓冲区,这可能是Witless方法从未被实施的原因。网络适配器需要很大的内存空间来支持大量的高速TCP连接,网卡成本很高。,5.3 消除 Copy 3,应用和内核之间需要一次拷贝有两个原因:应用程序在write()之后可能重用其缓冲区,而TCP需要缓存数据以备重发,应用
5、和内核之间通过数据拷贝可以解除耦合。应用程序和内核程序使用不同的虚拟地址空间,需要通过拷贝来传递数据。这个拷贝似乎是必要的,有什么办法能够减小拷贝的开销呢?,写时拷贝的原理,写时拷贝(copy-on-write):当应用程序对内核执行一个写时拷贝时,通过修改一些描述符,将内核缓冲区映射到应用缓冲区的物理内存页上。当应用程序试图修改其缓冲区时,内核进行真正的拷贝(P2b),但这种情况很少发生。这里运用了Lazy Evaluation(P2b)来优化预期情形(P11)。,使用写时拷贝的示意图,写时拷贝的实现,举例:假定进程 P1 的虚拟页 X 映射到物理页 P,操作系统要复制 X的内容到进程 P2
6、 的虚拟页 Y。当P1对 X 进行写时拷贝时:内核修改页表,令 Y 指向物理页 P将 X 表项的COW保护位置位当P1试图写页X时:硬件读X的COW位,发现置位,产生一个异常。操作系统将物理页 P 拷贝到物理页 P,清除 X 的COW位,令 X 指向 P,Y 继续指向 P。,写时拷贝的实现(续),对于不提供写时拷贝功能的操作系统(如UNIX和Windows):可以通过修改页表避免物理拷贝需要找到一种替代COW位的保护机制,5.4 优化页面重映射,对页面映射过于简单的看法是,只需修改进程2的页表,使VP 8指向存放包数据的物理页。(X),页面重映射的开销,修改多级页表:实际映射可能要求修改多级页
7、表,涉及多次写。要求锁操作:修改页表前后要有请求锁和释放锁的开销。刷新TLB:当新的地址映射写入页表时,相关的TLB表项要清除或修正。在目标域中分配虚拟内存:系统要在目标进程中找到一个空闲的页表表项。锁住物理页:为防止页被换出,必须锁住物理页。,Fbufs(fast buffers),基本观察:如果一个应用正在通过内核向网络发送大量的数据包,那么一个包缓冲区可能会被重用多次。方法一:提前分配好需要的包缓冲区,并计算好所有的页面映射信息(P2a),重复使用这些包缓冲区。方法二:数据传输开始时分配包缓冲区并计算页面映射,然后将其缓存起来(P11a),消除后续包的页面映射开销。基本思想:一次映射,重
8、复使用,实现原理,为避免内核空间和用户空间之间的拷贝,将一组物理页P1、P2、Pk 同时映射给内核和应用。为隔离不同的应用,将一个有序的安全域序列定义为一条路径,为每一条路径预留不同的一组物理页。,提前解复用(early demultiplexing),当数据包到达时,底层驱动通过检查数据包的所有头部确定一条完整的路径(提前解复用)。对于每条路径,适配器有一个空闲缓冲区链表:适配器把数据包写入一个空闲缓冲区,将缓冲区描述符传给接收路径上的下一个进程。最后一个进程将用完的缓冲区交还给第一个进程,缓冲区重新回到空闲缓冲区链表。,单向路径的实现,有序的安全域序列是一条单向路径:路径上的第一个进程是w
9、riter,其余进程是reader为什么实现为单向路径?可以提供一定的保护级别如何实现单向路径?给第一个进程的页表表项设置写允许位,给其它进程的页表表项设置只读位。,避免不必要的一般性(P7),在将物理页映射给路径上的进程时,同一个物理页映射到同一个虚拟页上。将所有进程的虚拟内存中一定数量的起始页预留为 fbuf 页。,如何添加包头?,在发送路径上,每一个安全域都要给数据包加上一个包头。然而,为了实现保护,每条路径只允许一个writer,其余为reader。问题:怎么允许其它安全域添加包头呢?,定义数据包为聚合数据结构,将数据包定义为一个带有指针的聚合数据结构,每个指针指向一个fbuf。给数据
10、包添加包头,就是将一个fbuf添加到聚合数据结构中。,Fbufs总结,Fbufs运用了虚拟内存映射的思想,但通过在大量数据包之间分摊页面映射开销而做得更高效:包缓冲区映射一次,重复使用很多次消除了一般情形中的页表更新有人扩展了Fbufs思想,并实现在Sun Solaris操作系统中DPDK也运用了“一次映射,重复使用”的思想,应用如何使用Fbufs?,大量已有的应用软件是根据拷贝语义的API书写的然而采用fbufs后,在包缓冲区被其它进程使用完之前,应用不允许写或释放包缓冲区,修改应用API,大量已有的应用软件是根据拷贝语义的API书写的然而采用fbufs后,在包缓冲区被其它进程使用完之前,应
11、用不允许写或释放包缓冲区解决方案:API 不再保持拷贝语义,应用在写缓冲区之前必须进行判断安全的实现方法:当一个fbuf从应用传递到内核后,内核翻转写允许比特,归还fbuf时再重新设置该位。,已有的网络应用软件必须重写吗?,方法一:给已有的API增加新的系统调用,要求高性能的应用使用新的系统调用进行重写。方法二:用新的扩展实现一个公共的I/O库,链接到该库的应用不需要修改,就可以得到性能提升。实践表明,将应用移植到类fbuf的API,对应用所做的修改不大,且是局部的。,5.5 使用RDMA避免拷贝,通过以太网在两个工作站之间传输1MB的文件:发送端:CPU将文件划分成一系列数据块,逐层封装后交
12、给网络适配器发送。接收端:CPU处理每一个到来的帧,进行协议处理,将数据拷贝(可能通过像fbufs的零拷贝接口)到应用缓冲区。使用DMA在磁盘和内存之间传输1MB数据:CPU设置DMA,告知磁盘数据的写入地址;数据传输结束后,磁盘通过中断通知CPU。,什么是RDMA,RDMA的愿景:数据在两台计算机的主存之间直接传输,而不需要两端CPU对数据包进行逐个处理。两个网络适配器协作地从一个主存读数据,然后写入另一个主存。RDMA需要解决两个问题:接收端适配器如何知道应将数据放在哪儿?如何保证安全?,VAX集群 的RDMA,RDMA在VAX集群中已经被使用,VAX集群为可伸缩应用(如数据库应用)提供计
13、算平台:系统核心是一个140Mb/s的网络(称Computer Interconnect,CL),使用一个以太网风格的协议用户可以将许多VAX计算机和网络硬盘连接到CLRDMA的需求背景:在远程硬盘和VAX机的内存之间有效传输大量数据要求包含文件数据的包在进入目的适配器之后,直接到达它的存放位置,传统网络的接收端,接收端应用将一些页(如页1、2、3)放入一个队列交给适配器,用于接收应用到来的包。假设数据包的到达顺序为包1、包3、包2,则这些包被依次放入页1、2、3。数据包接收完后,CPU做一个重映射(若文件很大,重映射的开销很大)。,VAX 的 RDMA 解决方案,接收端应用锁住一些物理页,用
14、作文件传输的目的存储区域(但呈现出来的逻辑视图是由一些地址连续的虚拟页组成的一个缓冲区),然后将缓冲区名字传送到发送端应用。发送端应用将缓冲区名字及包存放的偏移量随同数据包一起发送。(P10,在包头中传递线索)接收端适配器根据缓冲区名字和偏移量,将数据存放到指定的缓冲区(不需要页重映射)。为实现RDMA,网络适配器必须实现传输层协议。,如何保证安全?,允许将一个携带缓冲区ID的网络包直接写入内存,是一个明显的安全隐患。为降低安全风险,缓冲区ID中包含一个难以猜测的随机串VAX集群只在本集群内部可信的计算机之间使用RDMA传递数据,RDMA在SAN中的应用,存储区域网(Storage Area
15、Network,SAN):一种后端网络,用于将大量的计算机和网络硬盘连接在一起。目前有好几种这样的技术:Fiber Channel(FC)InfinibandInternet Small Computer System Interface(iSCSI),5.6 把避免拷贝技术扩展到文件系统,考虑消除copy 2,5.6.1 共享内存方法,类UNIX操作系统提供一个系统调用mmap(),允许应用(如web服务器)将一个文件映射到自己的虚拟地址空间。概念上,当一个文件被映射到一个应用的地址空间,这个应用就好像在自己的内存中缓存了这份文件。当然,这个缓存的文件只是一组映射。如果Web程序将文件映射到
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 第二 部分 端节 算法
链接地址:https://www.31ppt.com/p-5662538.html