APP下载

基于P2P的流媒体监控传输系统的设计与实现

2010-09-19

成都大学学报(自然科学版) 2010年2期
关键词:线程服务器动态

蒲 石

(内江师范学院现代教育技术中心,四川内江 641000)

基于P2P的流媒体监控传输系统的设计与实现

蒲 石

(内江师范学院现代教育技术中心,四川内江 641000)

利用半同步/半异步的模式进行框架设计,结合任务池和线程池等技术设计和实现了基于P2P的CDN流媒体系统中媒体资源服务器和原始服务器之间的传输子系统,提出了基于任务池闲置信息和系统运行参数统计信息相结合的有效动态线程池和任务池管理算法,根据各种运行参数信息动态评估系统当前的负载和压力情况,对任务池和线程池尺寸进行动态修改.通过与两种传统实现方式的实验比较,采用新算法后,显著降低了CPU的负载,有效提高了系统效率和网络吞吐量.

半同步/半异步;任务池;线程池

0 引 言

目前,采用流媒体技术的流媒体实时监控系统是该应用技术领域持续关注的热点之一.随着网络技术的迅猛发展,流媒体内容在互联网中大量传播,对于高质量的流媒体分发服务体现得越加明显,因而为大量用户提供快速,高质量的流媒体分发服务已成为该领域研究的热点和难点.通常,在流媒体监控系统中所要传输的数据量相当大,其主要包括:控制信息和反馈信息、视频和音频、其他如文本信息等.对于传统的基于C/S模式或B/S模式的流媒体监控系统,在监控点和监控中心之间进行这些大量流媒体数据传输,会导致服务器性能下降.基于此,把P2P技术引入到流媒体监控系统设计中,可实现基于 P2P和CDN的监控传输子系统[1,3,4,6],客户利用P2P方式从边缘服务器得到服务,同时原始服务器和边缘服务器之间的内容发布也通过P2P方式进行,通过这种方式可有效地利用系统中的网络带宽和主机资源,减轻了原始服务器和边缘服务器的压力,减少了主干网数据流量,降低了运营商的成本,提高了客户的服务质量.

1 系统分析

在流媒体监控系统中,用户对服务质量和媒体资源数量有着越来越高的要求,系统需要具备存储大量媒体资源的能力,此时原始服务器的存储空间和计算压力成为了系统的瓶颈,为了减轻原始服务器的存储压力,必需将存储功能转移到专门的媒体资源服务器上.因此,当边缘服务器向原始服务器请求资源时,原始服务器向媒体资源服务器请求并缓存在本地,然后通过P2P的方式将这一资源发往多个边缘服务器,以提高系统的容错性.但采用这种系统结构以后出现的问题是,媒体资源服务器与原始服务器间的资源传输成为了系统的瓶颈.传统的解决方法普遍采用FTP的方式,即通过多进程和阻塞来实现,这种方式对网络带宽和CPU的利用率以及并发度都不尽如人意.本文针对传统方式的缺点进行了有效改进,利用半同步/半异步的方式建立系统框架,利用任务池[7]对数据的读写请求进行封装,采用线程池[7,9]对任务池中的任务进行高效异步处理.通过对任务的闲置情况进行统计,并结合系统的当前资源利用情况对任务池和线程池进行动态管理,降低了CPU的负载,提高了系统的吞吐量.

2 系统布局及传输子系统框架

系统总体布局如图1所示,边缘服务器与若干客户节点形成P2P网络,以提供高效的服务质量,降低服务器的负载.当客户在边缘服务器上请求资源不命中时,边缘服务器会向原始服务器请求,原始服务器会根据具体请求要求,将其需要的媒体资源通过高效传输子系统缓存在本地,然后利用P2P的方式向多个边缘服务器进行内容发布.

图1 系统总体布局图

这种方式有效地减轻了原始服务器在内容发布时的压力,理论上它只要将一个完整的媒体副本发送出去,其他边缘服务器会根据P2P的方式得到一个完整的副本.同理,当边缘服务器向客户提供服务的时候,理论上它也只需要传输一个副本,多个客户端就可以得到完整的服务.

传输子系统框架图如图2所示.原始服务器和媒体资源服务器通常在一个子网中,网络速度比磁盘

