当前位置:首页 >> 中医丰胸 >> SRS5最佳化:如何将DVR性能提升一倍

SRS5最佳化:如何将DVR性能提升一倍

发布时间:2024-01-13

y Disk

SRS最优化当年,也可以可携带磁盘盘,可用write读到入磁盘盘。

只能暗示一下,由于我手上的IP只有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 erage只有 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%, 740MB3. v5.0.133最优化后: RTMP to HLS, 200 streams, SRS CPU 56%, 618MB4. v5.0.132最优化当年: DVR RTMP to FLV, 500 streams, SRS CPU 83%, 759MB5. v5.0.133最优化后: DVR RTMP to FLV, 500 streams, SRS CPU 35%, 912MB6. 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造已成了的效率困难的缺陷。

作者:春和

书名链接:__biz=MzA4NTQ3MzQ5OA==Wildmid=2649005701Wildidx=1Wildsn=85df053c78dda929d92f8285c8fe65ceWildchksm=87c75f30b0b0d6263f5d94d4569fa256105238aa1bc23b7ff323fa4625bb9f249d1437ce42fbWildmpshare=1Wildscene=23Wildsrcid=0217zlNwQFfuGuWLk8CIcCX7Wildsharer_sharetime=1676614132224Wildsharer_shareid=a96e9b09ebf11547090dd99009e597bb#rd

#音片段总共同开发##漂媒体##把地球的剧情讲给太阳系##编程#

丁桂儿脐贴和肠炎宁能同时用吗
髋关节疼痛用什么药
腱鞘炎止痛消炎有什么药
宁波试管婴儿需要多少钱
阿莫西林颗粒可以治咽炎吗
标签:性能
友情链接: