范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

SRS5优化如何将DVR性能提升一倍

  前言
  SRS支持将直播录制为VoD文件,在压测时,如果流路数很多,会出现CPU消耗很多的问题。
  原因是写入较小视频包时,SRS使用了write,由于没有缓冲能力,导致频繁的系统调用和磁盘繁忙。
  优化方案,可以选择fwrite(v5.0.133+),或者老版本用内存盘方案,可将DVR性能提升一倍以上。 环境
  SRS服务器配置如下: • CPU:INTEL Xeon 4110 双路16和32线程 • 内存:32G • 网卡:10Gb • 磁盘:两块980G的SSD盘做成RAID0(可用空间共1.8T) • 操作系统:CentOS 7.6。 • 流码率:3Mbps
  这里需要说明一下,采用SSD盘主要是为了确保磁盘性能足够,以确保能够支撑大的并发压力,从而在大并发压测的情况下观察系统性能情况,如果本身磁盘I/O性能比较低下,大量的I/O等待可能导致观察不到CPU瓶颈的现象。
  另外,在我的测试环境中,SRS经过了多进程改造,能够支持推流进来后自动将不同的流均衡到不同的SRS进程上面,从而能够充分利用服务器多核的能力,但是由此得出的结论同样适合于单进程SRS。
  SRS开启DVR录存功能,使用如下命令启动SRS: env SRS_LISTEN=1935 SRS_MAX_CONNECTIONS=3000 SRS_DAEMON=off SRS_SRS_LOG_TANK=console      SRS_HTTP_API_ENABLED=on SRS_VHOST_DVR_ENABLED=on ./objs/srs -e
  压测工具,用srs_bench套件中的sb_rtmp_publish模拟推流客户端进行大并发量推流模拟,一台机器压测能力不够可以开启多台机器进行压测。 ./objs/sb_rtmp_publish  -i doc/source.200kbps.768x320.flv      -c 100 -r rtmp://127.0.0.1:1935/live/livestream_{i}
  启动srs后,用压测工具进行压测,观察测试过程中的CPU、网络IO、磁盘IO相关数据,并进行对比。 写入SSD Disk
  SRS优化前,默认的方式就是使用write方法,直接写入磁盘。测试能支持1000路写入,CPU跑满。
  从上图可以看到,1000路3M的DVR录制已经将系统的CPU都跑满了,特别需要关注的是cpu的时间主要消耗在了内核空间上面,占了87.5%。
  用nload查看当时的输入带宽情况,发现系统输入带宽平均只有2.17Gb,没有达到预期的3Gb的带宽,应该是CPU负载过高导致SRS来不及处理网络I/O引起的性能下降。
  再用perf工具对其中一个srs 进程进行性能采样分析,得到下面的火焰图:
  可以发现,sys_write操作占用的时间消耗是最多的,对比上面用top看到的内核态消耗的时长占比可以得出的结论是一致的。
  最后看磁盘I/O情况:
  从上图看磁盘的利用率没有到100%,虽然有一定的波动,但是总体上还是在合理的可以接受的性能范围内。 fwrite SSD Disk
  SRS优化后,使用fwrite写入磁盘。录制1000路流,占用32%的CPU,性能提升一倍以上。
  从上图可以看到,1000路3M的DVR录制已经将系统的CPU整体来说还有很多空闲(这里说明一下,部分进程的SRS占比高的原因是因为当时任务分配的不够均衡引起的)。特别值得注意的是本次测试内核时间占比大幅下降,只有9.1%。
  再用nload看网络i/o情况,网络i/o相当平稳,和预期的3Gb完全吻合。
  再看磁盘i/o的情况,磁盘的利用率没有到100%,虽然有一定的波动,但是总体上还是在合理的可以接受的性能范围内。
  最后看火焰图:
  系统调用的时间占比大幅度缩短了,在上图几乎找不到sys_write的位置了。
  C++音视频学习资料免费获取方法:关注音视频开发T哥  ,点击正在跳转即可免费获取2023年最新 C++音视频开发进阶独家免费学习大礼包!
  write Memory Disk
  SRS优化前,也可以挂载内存盘,使用write写入内存盘。
  需要说明一下,由于我手上的服务器只有32G内存,只能分配16G内存给内存盘使用, 由于内存盘比较小,按照3Gb的写入速度,最多能写42s的DVR。
  采用如下命令挂载内存盘: mount -t tmpfs -o size=16G,mode=0755 tmpfs /data/memdisk
  并且修改srs的配置文件将文件写入到内存盘: env SRS_LISTEN=1935 SRS_MAX_CONNECTIONS=3000 SRS_DAEMON=off SRS_SRS_LOG_TANK=console      SRS_VHOST_DVR_DVR_PATH=/data/memdisk/[app]/[stream].[timestamp].flv      SRS_HTTP_API_ENABLED=on SRS_VHOST_DVR_ENABLED=on ./objs/srs -e
  测试数据如下,占用CPU27%左右:
  从CPU的情况看,采用内存盘也比较理想,load average只有 7.5,性能也不错。如果不需要录制大量的流,这种方式也是非常好的。 macOS 测试数据
  在macOS环境下,也做了一组数据,供参考: 1. macOS: MacBook Pro, 16-inch, 2019, 12CPU(2.6 GHz 6-Core Intel Core i7), 16GB memory(16 GB 2667 MHz DDR4). 2. v5.0.132优化前: RTMP to HLS,  200 streams , SRS  CPU 87%, 740MB 3. v5.0.133优化后: RTMP to HLS,  200 streams , SRS  CPU 56%, 618MB 4. v5.0.132优化前: DVR RTMP to FLV,  500 streams , SRS  CPU 83%, 759MB 5. v5.0.133优化后: DVR RTMP to FLV,  500 streams , SRS  CPU 35%, 912MB 6. v5.0.133优化后: DVR RTMP to FLV,  1200 streams , SRS  CPU 79%, 1590MB 结论
  从以上4个测试可以得出以下结论: 1. 无论ssd盘还是内存盘,采用fwrite的性能比采用write的性能有明显的提升,其主要得益于fwrite内置的缓存功能减少了系统调用的数量,带来内核时间消耗的减少,从而提升了性能。 2. 在ssd盘情况下,fwrite的缓冲能力可以大幅度降低对于CPU的消耗,但是在采用内存盘的情况下,CPU的消耗虽然也能够降低,但是不是那么明显。 3. 录制到内存盘性能也很好,如果流路数不多也可以考虑这种方案。 Note: 之前想当然地认为用write写内存盘,因为系统调用引起的用户态到核心态的切换还是会导致cpu大量消耗,一样会导致CPU消耗高居不下,但是事实看到是采用内存盘以后cpu消耗明显下降了,是不是可以认为系统调用引起的用户态到核心态的切换消耗实际上并没有想象的那么大,而是内核态在处理小块的文件write写入磁盘的时候还存在着其他因素引起消耗大量的cpu。
  譬如,因为最终写入磁盘都是按照扇区写入的,而小块写入需要操作系统将这个小块对齐并填充到一个完整的磁盘扇区,从而引起性能大幅下降,而内存盘是不是就不会存在这个问题?
  由于我自己没有内核方面的经验,所以只能存疑了,也请懂内核的朋友给予指点。 接下来该怎么办?
  在linux环境中,对于文件进行读写操作的时候,我们可以采用libc提供的fread/fwrite系列的一套函数,也可以采用操作系统提供的read/write系列的一套系统api函数。
  对于libc提供的文件读写函数,首先它可移植性比较好,因为libc为我们屏蔽了操作系统的底层差异,在linux、windows等不同的操作系统环境下面都有标准的接口实现,因此不需要我们为不同的操作系统进行适配。
  其次,libc提供了带缓冲功能的读写能力,而操作系统底层文件读写API却不提供这种能力,缓冲能力在大多数情况下能够为我们带来文件i/o性能的提升。
  当然libc的文件读写api函数也存在不足之处,缺少了writev/readv之类的函数。不过readv/writev的功能无非就是将多个缓冲区的内容合并成一次批量读写操作,而不需要进行多次API调用,从而减少实际物理I/O的次数,我想libc没有提供这类函数主要也是因为其缓冲功能已经能够将本来需要多次的小块物理I/O操作合并成了一次更大块的物理i/o操作,所以就没有必要再提供readv/writev了。
  不管SRS也好,还是NGINX也好,虽然前者采用st-thread框架的协程能力来实现网络异步i/o,但是和后者一样,最终还是采用epoll事件循环来实现网络异步i/o的,但是对于文件i/o,目前存在的问题是,无论是write还是fwrite都是同步操作,在磁盘请求比较繁忙的情况下,必然会导致进程或者线程阻塞,从而引起系统并发性能的下降。
  由于操作系统本身不支持epoll异步(linux下的ext4本身没有实现poll的回调),所以寄希望于epoll来实现文件i/o的异步操作是行不通的。NGINX对于文件异步i/o采用了aio+多线程的方式来实现的,个人感觉是由于和epoll模型来说是一套独立的框架,还是相对比较复杂。
  不过,好在linux在5.1内核以后提供了io_uring的异步i/o框架,它可以统一网络i/o和磁盘i/o的异步模型,并支持buffer IO,值得我们去关注学习一下,也值得我们后面一起去探讨一下未来如何在srs上采用io_uring来实现带有fwrite一样的缓冲能力的磁盘i/o的操作,来彻底解决磁盘i/o引起的性能瓶颈的问题。 作者:王磊
  原文链接:https://mp.weixin.qq.com/s?__biz=MzA4NTQ3MzQ5OA==&mid=2649005701&idx=1&sn=85df053c78dda929d92f8285c8fe65ce&chksm=87c75f30b0b0d6263f5d94d4569fa256105238aa1bc23b7ff323fa4625bb9f249d1437ce42fb&mpshare=1&scene=23&srcid=0217zlNwQFfuGuWLk8CIcCX7&sharer_sharetime=1676614132224&sharer_shareid=a96e9b09ebf11547090dd99009e597bb#rd
  #音视频开发# #流媒体# #把地球的故事讲给宇宙# #程序员#