图2 传输子系统框架

I/O速度更快,此时,磁盘I/O成了系统的瓶颈.为了缓解网络I/O和磁盘I/O的矛盾,在传输子系统的设计当中采用半同步/半异步的方式将网络I/O和磁盘I/O分离开来,并通过任务池的方式进行缓冲.上层的主线程处理epoll异步事件和协议交互,并将接收到的数据按照固定大小封装在任务里面,然后将任务放回任务池,下层线程池负责从任务池中取出任务,进行具体的磁盘读写操作,操作完成后线程和任务分别回到线程池和任务池等待调度.

3 线程池动态管理算法

为了对线程池进行有效的动态管理,需要采集各种性能参数,经过综合分析之后对线程池做出调整.本算法中参考了两个最关键的参数,即任务的平均等待时间和CPU使用率.通过任务的平均等待时间,可以分析出当前线程池需要调整的方向;通过CPU使用率可以得到是否需要增加或者减少线程.

线程池动态管理算法流程图如图3所示.图3中,c(current)表示线程池当前平均等待时间,p(previous)表示线程池上次等待时间,pp表示上上次等待时间,ps(pool size)表示线程池大小,pps表示上次线程池大小.

图3 线程池动态管理算法

该算法中并不是对等待时间的绝对值进行比较,而是对currTime和preTime进行比较,如果差异大于1%,线程池可能需要调整,调整方向则根据currTime和preTime的大小关系来决定.如果 currTime大于 preTime,需要进一步比较 preTime和prepreTime的关系,如果preTime小于prepreTime,并且CPU使用率大于90%,那么减小线程池,减小的步长(stride)为2.如果preTime大于prepreTime,并且CPU使用率小于80%,则增大线程池,增加的步长为2.如果currTime小于preTime,并且preTime小于prepreTime,则增大线程池.

简而言之,算法通过对currTime、preTime、prepre-Time三者的关系进行比较,确定线程池是否需要调整.当需要减小线程池时,需要进一步判断CPU的使用率,只有CPU大于一个阀值的时才进行减小操作,因为CPU的负载太小也是一种资源浪费;同理,当需要增大线程池时,也只能在CPU小于一个阀值的时候,才能进行增加操作,因为CPU的负载不能过大.

4 实验分析

因为媒体资源服务器和原始服务器多在同一个子网中,因此实验的环境也通过一个局域网来模拟.在实验中,服务器的基本配置是2个Intel双核Xeon 3GHz芯片,2 048 K B缓存,4 G内存,1 000 Mb网卡.

实验时通过传输子系统从负载发生器下载数据来模拟大量数据请求,并分别收集以下3种模型的实验数据:①传统多线程阻塞模型.即每个现存阻塞处理一个单独的请求(在图4中用A表示,并简称为A模型);②固定线程数目的线程池.初始线程数采用CPU个数*2+2的公式来确定,即10个初始线程(在图4中用B表示,并简称为B模型);③采用线程池动态管理算法的模型,初始线程个数也为10个(在图4中用C表示,并简称C模型).数据均是通过nmon采样和nmon analyser分析得到的平均值.

图4 3种模型的CPU占用率计较

4.1 CPU使用率比较

从图4中可以看出:在A模型中,CPU资源已基本被完全占用,因为每个线程服务一个请求,一旦请求大量到来,就会有大量的线程产生;在B模型中,因为线程个数固定,且已经预先创建好,当请求量过大时,任务队列会起到很好的缓冲作用;C模型是效果最好的,因为线程个数总是会被调整到最佳的个数,并且任务池的使用有效减少了系统中频繁的内存申请和释放操作.

4.2 空闲内存比较

图5 3种模型的空闲内存比较

3种模型的空闲内存比较如图5所示.从图5中可看出:当请求的总量相同的情况下,A和B模型占用的内存情况很接近;C模型中,任务池和线程池的大小都是动态伸缩的,提高了系统的处理能力,自然也会使用更多的内存.

4.3 网络I/O流量比较

图6展现了3种模型的网络I/O情况.在A模型中,因为采用的是阻塞的方式进行的,当套接口已

图6 3种模型的网络I/O比较

