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

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
  #音视频开发##流媒体##把地球的故事讲给宇宙##程序员#

机械键盘也能自主DIY?洛婓OEM主题键帽(舰载熊猫棋盘格王国)对于喜欢玩键盘的朋友来说,洛斐这个品牌一定不陌生,甚至我们经常会听到玩键帽,找洛斐。这主要源于他们家的键盘有自己独特的风格,颜值超高造型多样,而且品类非常多!近日,我就拿到了两款主AppleCarPlay将于2023年推出几大亮点新功能抢先看苹果在WWDC2022开发者大会上,提前对外宣布新一代AppleCarPlay新功能与介面设计,同时还会有高度整合的车型,苹果也强调将替AppleCarPlay自动适配不同车内屏幕大腿上的肥胖纹丑到不能穿短裙,老爸测评推荐的东西能不能淡化?别人花几万块钱搞定的肥胖纹我花几百块钱就搞定了!肥胖纹从红纹到消失只用了5个月的时间虽然时间有点久但也省下了不少钱,非常适合学生党姐妹。这个方法很简单,只要坚持皮肤护理刷酸按摩这3旅游小姐冠军王晓娜晒新写真,身穿抹胸短裙,展现苗条撩人身材头条创作挑战赛日前,2018中国旅游小姐全球大赛深圳赛区冠军王晓娜在社交平台分享了今年第一组的写真,并留言道是终点也是起点2023新的开始。我们看到这组写真是王晓娜在澳门拍摄的。由雷克沙时光机M1体验轻松组建个人云盘,功能丰富不限速我们处在信息时代,数据正在变得越来越重要。数据的存储需要载体,随着科技的发展,载体也在发生变化,从光盘到U盘硬盘再到云盘,储存数据变得越来越方便。以往用户都会选择免费的网络云盘来存C盘空间清理C盘空间不够,是我们经常会遇到的情况。一问题(一)以Win10为例,其实系统大小也就二三十G左右,为什么二三百G的空间也会耗光呢?(二)以下图为例,明明C盘所有文件(包括隐藏文件)三星GalaxyA34新渲染图曝光,已通过蓝牙SIG认证三星将更新其下一代Galaxy系列手机,还会推出包括GalaxyA14GalaxyA54和GalaxyA34等多款智能手机。在最新曝光中,GalaxyA34的最新渲染图出炉,这些最iPhone14plus大跳水,怨种机变成真香机!今年美版iPhone14系列没有卡槽,但是外版不仅仅只有美版的,比如加拿大版的14系列还是是有卡槽的,由于最近的这个行情iPhone14plus非常有可能从怨种机变成以后的真香机。写在2023年新平台发布之前选购笔记本的眼光需要与时俱进!英特尔和AMD的硬件更新周期要以年计,比如2022年是第12代酷睿和锐龙6000的天下,2023年就要迎来第13代酷睿和锐龙7000的更新。同理,OEM厂商旗下经典笔记本型号的生命2023跨年晚会鲨疯了!杨幂又甜又御,赵露思的腮红是谁打的?一年一度的2023跨年晚会如期而至,各大卫视争奇斗艳,明星们更是鲨疯了!一场盛大的视觉盛宴就此拉开帷幕!来看看你最喜欢谁的舞台?杨幂湖南卫视,又甜又御杨幂头扎高蓬松马尾,刘海随意散张家辉罕携娇妻走红毯!关咏荷绿裙盘发美成名媛,他穿成跟班小弟真正优雅的女性,往往都非常注重自己的外在形象,尤其是服装单品的搭配,一定是至关重要的体现。特别是对于很多公众人物来讲,穿衣打扮早就已经成为了自己的名片,如果总是穿的非常普通低调的话
2022中国企业500强揭晓国家电网中石油中石化位列前三甲中新社北京9月6日电(记者阮煜琳)中国企业联合会中国企业家协会(简称中国企联)6日向社会发布2022中国企业五百强,国家电网中国石油中国石化中国建筑股份有限公司中国工商银行中国建设体检时,别因为羞羞而忽视妇科检查别因为羞羞而忽视妇科检查妇科检查,可以说是保障女性生殖健康一年一度的必选项了!常规的女性体检套餐里一般都会包含妇科检查,但是因为它做起来不是那么舒适优雅,很多女性朋友会因为害怕羞羞俄罗斯宣布放弃使用美元,屠龙还是自寻短见一每日股评周三,大盘如昨天预期所说,小幅上涨0。09,收至3246。29点。上证深证创业板三大股指分化明显,小盘股表现抢眼。上方3260点左右有明显的压力,蛤蟆继续保持昨天的观点,人民币贬值,手里的钱要变废纸了?大可不必惊慌人民币人民币对美元汇率暴跌近期人民币兑美元持续贬值的消息冲上热搜,最新的消息是人民币兑美元已经跌到了6。991,眼看就要突破7了,持续刷新着近几年的最低记录。网上各自媒体分析文章也广东火锅,还有多少惊喜我不知道!粥火锅牛肉火锅宴吃法讲究广东火锅,非比寻常我到广东后,发现这里的火锅很奇怪,粥可以左锅底,煮一锅清水放两片萝卜也能做锅底,牛肉原来不是这有肥牛片在珠江畔临海的广东,虽然饮食清淡,但是广东火锅,也很讲究!食46岁翁帆伺候杨振宁到100岁,恩爱18年,继子女们都感谢她文大牌娱姐2018年,杨振宁在三峡的黄河口边,和妻子儿子留下了一张合影。照片里的他虽然拄着拐杖,但看上去精神还是相当不错的。在他的左边,站着比他小54岁的翁帆。翁帆留着一头披肩长发新加坡急了,杨荣文要求美国停止在台海挑事,否则中国态度或大变日前新加坡前外交部长杨荣文接受外媒采访,期间谈及台湾问题时其再一次不点名警告美国,要求停止在台海挑事,一定不能低估中国对台湾问题的敏感性。为了解释这个问题,杨荣文还特意拿当年日本偷习近平就巴西独立200周年向巴西总统博索纳罗致贺电丨来源新华社9月7日,国家主席习近平向巴西总统博索纳罗致贺电,祝贺巴西独立200周年。习近平指出,巴西是西半球最大的发展中国家,坚持走独立自主的和平发展道路,在地区和国际事务中发挥糖尿病不敢吃月饼?医生建议可以吃,但这5点要注意大家好,我是中医张医生。今天和大家聊的话题是,糖尿病能不能吃月饼?建议先点赞收藏,接着往下看!又到一年中秋节,家人团聚,共赏月圆,在欢度中秋的同时,家家的餐桌上少不了几个圆圆的香香重磅!2022中国制造业企业500强发布!(附榜单)曹雅丽9月6日,中国企业联合会中国企业家协会(以下简称中国企联)在京发布2022中国企业500强榜单及其分析报告,同时发布了2022中国制造业企业500强2022中国服务业企业50水发兴业能源集团上榜2022全球新能源企业500强排行榜第209位2022年太原能源低碳发展论坛期间,2022新能源企业竞争力白皮书2022全球新能源企业500强排行榜发布。水发兴业能源集团上榜2022全球新能源企业500强排行榜第209位。为应