流媒体服务器的性能测试和瓶颈分析
2016-01-27黄浩程何彦颜金尧
黄浩程,何彦,颜金尧
(1.中国传媒大学 计算机与网络中心,北京100024;2.中国传媒大学 理工学部,北京100024)
流媒体服务器的性能测试和瓶颈分析
黄浩程1,何彦2,颜金尧2
(1.中国传媒大学 计算机与网络中心,北京100024;2.中国传媒大学 理工学部,北京100024)
摘要:讨论了流媒体系统的各种性能指标和流媒体服务器的平台性能限制之间的关系。我们通过改变下列条件:连接数,并发活动的媒体文件的数量,以及流媒体的编码格式和码流,来测量流媒体服务器的CPU空闲时间,IO等待,内存,网络带宽的变化,找出流媒体服务器的性能指标和制约瓶颈。通过有针对性的提高服务器处理瓶颈的能力,可以进一步提高流媒体服务的性能。
关键词:媒体;性能测量;瓶颈分析
1背景介绍
典型流媒体服务包括VOD点播,视频会议,远程教育,数字图书馆等等。过去,流媒体系统的服务质量取决于网络带宽,网络延迟,媒体编码压缩效率和解码客户端的性能等等。网络的传输能力是制约流媒体发展的关键因素之一。随着高速网络的发展和编码技术成熟,流媒体服务器的硬件性能越来越成为制约流媒体系统的服务质量的关键因素。
随着带宽的增加,流媒体服务器的硬件性能已经逐步成为制约流媒体服务质量的一个重要因素。找出媒体服务器的瓶颈不但是优化流媒体系统的前提条件,而且也为分析评估流媒体服务器的性能提供理论基础。当前,关于如何找出媒体服务器的瓶颈,评估性能的研究仍比较少[1,2,3]。因此,我们通过评估流媒体服务器的性能,试图整理一套通过实验评价分析流媒体服务器的瓶颈的方法。
下文的组织结构如下:第二部分,介绍流媒体服务的模型与性能指标。第三部分,介绍我们的实验环境和实验方法。第四部分,分析实验结果。第五部分,总结。
2流媒体服务的模型与性能指标
流媒体服务器是向用户提供流媒体服务的基本功能单元,性能的好坏会直接影响到流媒体系统服务能力。在流媒体服务器的性能中,流媒体的吞吐量及并发处理能力是其中最重要指标。下面我们简要介绍一下的流媒体服务器提供服务的过程:
(1)当客户端的一个请求到达时,媒体服务器从硬盘存储中读取相应媒体内容,并把其放入到内存中;
(2)在把媒体内从发送到网络前,媒体内容需要由CPU按照协议标准进行分段,编码、封装等操作;
(3)把整理好的流媒体数据发送到网卡;
(4)由网卡把内容发送到网络,给客户端提供服务。
通过上述过程,我们能发现影响流媒体服务器性能的四个关键因素:CPU,内存,磁盘读取能力和网络吞吐能力。
因此,我们通过观察服务器的CPU的利用率及I/O等待,内存占用大小,磁盘读写速度以及服务器的网络流量来获取瓶颈所在。
3实验环境和实验方法
3.1 实验环境
如表1、表2所示。我们采用操作系统是Linux Enterprise 5。采用Live555提供基于RTSP的流媒体服务,采用Lighttpd提供基于Http的流媒体服务。通过systat来采集服务器的各种性能数据:CPU、磁盘、内存等。此外,我们通过oprofile来分析服务器产生瓶颈的原因。
表1 软件环境
表2 硬件环境
3.2 实验方法
第一步,在服务器上,我们在运行流媒体服务软件的同时,运行我们的一个脚本程序,调用systat来收集性能数据。第二步,我们在客户端通过运行openRtsp模拟向服务器发出不同并发数,带宽流量、访问媒体文件数等等,同时使用vlc实际播放流媒体,观察流媒体播放质量。最后我们就能从服务器收集不同条件下的服务器性能数据。为了分析简便直观,我们把收集到数据导入到excel中并做成图表进行分析。
3.3 采集频率的选定原则
我们采用的数据采集工具systat的最少采集间隔是1秒,我们基于以下原则确定我们的采样频率:
* 采样间隔应尽可能的小,以便获得更准确的数据,有利于我们进行瓶颈分析;
* 采样的业务占用服务器性能应尽可能小,以免影响实验结果。
为了找到合适的采样频率,我们在不运行媒体服务的环境下,运行的采样工具,通过观察该服务器的性能变化来选择最合适的采样间隔。观察发现采样频率在1秒和5秒的情况下消耗相近的CPU资源,而1秒次是最小的采样间隔。因此,我们选择1秒的采样间隔。
4实验与性能分析
在本部分中,我们通过分析两个有代表意义的实验来找出流媒体服务器的性能瓶颈所在。在下面的图标中,CPU Idle表示的是CPU空闲的百分比。iowait表示CPU在等待磁盘的IO操作完成(此时CPU处于等待状态)所占用的百分比。
4.1 实验一
实验环境如下:并发连接数为30,所有媒体的格式都为mpeg,码流为5MB/s,我们通过逐步增加访问的媒体数来做不同的实验:分别通过把30个请求访问同1个媒体文件,分别访问10个媒体文件,分别访问30个媒体文件来对比分析,其中1个媒体文件和30个媒体文件的实验结果分别如图1和图2所示:
图1 访问同一个媒体文件(上图为CPU idle百分比,下图为CPU iowait百分比)
图2 同时访问30个不同的文件(上图为CPU idle百分比,下图为CPU iowait百分比)
通过观察图1和图2,我们可以发现:当客户端没有发起连接请求的时候,服务器上的CPU idle和iowait分别为接近于100%和0%。当客户端的请求到达后,iowait迅速提高,同时idle开始下降。当iowait开始下降时,idle出现了缓慢的上升。当客户端访问结束后,CPU idle和iowait的数值有恢复到初始状态。
另外,我们通过观察图1与图2,我们还可以发现,在流媒体服务的不同阶段,CPU的利用率是不一样的:在连接的初始阶段,CPU除了需要处理文件的读取、分段和按协议封装的业务外,还需要处理网络连接的建立,使得在流媒体服务在初始阶段比流媒体的传输阶段要消耗更多的CPU资源。
通过对比各次实验结果,我们可以发现,随着访问文件数的增加,CPU iowait也随着增加。当访问的文件数达到30个时,iowait到达了80%,占用了大部分的CPU资源。此时,由于大部分的CPU时间片都处于等待 磁盘IO操作,CPU的处理能力并没有达到最大限度的利用。因此,CPU并没有成为系统的瓶颈,系统的瓶颈出现在磁盘的IO操作上。
由于篇幅的关系,我们没有给出内存的使用率图表,但从实验的结果看来,随着访问文件数的增多,剩余内存也逐步下降。最终,剩余内存稳定在50,000KB左右。由于内存并没有耗尽,所以内存也不是系统的瓶颈。由此,我们认为此时磁盘的读写能力是系统中最主要的瓶颈。
为了确认磁盘的读写能力是否为最主要瓶颈,我们做了以下的实验:为了能够使用更多地内存,我们把测试平台放在了64位的操作系统上。我们这次实验的目的是对比在ext3和tmpfs两种文件格式上的服务器性能的不同表现。其中ext3是建立在sata磁盘上,tmpfs则直接使用内存或者swap分区。为了确保tmpfs完全使用内存,我们使用“swapoff -a”命令来关闭swap分区。在媒体实验前,我们通过使用命令“dd”来进行文件的读写操作,可以发现tmpfs的读写能力比ext3提高了近10倍。随后我们重做了同时访问30个不同流媒体文件的实验,实验结果如图3和图4所示:
图3 在ext3上同时访问30个不同的文件(上图为CPU idle百分比,下图为CPU iowait百分比)
图4 在tmpfs上同时访问30个不同的文件(上图为CPU idle百分比,下图为CPU iowait百分比)
从图3中,我们可以看到,32位域64位操作系统在sata磁盘上的流媒体服务性能基本一致:当访问的媒体数达到30个的时候,CPU iowait达到了80%,而idle则为0%。我们认为服务的主要瓶颈为磁盘的读写能力。
图4表示的是采用了tmpfs时的服务器性能。由于使用了内存,读写能力得到大幅度的提升,CPU iowait大部分时候都为0%,只在85秒时出现了一个小得高峰。服务器的整体服务性能得到了显著的提升。由此,我们可以确定在此环境中,磁盘的读写性能是流媒体服务的主要瓶颈。
4.2 实验二
在第二个实验中,我们的实验条件如下:媒体文件的格式为MPEG2,码流为5MB/s,每个客户端连接访问相同的媒体文件,我们通过从1到30改变同时连接数来观察在不同并发连接数下,流媒体服务器的性能表现,结果如图5和图6所示。
图5 一个连接请求的CPU利用率及iowait百分比
图6 30个连接请求的CPU利用率及iowait百分比
从图5和图6的对比分析来看,随着并发连接数的提高,CPU利用率也逐步提高。当并发连接数提高到30个时,CPU利用率达到了80%以上,而此时的iowait几乎是0%,可以看出磁盘的读写能力并不是瓶颈,CPU的运算能力成为了瓶颈。
为了找出此时CPU的资源主要在处理那些任务,我们使用了oprofile4工具来收集CPU使用的信息,如图7所示。
从图7中可以看到,大部分的CPU运算都消耗在MPEG1or2VideoStreamParser ::parseSlice()。这个函数主要是用于对媒体文件进行分析拆包等运算。所以在此环境下,我们得出结论:当磁盘读写能力不是瓶颈时,CPU的运算能力将成为主要的系统瓶颈,而且CPU资源主要用于对媒体文件的分析处理。
为了证明我们的结论,我们做了以下的实验:我们分别在服务器A:CPU为Intel(R)Xeon(TM)CPU 2.80GHz*1(核数)*4(个数)和服务器B:Intel(R)Xeon(R)CPU X5460 3.16GHz*4(核数)*8(个数)的服务器上进行实验,服务器B的CPU处理能力是服务器A的8倍多。两个平台上都使用tmpfs文件格式消除磁盘的读写瓶颈,我们使用并发50个连接请求进行实验。实验结果见图8:
图7 30个并发连接请求时,opfrofile收集的CPU使用信息
图8 同CPU能力下的流媒体服务器的性能表现(上图为服务器A的CPU利用率,下图服务器B的CPU利用率)
当我们把并发连接数提高到50个的时候,我们可以看到在服务器A中,CPU的利用率已达到100%,在客户端中观看视频效果并不流畅,卡顿非常严重,服务器已达到瓶颈。而从服务器B的情况看来,当CPU的能力提高了8倍后,CPU的利用率大部分时候在20%以下,而且客户端中观看视频的效果明显改善。说明了我们的推测是正确地。
4.3 其他实验
除了以上的实验外,我们还做了其他一些实验并得到了以下的一些结论:
i. 并发连接数固定为20,我们改变媒体文件的码流(2MB/s,5MB/s,10MB/s),实验结果表明,随着码流的增加,CPU的利用率越来越高,当到达10MB/s时,CPU的idle为0%,CPU的处理能力成为了瓶颈。
ii. 我们分别对媒体的编码格式H.264和MPEG2进行测试,可以看到MPEG2需要比H.264占用更多CPU资源:同为20个并发连接,5MB/s码率的条件下,H.264的编码格式,CPU的空闲资源有80%,而MPEG2只有60%。
iii. 我们检验了不同流媒体协议的区别:HTTP和RTSP5。我们采用lighttpd来作为HTTP流媒体服务的提供者,RTSP则采用Live555提供。实验表明,相同情况下,当RTSP服务器中CPU资源耗尽时,HTTP服务器只占用了10%的CPU资源,HTTP比RTSP的效率更高。从上面的实验2看来,RTSP协议除了传输媒体文件外,还需要对媒体文件进行分析组装,而HTTP则主要关注传输,所以HTTP协议下,流媒体服务的性能得到更好表现。
5结论
我们通过分别改变磁盘读写能力,CPU处理能力,媒体码率和带宽的因素来进行流媒体的连接实验,逐步分析流媒体服务器的真实性能瓶颈所在,我们的结论总结如下:
1.在大多数的情况下,磁盘的读写能力是流媒体服务器的主要瓶颈;
2.当磁盘能力提升以后,CPU的处理能力将成为流媒体服务器的主要瓶颈;
3.高效的媒体编码格式能有效的提高服务器的服务能力;
4.相同的服务器条件下,采用HTTP协议比RTSP协议,能带来更好的系能表现。
参考文献
[1]徐茂.流媒体服务器性能调优关键点分析[J].电视技术,2014,(12).
[2]He Yan,Huang Haocheng,Yan Jinyao.Performance Measurement and Bottleneck Analysis for Streaming Media Servers[C] .icmt-13,November 2013.
[3]Jinyao Yan,Muhlbauer W,Plattner B. Analytical Framework for Improving the Quality of Streaming Over TCP[J].IEEE Transactions on Multimedia,2012,14(6):1579,1590.
[4]oprofile[DB/OL]. http://www.ibm.com/developerworks/cn/linux/l-oprof/.
[5]RTSP:[DB/OL]. http://www.ietf.org/rfc/rfc2326.txt.
[6]H.264[DB/OL]. http://www.itu.int/rec/T-REC-H.264-201402-I/en.
(责任编辑:王谦)
Performance Analysis of Stream Media Server
HUANG Hao-cheng1,HE Yan2,YAN Jin-yao2
(1.Computer and Network Center,Communication University of China,Beijing 100024,China;
2.School of Science and Technology,Communication University of China,Beijing 100024,China)
Abstract:We discuss the relationship between the capability of the stream media system and the performance constraints of the stream media server. In out experiments,we try to change the following environment:the number of concurrent connections,the number of media files opened the format of streaming media and network bandwidth. By measuring CPU idle time,IO waiting time,RAM of the streaming media server,we find out the performance and bottlenecks of streaming media system. Through improving the important capability of media server,the performance of streaming media service can be improved significantly.
Keywords:stream media;performance measurement;bottleneck analysis
作者简介:黄浩程(1979-),男(汉族),广东惠州人,中国传媒大学计算机与网络中心.E-mail:infosec@cuc.edu.cn
收稿日期:2015-06-02
中图分类号:TP37
文献标识码:A
文章编号:1673-4793(2015)05-0022-07