经没有数据可读时,线程会阻塞等待数据的到达,而其他已经有数据到达的套接口则可能得不到处理.故A模型的网络吞吐量比较低.在B模型中,采用的是非阻塞和线程池模型,一旦一个套接口将要发生阻塞,线程可以很快切换到其他已经有数据准备好的套接口上,加快了数据的接收速度,因此也提高了网络的传输速度.在C模型中,减小了内存和CPU等部件的负载,提高了性能,动态任务池使得系统有比B模型更好的缓存能力.

5 结 语

本文设计和实现了基于流媒体监控传输系统,解决了媒体资源服务器和原始服务器之间的高效传输子系统的网络瓶颈.同时,提出了有效的线程池动态管理算法,即根据统计线程池中的各个线程的平均等待时间和当前CPU的使用率来对线程池的尺寸进行动态的调整.利用这种线程池动态管理算法,可以很好地适应Internet上客户请求突发性变化的情况.

此外,经过实验分析比较可以得出,采用线程池动态管理算法之后,有效地减轻了CPU的负载压力,提高了网络吞吐量和系统整体性能.但是,线程池的管理还有很多地方可以优化,比如,线程池尺寸都是以2为步长进行调整的,但是这个步长是根据经验得出来的,还缺乏理论依据.同时,还可以增加更多的统计信息加入到算法的决策之中,以提高算法的精确性.

[1]Douglas Schmidt,Michael Stal.Hans Rohnert,et al.Pattern-Oriented Software Architechture Volume2 Patterns for Concurrent and Networked Objects[M].Beijing:China Machine Press,2003:261-272.

[2]Molina B,Ruiz V.A closer look at a content delivery network implementation.Electrotechnical Conference[C]//Proceedings of the 12th IEEE Mediterranean.Melecon:IEEE Press,2004:685-688.

[3]Parameswaran M,Susarla A.P2P Networking:An Informationsharing Alternative[J].IEEE Computer,2001,34(7):31-38.

[4]侯孟书,卢显良,周 旭,等.非结构化P2P系统的路由算法[J].电子科技大学学报,2005,47(1):106-109.

[5]夏 利,赵静波,井惟栋,等.基于对象池模式的自适应线程池技术[J].东北大学学报(自然科学版),2006,52(10):32-35.

[6]丘志杰,刘心松,刘 丹,等.内核级并发通信的研究[J].电子科技大学学报,2006,48(4):94-97.

[7]冯 玮,刘心松.基于线程池技术的文件传输模型的改进[J].微计算机信息,2006,23(21):79-81.

[8]Ling Y ibei,TracyMullen,Lin Xiaola.Analysis of Optimal Thread Pool Size[J].Operating Systems Review,2000,34(2):42-55.

[9]Xu Dongping.Performance Study and Dynamic Optimization-Design for Thread Pod Systems[DB/OL].[2004-12-01].http://www.scl.ameslab.gov/Publications/Brett/CCCTFinal-color.pdf.

Design and Realization of Streaming Media’s Supervision Transmitting System Based on P2P

PU Shi

(Center of Modern Education Technology,Neijiang Normal University,Neijinag 641000,China)

Half-Sync or Half-Async models were used to design the framework and a transmission sub-system was designed and realized based on media resources server and original sever in CDN streaming media of P2P with help of technologies such as task pool and thread pool.An effective dynamic thread pool management algorithm based on thread pool idle information and system run-time parameters statistics was proposed which dynamically adjusted the size of the task pool and thread pool in a heuristic way with the system load information and other run-time parameters.Compared with the experiments on two traditional realization ways,the new algorithm can reduce load of CPU remarkably and improve the network efficiency and throughput.

Half-Sync/Half-Async model;task pool;thread pool

TP302.8

:A

1004-5422(2010)02-0146-04

2010-03-02.

蒲 石(1957—),男,实验师,从事计算机网络与多媒体操作系统研究.

猜你喜欢

线程服务器动态
国内动态
国内动态
国内动态
通信控制服务器(CCS)维护终端的设计与实现
动态
浅谈linux多线程协作
得形忘意的服务器标准
计算机网络安全服务器入侵与防御
Linux线程实现技术研究
么移动中间件线程池并发机制优化改进