泰星Nine谈及Baifern她好可爱我会一直追下去自从泰星Nine公开告白Baifern并获得女方回应后,两人的关系及动态进展一直备受泰媒及网友关注。众多粉丝朋友希望两人修成正果。1月18日晚,泰星Nine在曼谷暹罗天地出席中国春一夜成名却突然消失的10位歌手,有人去世,有人进精神病院文娱情故纵编辑娱情故纵前言在千禧年互联网真正普及并高速发展的时候,一些歌手通过网络的力量让网络歌曲爆火起来,其中不少的曲子凭借着网络的便捷性,直接传遍大江南北一时间成为了神曲。然而纵有疾风起大结局,一个遗憾,两个惊喜,烁雨病逝让人意难平电视剧纵有疾风起一开播,无论是口碑还是剧情都是人们热议的话题,尤其是宋佳饰演的烁冰。刚开始,人们以为她背叛了唐尘,但是随着剧情的发展,烁冰迎来了一个惊天大反转。原来,烁冰才是受害者最欲的吻戏电影,你看过几部?一色戒色戒这部电影是由李安导演拍摄,汤唯和梁朝伟主演,获得了威尼斯电影节金狮奖。这部剧主要讲的是民国时期的特务老大和要刺杀他的女学生的爱恨纠葛的故事。这里面的每一个片段,不管是什么6个超穷的剧组,个个寒酸无比,拍出来的作品一个比一个优秀曾经网友们认为投资上亿的影视剧绝对是大制作了。比如花费5年打造的北平无战事投资超过1。5亿元,古装大剧大秦帝国2之纵横总投资达1。3亿元。当然这些大制作影视剧也给观众带来了一场很震朱丹化身炫夫狂魔,李诞却句句诛心,只因嫁给周一围是二婚吗?朱丹化身炫夫狂魔,却并不被人祝福朱丹之所以那么卑微,是因为嫁给周一围是二婚吗?节目恕我直言中,当主持人蔡康永问道婚后男生会有一种搞定了的态度就不再浪漫了,你们的方法是什么?蔡康永提荣耀80GT和小米13,哪台更值得买?真机评测对比来了!上个月底,荣耀出人意料的发布了一款全新的直屏手机荣耀80GT。从GT的命名上,可以看得出来,这台手机的定位就是主打性能和游戏。对于这台手机,我个人还是非常感兴趣的,毕竟这算是荣耀在哈啰城市计划落地永州骑行驾照分2。0系统上线永州街头整齐摆放的哈啰共享助力车。红网时刻新闻1月19日讯(记者潘锦)近日,哈啰在永州市正式上线共享助力车骑行驾照2。0系统,将通过信用分与骑行行为挂钩实现用车等级划分,进而以技术专精特新汉威科技气体传感器领域国家专精特新小巨人2021年7月19日,汉威科技获得国家级专精特新小巨人称号,是第三批获得此称号的公司之一。公司成立于1998年,于2009年在创业板成功上市。公司秉持成为以传感器为核心的物联网解决苹果战略性放弃HomePod?临近春节,苹果带来的惊喜也是接连不断,前天夜里官网悄悄上架了新款Macmini和MacBookPro,搭载全新的M2Pro和M2Max,不少网友表示压岁钱还没到手就已经没了。昨天夜苹果公司抢钱来了!发布新品售价堪比印钞机!当你买苹果手机或者电脑的时候,你会觉得贵吗?估计大多数人的答案都是太贵了。2023年1月17日晚,美国苹果公司发布新产品,同样是一大堆所谓的超级性能指标,加上价格超贵。我们今天一起
取消发射3次后,美国又要发射登月火箭!网友担心大火箭成大烟花美国又要准备发射登月火箭了,NASA宣布,将在美国东部标准时间11月14日凌晨0点07分开放的69分钟的发射窗口内,发射阿尔忒弥斯一号月球任务。有网友说如果没有意外的话,或许美国这惊艳!上海乐高乐园模型首度亮相进博会11月6日,上海乐高乐园度假区概念设计模型,以别出心裁的展开方式首次震撼亮相于第五届中国国际进口博览会,近10万颗乐高积木搭建而成的模型,以惟妙惟肖的多维度创意向公众展示乐园的核心苹果现在的估值超过了亚马逊Alphabet和Meta的总和综合今年的科技巨头公司的表现,从股价上来讲,苹果公司AppleInc的表现远超其它同行,最夸张的是这家智能手机巨头的估值竟然超过了AlphabetInc。Amazon。comInc下单秒到,今年双11快递咋这么快?24小时有奖新闻热线8605011113912331001双11第一波购物潮已经启动,快递行业也迎来了旺季。今年的双11,今日购次日达已经成为常态。快递企业到底用了什么黑科技提速?美国为什么专攻打压华为而轻视腾讯和阿里巴巴呢?对于美国专攻打压华为这个问题,我也问了几个朋友,他们的答案基本上与5G核心技术有关,但是,若是让他们再深入谈一下就之乎者也,一脸茫然了!现在我就想问一个问题为什么美国没有打压阿里和支付宝正式接入鸿蒙生态华为正和支付宝探索更多可能e公司讯,记者从华为开发者大会获悉,支付宝正式接入鸿蒙生态,华为正在和支付宝探索基于HarmonyOS原子化服务的更多可能。华为称,用户很快将体验到通过智慧搜索,一步直达支付宝生活世界能源发展报告2022预计全球电力需求增速将放缓电力供应增长大部分在中国来源中央广电总台国际在线编辑韩基韬国际在线报道(记者李琳)11月6日,中国社会科学院大学(研究生院)国际能源安全研究中心与社会科学文献出版社联合发布了世界能源蓝皮书世界能源发展报告我,90后,上岸供销社月薪三千,稳就是幸福本文来源时代财经作者王莹岭近日,供销社意外走红,频上热搜。许多人对供销社的印象还停留在过去,此次被舆论关注,不免担心供销社重建是否在走老路。事实上,随着时代洪流浮浮沉沉,供销社一直接班十年,刘畅没有辜负刘永好文丨蔓听孩提出品丨牛刀财经(niudaocaijing)2021年8月2日,新希望集团迎来了历史性的一刻在2021年财富世界500强排行榜上,新希望以316。057亿美元的营收位列V观财报麦趣尔控股股东债务违约被诉东方证券索赔4。8亿元中新经纬11月6日电麦趣尔控股股东因债务违约被东方证券告了,后者索赔本金利息违约金等合计逾4。8亿元。控股股东债务违约被诉据公告,麦趣尔于近日获悉公司控股股东新疆麦趣尔集团有限责任马云背后的女人,对比刘强东妻子章泽天,差别很大人们都说,成功的男人背后都有一个默默无闻支持他的女人,在无数优秀的企业家背后,都有一个可能略显低调但是绝不平庸的女人,比如说刘强东背后的奶茶妹妹。但是你知道马云背后的那个默默支持女