(2)空闲内存比较。从图4中可以容易分析得到,当请求的总量相同的情况下,A和B模型占用的内存情况很接近。但是C模型中,任务池和线程池的大小都是动态伸缩的,提高了系统的处理能力,自然也会使用更多的内存。
(3)网络I/O流量比较。图5展现了3种模型的网络I/O情况,在A模型中,因为采用的是阻塞的方式进行的,当套口已经没有数据可读,线程会阻塞等待数据的到达,而其他已经有数据到达的套接口则可能得不到处理,因此A模型的网络吞吐量比较低。在B模型中,采用的非阻塞和线程池模型,一旦一个套接口将要发生阻塞,线程可以很快切换到其他已经有数据准备好的套接口上,加快了数据的接收速度,因此也提高了网络的传输速度。在C模型中,减小了内存和CPU等部件的负载,提高了性能,动态任务池使得系统有比B模型更好的缓存能力,因此C模型比B模型网络吞吐量更高是可以理解的。系统采用的是l 000 Mb/s网卡,基本达到了网卡的极限。
5 结 语
根据统计线程池中的各个线程的平均等待时间和当前CPU的使用率,对线程池的尺寸进行动态的调整。利用这种线程池动态管理算法,可以很好地适应Internet上客户请求突发性变化的情况。当突然到来大量请求时,根据算法原理,可以增加适量的线程满足额外的请求;当请求变少以后,会将线程的数量减少,从而减轻系统的压力。经过实验分析比较可以得出,采用线程池动态管理算法之后,有效减小了CPU的负载压力,提高了网络吞吐量和系统整体性能。但是,线程池的管理还有很多地方可以优化,比如调整线程池尺寸都是以2为步长进行调整的,但是这个步长是根据经验得出来的,还没有很好的理论依据。同时,可以增加更多的统计信息加入到算法的决策之中,提高算法的精确性。
这里实现了在多媒体监控传输系统中P2P和CDN的结合,引入半同步/半异步的模式,设计了系统框架,引入任务池和线程池等技术,解决了媒体资源服务器和原始服务器之间的高效传输子系统的网络瓶颈,设计了有效的线程池动态管理算法。