论文部分内容阅读
如今我们正处在互联网飞速发展的信息时代,人们的生活与工作日益依赖于互联网。随着互联网规模的飞速发展,用户数量的迅猛增加,各层网络应用程序对性能的要求也变得越来越高,已无法完全通过硬件性能的提升来满足。因此对网络应用程序本身进行各种优化显得尤为重要。在网络层与传输层,虽然人们结合通用处理器与ASIC(专用集成电路)的特点,设计出了高性能低成本的多核网络处理器以满足日益复杂的高性能包处理程序的需求,然而由于网络处理器独特的体系结构与编程模型,使网络处理器上的程序往往无法得到有效的优化。而在应用层,虽然P2P视频直播服务凭借其免费收看,内容丰富等优势迅速成为互联网上最受欢迎的服务之一,但在向无线网络拓展与推广时由于无线网络特性与有线网络有很大差异,使其传输与播放质量得不到保障,迫切需要通过优化提高服务质量。本文将以以上两类应用程序为例,对其优化进行研究,分析其优化所面临的困难,通过实验指出性能瓶颈,并找出造成瓶颈的原因。最终根据分析结果,针对以上两类网络应用程序分别给出一套切实有效的优化方案。对于运行于网络处理器上的网络应用程序,其优化所面临的困难主要有以下两方面:1.程序员往往熟悉x86结构上硬件缓存环境下的程序编写与优化,但Intel IXP等网络处理器出于成本与芯片面积等考虑均采用软件缓存。这使得程序员必须花很大精力对软件缓存的利用与管理进行优化以获得令人满意的性能。同时由于缓存结构的差异,即使是复用x86结构下的代码也将变得十分困难,很难在短期内完成。2.程序员在开发时往往习惯于根据不同功能将程序划分为多个模块,各模块间需要同步的数据使用同步锁以保证语义的正确性。但Intel IXP等网络处理器每个处理部件上的同步锁资源有限,当模块非常复杂需要大量同步锁时将不得不面临几个同步临界区共用一个同步锁的情况,这将严重影响包处理程序的并行执行,进而影响其性能。本文将针对以Intel IXP为代表的网络处理器在开发与优化包处理程序时面临的主要问题,通过对包处理程序特点的深入分析,提出以下两类编译优化方法。●针对网络处理器上软件缓存的利用与优化问题,本文将根据包处理程序具有关键路径的特性提出两个算法分别解决模块内与模块间的缓存利用与优化。●针对同步锁可能导致的性能下降,本文将提出一个基于关键路径的模块划分算法以减少模块内的同步锁数目。这些方法将有效地优化性能,帮助普通程序员在短时间内开发出高效的包处理程序。本文介绍的算法实现在我们实验室开发的C编译器Agassiz上。在Intel IXP模拟器上的实验结果表明这些算法对现今流行的一些包处理程序均有明显的优化效果。作为应用层目前最热门的网络服务之一的P2P视频直播服务,它在无线局域网上的传输与播放性能却因无线网络与有线网络的巨大差异而得不到保障。为了未来设计与优化无线P2P直播视频流服务,深入了解P2P直播视频流在无线局域网下的工作方式、特性与性能瓶颈显得尤为重要。本文将以目前最流行的P2P直播视频流软件PPStream为例,剖析其系统架构并分析其交互过程与通讯协议。在此基础上,通过分析无线局域网实测环境与模拟环境下的测试数据,揭示了影响无线局域网下P2P直播视频传输的两大因素:1.半双工工作模式使得无线局域网有限的带宽大多被上传数据流所占用,当无线局域网内客户端增多,总带宽需求量大于无线局域网带宽上限时,下载数据流和上传数据流之间的带宽争夺将变得十分激烈,并造成下载受阻进而直接影响客户端的视频播放质量。2.P2P视频传输中每个客户端产生的信令数据量与其连接的节点数成正比。P2P传输技术倡导的鼓励上传机制将会导致连接大量的节点,并造成大量的信令负载。这些信令负载同样会与下载数据流竞争带宽,进一步恶化下载质量与客户端播放效果。针对以上两方面,本文通过在无线局域网与Internet之间架设一台缓存服务器,优化无线局域网内PPStream数据流的传输质量,并改善无线客户端的播放效果。缓存服务器将代替无线局域网用户来响应Internet上的数据请求,以此消除无线局域网内上传流量中占很大比重的影音数据上传。不仅如此,缓存服务器还能够促进无线局域网用户之间的下载数据共享,使得一些已经被下载过的影音数据可以从缓存服务器上下载而不必从Internet上获取,这样能够避免由Internet传输问题造成的下载失败。此外,针对由过多邻居节点带来的额外带宽占用,缓存服务器通过一套邻居节点控制策略,动态地根据传输质量控制无线局域网内各个PPStream客户端的邻居节点个数。