CN101478549A - 共享内存流媒体服务器的运行方法及其功能模块构架 - Google Patents

共享内存流媒体服务器的运行方法及其功能模块构架 Download PDF

Info

Publication number
CN101478549A
CN101478549A CNA2009100581935A CN200910058193A CN101478549A CN 101478549 A CN101478549 A CN 101478549A CN A2009100581935 A CNA2009100581935 A CN A2009100581935A CN 200910058193 A CN200910058193 A CN 200910058193A CN 101478549 A CN101478549 A CN 101478549A
Authority
CN
China
Prior art keywords
request
over
user
client
shared drive
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2009100581935A
Other languages
English (en)
Other versions
CN101478549B (zh
Inventor
李毅
董旭
辜宇
王鹏
杨晓冬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
University of Electronic Science and Technology of China
Original Assignee
University of Electronic Science and Technology of China
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by University of Electronic Science and Technology of China filed Critical University of Electronic Science and Technology of China
Priority to CN2009100581935A priority Critical patent/CN101478549B/zh
Publication of CN101478549A publication Critical patent/CN101478549A/zh
Application granted granted Critical
Publication of CN101478549B publication Critical patent/CN101478549B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

该发明属于一种共享内存流媒体服务器的运行方法及实现其方法的功能模块构架,包括建立共享内存,接收并处理客户请求,将请求内容存入共享内存,系统从用户态转入内核态流程,从共享内存上提取请求内容并按发包时间先后排序,生成RTP包并发送至客户;以及与上述步骤对应的各功能模块单元。该发明由于将RTSP和RTP分成两个共享一块内存的子系统,使内核态进程读文件和网络发包不再通过系统调用、也不需状态切换,直接在内核态下便可顺利完成。经对比测试:客户吞吐量及CPU有效利用率提高25%以上。而具有流媒体文件传送过程简捷,CPU的有效利用率及网络传送系统的效率高,流媒体服务器客户吞吐量大,服务器运行成本低等特点。

Description

共享内存流媒体服务器的运行方法及其功能模块构架
技术领域
本发明属于一种流媒体服务器,特别是一种内核进程和用户进程采用共享内存的流媒体服务器的运行方法及该服务器为实现其运行方法的功能模块构架。
背景技术
近年来,随着高速网络、高带宽存储设备以及媒体编码压缩技术的迅速发展,使得通过网络提供实时流媒体服务成为可能。流媒体技术广泛用于多媒体新闻发布、在线直播、网络广告、电子商务、视频点播、远程教育、远程医疗、网络电视台和实时视频会议等互联网信息服务的方方面面。流媒体应用的关键问题是流媒体服务器的性能,多数在数字媒体领域著名的公司都开发推出了包括服务器和播放器在内的一整套流媒体解决方案。目前,流媒体服务器优化的热点主要有:将点对点技术与流媒体整合,克服了传统C/S结构容易出现的瓶颈问题;新的媒体编码技术的出现,提供了数据量更小,解析度更高的流媒体格式供服务器使用;根据流媒体的特性设计专门的嵌入式硬件,为服务器提供额外硬件支持等。传统流媒体服务器大多运行在用户态,用户态进程的I/O操作需要通过系统调用陷入内核,最终在内核态完成I/O操作后,再返回用户态继续执行后续指令。这里提到的用户态和内核态是在类Unix操作系统中广泛采用的概念,即当一个进程在用户态下运行时,它不能直接访问内核的数据结构和程序,也不能直接和硬件资源交互。因此,当一个在用户态下运行的服务器读文件时就会切换到内核态、执行被严格限制的目的的内核运行过程;而当内核完成读文件操作时,又需返回用户态;然后,服务器进程又需要再次切换到内核态下将数据包从网络发送给客户。和文件服务器类似,为保证流媒体的实时性,服务器必须将流媒体文件分割成小数据包,并将每个数据包实时地、独立地发送给客户端。由于每次I/O操作请求都要由用户态进程通过系统调用来完成,因此,这类服务器在运行过程中必然产生大量I/O操作。据粗略统计,一个长度为一分钟左右、数据率为1mbits/s的mp4格式媒体文件用流媒体服务器发送时、产生的数据包个数在6000到7000左右,这就意味着为客户播放一次这个文件,服务器每秒将执行100次以上的网络I/O操作。在Linux平台下,这种来回切换是通过CPU硬件支持的模式切换机制来完成的;系统调用通过中断(执行“int0x80”汇编指令)或者执行sysenter指令(需要特定CPU支持和Linux 2.6内核)切换到内核态,并通过调用一内核函数来完成。此外,要使内核实现多个不同系统调用,用户态进程必须传递一个系统调用号作为参数来指定请求的系统调用,然后CPU执行以下操作:
●CPU特权级切换、堆栈切换和程序指针转换;
●在内核栈上保存寄存器的值;
●通过调用相应的C函数(系统调用服务例程)处理系统调用;
●退出:为寄存器载入保存在内核栈上的值,CPU切换回用户态。
附图2即为背景技术流媒体服务器工作原理示意图。
因而,背景技术存在服务器在运行过程中需频繁、且反复采用I/O操作来完成媒体文件的发送,其运行程序繁琐;服务器为此需付出非常可观的性能开销,CPU的有效利用率低,严重地降低了网络传送系统的吞吐量及流媒体的传输效率,提高了运行成本等弊病。
发明内容
本发明的目的是针对背景技术存在的缺陷,研究设计一种共享内存流媒体服务器的运行方法及其功能模块构架,将用户态和内核态之间的通信通过共享内存进行,使用户态进程和内核进程都可以像访问自己地址空间内的其他内存一样访问这块共享内存。从而达到简化媒体文件传送流程,提高CPU的有效利用率及网络传送系统的效率,增大客户吞吐量,降低服务器的运行成本等目的。
本发明的解决方案是将RTSP(实时流协议)处理和RTP(实时传输协议)发包处理分成两个子系统,分别由两个进程实现,这两个子系统使用一块共享内存来共享协同工作所必需的数据,即首先在服务器内由内核态进程申请(请求)一块物理内存、作为RTSP及RTP两个子系统的共享内存(跨越内核态和用户态的共享内存),使用户态进程和内核态进程都可以像访问自己地址空间内的其他内存一样访问该共享内存,同时将系统中所有的RTP会话都存放在这块内存中,使服务器中的读文件和网络发包不再通过系统调用,直接调用内核中与网络I/O相关(对应)的函数就能完成,从而实现本发明的目的。因此,本发明方法包括:
A.建立共享内存:首先由内核态进程请求系统分配一块内存,并将该内存的起始物理地址存储到一个内核全局变量中,用户态进程通过系统调用取出该起始地址,同时将其映射到自己的地址空间;在内核态和用户态之间建立共享内存;
B.运行方法为:
1.0:接收客户请求并依次转入步骤1.1;
1.1:处理请求并根据请求内容及RTSP协议向客户发送相应的响应;
1.2:判断是否满足客户请求,如果能满足请求,则转入步骤2.0,否则返回步骤1.1处理下一个请求;
2.0:将客户请求内容存入共享内存后,转入步骤3.0;
3.0:将系统从用户态的RTSP处理流程转入内核态的RTP处理流程;
4.0:从共享内存上提取请求内容,并转入步骤4.1;
4.1:根据请求内容中的发包时间先后排序后,转入步骤4.2;
4.2:判断当前的数据包是否为应发数据包,如果是,则转入步骤5.0,否则返回步骤4.1重新排序;
5.0:根据应发数据包描述信息生成RTP包,并转入步骤5.1;
5.1:发送当前RTP包至客户,并判断发送完毕与否,如果是,则转入步骤6.0待机,否则继续发送流程。
上述共享内存流媒体服务器的运行方法所用功能模块构架(装置)包括:
一个接收用户请求的单元;
一个用于处理用户请求并向用户发送响应的单元;
一个判断系统能否满足用户请求的判断处理单元;
一个将请求内容存入的共享内存单元;
一个将系统从用户态的RTSP处理流程转入内核态的RTP处理流程的系统转换单元;
一个从共享内存提取请求内容的提取处理单元;
一个可根据请求内容中的发包时间排序的排序处理单元;
一个判断当前数据包是否为应发数据包的判断处理单元;
一个可根据应发数据包描述信息生成RTP包的处理单元;
一个发送RTP包及判断发送完毕与否的发送及判断单元。
本发明由于将RTSP(实时流协议)处理和RTP(实时传输协议)发包处理分成两个子系统,分别由一个用户进程和一个内核进程实现,这两个子系统使用一块共享内存来共享协同工作所必需的数据;即首先由内核态进程请求系统分配一块内存,同时将系统中所有的RTP会话都存放在这块内存中,使服务器中的读文件和网络发包不再通过系统调用、也不需进行状态切换,直接在内核态下便可顺利完成,从而简化了流媒体文件传送流程,提高了CPU的有效利用率及流媒体服务器吞吐量。在相同硬件条件下,经对比测试:背景技术在并发客户数达到400时,发包延迟急剧增大,CPU占用率达到饱和状态;而本发明在并发客户数达到500时,CPU占用率才达到饱和状态;本发明较背景技术明显减少了内核态和用户态之间的状态切换和数据拷贝次数,其客户吞吐量及CPU的有效利用率提高25%以上。因而,本发明具有流媒体文件的传送过程简捷,CPU的有效利用率及网络传送系统的效率高,流媒体服务器客户吞吐量大,服务器运行成本低等特点。
附图说明
图1为本发明流媒体服务器工作原理示意图;
图2为背景技术流媒体服务器工作原理示意图;
图3为本发明流媒体服务器工作流程示意图(方框图)。
具体实施方式
以在硬件配置为:CPU:Pentium III,799.786MHz;内存:256M字节;硬盘:20G,5400转/分,操作系统为Linux的PC机上运行本发明流媒体服务器为例:
A.建立共享内存:首先由内核态下的RTP子系统申请分配一块内存,然后按设定数据结构初始化该内存,并将其起始物理地址存入一个内核全局变量中;RTSP子系统通过系统调用获取共享内存的起始物理地址,再将这块内存映射到自己的地址空间;此时,RTP子系统和RTSP子系统均能跨越内核态和用户态共享该块内存;
B.运行方法为:
现以完整的客户服务流程为例:接收客户请求1.0及处理请求并发送响应1.1均与背景技术对应的流程相同,即对客户的OPTION请求及其响应原则、DESCRIBE请求及其响应原则、SETUP请求及其响应原则以及PLAY请求及其响应原则均与背景技术相同;
当服务器能满足PLAY请求(步骤1.2)时,服务器即生成一个表示媒体文件传送任务的数据结构,并把它存入共享内存内(步骤2.0);这个数据结构称为RTP会话,其内容包括关于客户和被请求的媒体文件的描述信息;RTSP子系统这个动作的意义在于,将发送媒体文件的任务存入共享内存中,以方便RTP子系统提取任务;
在RTSP子系统结束上述流程后,系统从RTSP处理流程转入RTP处理流程(步骤3.0);
RTP子系统访问共享内存(步骤4.0),读取步骤2.0中存入的RTP会话,以获取RTSP子系统传递过来的关于客户和媒体文件的描述信息;RTP子系统和RTSP子系统在共享内存中完成数据的交接;
根据RTP会话描述的下一包的发包时间的先后排序(步骤4.1);按其排定的先后次序依次处理,如果当前数据包的应发时间在当前时间之后则返回步骤4.1,重新排序,若当前数据包为应发数据包则进入步骤5.0;
RTP子系统按照媒体文件的编码格式,调用读文件的内核函数从媒体文件中读入相应的数据并加上RTP协议头部生成RTP包(步骤5.0);步骤5.1根据共享内存上RTP会话中的发送目的地(客户的IP地址和端口号),调用网络发包内核函数,把RTP包发送至客户,直到满足条件的包发送完毕。自动转入下一个RTP会话并重复执行上述流程,直到所有RTP会话都没有满足发送条件的包或服务完毕,系统进入待机状态,直到发包时间到达或新客户请求达到。
采用本实施例的方法进行仿真运行实验,测试其能够承受的最大并发客户数。运行实验选取码率为100kbits/s的mp4格式电影文件作为测试用媒体文件,选取小码率文件的优点在于能够在不达到以太网网络带宽的硬件限制的前提下、尽可能增加发包操作密度,加大服务器的负载。测试方法为:以3秒为周期对服务器运行状态做采样,测试项目包括:每秒平均发包(RTP包)数、正在播放状态的客户数、最大的发包延迟和平均发包延迟。
发包延迟是指实际发包时间和这个RTP包的应发包时间的差值,这是反映服务器工作性能的重要指标。发包延迟过长将会造成客户端在期望的时间点接收不到数据、发生播放无法进行的情况(故障)。在服务器轻载工作时,这个延迟会维持在一个稳定的时间范围内;当服务器在重负载条件下工作时,某些发包动作会被适当延迟,而在服务器的负载超过上限时,发包动作延迟时间则会急剧升高,同时造成客户端异常。
本实验并发客户数以每次增加50户的量,逐渐加大服务器的负载,当并发客户数达到500户时,观察到发包延迟时间显著增长(即当前最大发包延迟时间由450个客户时的3毫秒陡增至500个客户时的133毫秒),与此同时,正在播放中的客户播放器出现跳帧和画面停顿等异常情况;可以推断服务器已经超过处理能力的上限。实验数据如下表:
 
每秒发包数(个) 并发客户数(个) 当前最大发包延迟(毫秒) 平均发包延迟(毫秒)
17408 450 4 -17
17393 450 5 -17
17485 450 6 -17
17346 450 3 -17
19293 500 133 -7
19470 500 122 -5
21235 500 124 -8
21683 500 117 -6
再通过top指令测定服务器的CPU占用率对上述结果进行验证,此时,服务器的CPU占用率采样数据分别为:用户19.5%,系统78.1%,空闲2.8%,即CPU已处于满载状态。
然后,对背景技术流媒体服务器在相同硬、软件及操作条件下做相同实验,实验数据如下表:
 
每秒发包数(个) 并发客户数(个) 当前最大发包延迟(毫秒) 平均发包延迟(毫秒)
13691 350 4 -17
13496 350 3 -17
13649 350 5 -17
13497 350 4 -17
15423 400 215 20
15438 400 199 15
15447 400 244 30
15376 400 335 31
即当并发客户数达到400户时,最大发包延迟时间由350个客户时的4毫秒陡增至400个客户时的215毫秒;CPU亦处于满载状态。
两次实验结果对比:本实施例方法在重载正常工作时,平均每秒发包数较背景技术增加3925个,客户吞吐量提高25%以上。

Claims (2)

1.一种共享内存流媒体服务器的运行方法,包括:
A.建立共享内存:首先由内核态进程请求系统分配一块内存,并将该内存的起始物理地址存储到一个内核全局变量中,同时将该物理地址映射到用户态进程的地址空间;在内核态和用户态之间建立共享内存;
B.运行方法为:
1.0:接收客户请求并依次转入步骤1.1处理;
1.1:处理请求并根据请求内容及RTSP协议向客户发送相应的响应;
1.2:判断是否满足客户请求,如果能满足请求,则转入步骤2.0,否则返回步骤1.1处理下一个请求;
2.0:将客户请求内容存入共享内存后,转入步骤3.0;
3.0:将系统从用户态的RTSP处理流程转入内核态的RTP处理流程;
4.0:从共享内存上提取请求内容后,转入步骤4.1;
4.1:根据请求内容中的发包时间先后排序后,转入步骤4.2;
4.2:判断当前的数据包是否为应发数据包,如果是,则转入步骤5.0,否则返回步骤4.1重新排序;
5.0:根据应发数据包描述信息生成RTP包,并转入步骤5.1;
5.1:发送当前RTP包至客户,并判断发送完毕与否,如果是,则转入步骤6.0待机,否则继续发送流程。
2.按权利要求1所述共享内存流媒体服务器的运行方法所用功能模块构架,包括:
一个接收用户请求的单元;
一个用于处理用户请求并向用户发送响应的单元;
一个判断系统能否满足用户请求的判断处理单元;
一个将请求内容存入的共享内存单元;
一个将系统从用户态的RTSP处理流程转入内核态的RTP处理流程的系统转换单元;
一个从共享内存提取请求内容的提取处理单元;
一个可根据请求内容中的发包时间排序的排序处理单元;
一个判断当前数据包是否为应发数据包的判断处理单元;
一个可根据应发数据包描述信息生成RTP包的处理单元;
一个发送RTP包及判断发送完毕与否的发送及判断单元。
CN2009100581935A 2009-01-20 2009-01-20 共享内存流媒体服务器的运行方法及其功能模块构架 Expired - Fee Related CN101478549B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009100581935A CN101478549B (zh) 2009-01-20 2009-01-20 共享内存流媒体服务器的运行方法及其功能模块构架

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009100581935A CN101478549B (zh) 2009-01-20 2009-01-20 共享内存流媒体服务器的运行方法及其功能模块构架

Publications (2)

Publication Number Publication Date
CN101478549A true CN101478549A (zh) 2009-07-08
CN101478549B CN101478549B (zh) 2011-10-05

Family

ID=40839181

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009100581935A Expired - Fee Related CN101478549B (zh) 2009-01-20 2009-01-20 共享内存流媒体服务器的运行方法及其功能模块构架

Country Status (1)

Country Link
CN (1) CN101478549B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102662910A (zh) * 2012-03-23 2012-09-12 浙江大学 基于嵌入式系统的网络交互体系及网络交互方法
CN103077120A (zh) * 2012-12-31 2013-05-01 东软集团股份有限公司 程序共享内存的地址转换方法和装置
CN103744726A (zh) * 2014-01-02 2014-04-23 西北工业大学 一种Windows系统实时扩展的两级调度方法
CN106713462A (zh) * 2016-12-26 2017-05-24 郑州云海信息技术有限公司 一种网络数据包处理方法和装置
CN107026767A (zh) * 2017-03-30 2017-08-08 上海七牛信息技术有限公司 业务协议指标数据收集方法及系统
CN107733837A (zh) * 2016-08-11 2018-02-23 杭州迪普科技股份有限公司 基于应用层网络异常报文的异常检测方法及装置
CN112368691A (zh) * 2018-06-08 2021-02-12 塞佛尔公司 用于文件共享的技术
CN112995753A (zh) * 2019-12-16 2021-06-18 中兴通讯股份有限公司 一种媒体流分发方法、cdn节点服务器、cdn系统和可读存储介质
CN113840161A (zh) * 2020-06-23 2021-12-24 龙芯中科技术股份有限公司 流媒体传输方法、接收方法、装置、电子设备及储存介质
USD982597S1 (en) 2018-06-08 2023-04-04 Saphyre, Inc. Display screen or portion thereof with graphical user interface

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100342353C (zh) * 2006-04-07 2007-10-10 浙江大学 嵌入式操作系统中进程映射实现方法
CN101038545A (zh) * 2006-11-10 2007-09-19 清华大学 操作系统内核构件跨域运行的方法
CN100486178C (zh) * 2006-12-06 2009-05-06 中国科学院计算技术研究所 一种远程内存共享系统及其实现方法

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102662910A (zh) * 2012-03-23 2012-09-12 浙江大学 基于嵌入式系统的网络交互体系及网络交互方法
CN103077120A (zh) * 2012-12-31 2013-05-01 东软集团股份有限公司 程序共享内存的地址转换方法和装置
CN103077120B (zh) * 2012-12-31 2016-01-27 东软集团股份有限公司 程序共享内存的地址转换方法和装置
CN103744726A (zh) * 2014-01-02 2014-04-23 西北工业大学 一种Windows系统实时扩展的两级调度方法
CN103744726B (zh) * 2014-01-02 2017-01-04 西北工业大学 一种Windows系统实时扩展的两级调度方法
CN107733837A (zh) * 2016-08-11 2018-02-23 杭州迪普科技股份有限公司 基于应用层网络异常报文的异常检测方法及装置
CN106713462A (zh) * 2016-12-26 2017-05-24 郑州云海信息技术有限公司 一种网络数据包处理方法和装置
CN107026767B (zh) * 2017-03-30 2019-10-18 上海七牛信息技术有限公司 业务协议指标数据收集方法及系统
CN107026767A (zh) * 2017-03-30 2017-08-08 上海七牛信息技术有限公司 业务协议指标数据收集方法及系统
CN112368691A (zh) * 2018-06-08 2021-02-12 塞佛尔公司 用于文件共享的技术
US11422979B2 (en) 2018-06-08 2022-08-23 Saphyre, Inc. Technologies for file sharing
USD982597S1 (en) 2018-06-08 2023-04-04 Saphyre, Inc. Display screen or portion thereof with graphical user interface
US11841831B2 (en) 2018-06-08 2023-12-12 Saphyre, Inc. Technologies for file sharing
CN112995753A (zh) * 2019-12-16 2021-06-18 中兴通讯股份有限公司 一种媒体流分发方法、cdn节点服务器、cdn系统和可读存储介质
CN112995753B (zh) * 2019-12-16 2024-03-22 中兴通讯股份有限公司 一种媒体流分发方法、cdn节点服务器、cdn系统和可读存储介质
CN113840161A (zh) * 2020-06-23 2021-12-24 龙芯中科技术股份有限公司 流媒体传输方法、接收方法、装置、电子设备及储存介质
CN113840161B (zh) * 2020-06-23 2023-07-25 龙芯中科技术股份有限公司 流媒体传输方法、接收方法、装置、电子设备及储存介质

Also Published As

Publication number Publication date
CN101478549B (zh) 2011-10-05

Similar Documents

Publication Publication Date Title
CN101478549B (zh) 共享内存流媒体服务器的运行方法及其功能模块构架
CN104620559B (zh) 用于支持分布式数据网格集群中的可伸缩消息总线的系统和方法
CN101969391B (zh) 一种支持融合网络业务的云平台及其工作方法
CN109831524B (zh) 一种负载均衡处理方法及装置
Wu et al. The performance analysis of Linux networking–packet receiving
US9042252B2 (en) Inter-packet interval prediction learning algorithm
CN110071965B (zh) 一种基于云平台的数据中心管理系统
CN102170396A (zh) 一种基于区分服务的云存储系统QoS控制方法
CN101448006A (zh) 一种实现流媒体服务器大量终端接入的方法及系统
Basiri et al. Delay-aware resource provisioning for cost-efficient cloud gaming
CN108600300A (zh) 日志数据处理方法及装置
CN103188245A (zh) 一种对战类游戏服务端系统
CN101146114A (zh) 一种流媒体服务器负荷分担方法及其系统
CN105450675A (zh) 一种流媒体播放中客户端选择cdn服务节点的方法
CN110971628B (zh) 云视频数据获取方法
US7986705B2 (en) Determining a transmission order for frames based on bit reversals of sequence numbers
CN110519782A (zh) 一种通信网多通道选择方法及装置
CN110493245A (zh) 一种基于分布式并行系统的流媒体数据分发系统
CN100466622C (zh) 一种网络上随机包间隔采样的方法和系统
CN103297474B (zh) 一种批量处理分包方法和系统
CN100490379C (zh) 非实时局域网广播通讯方法
De Pinho et al. GloVE: A distributed environment for scalable video-on-demand systems
CN108536854A (zh) 数据交互的方法、装置及计算机可读存储介质
CN106028373B (zh) 基于云服务数据特征的移动互联网数据交换系统及方法
Lee et al. Performance evaluation technique of the RTSP based streaming server

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20111005

Termination date: 20140120