AviSynth网络分布式计算TCPDeliver使用笔记

AVS有一个功能似乎一直不太为人所知,那就是TCPDeliver——可以利用网络进行分布式运算,实现性能的提升。然而通过一下午的测试,发现要想利用这个功能实现性能提升,条件还是很多的。

介绍一下TCPDeliver。TCPDeliver由两部分构成——TCPServer和TCPSource。
TCPServer,顾名思义,功能是建立一个服务器,监听指定点口。
TCPSource用来连接TCPServer建立的服务器,取得服务器输出的视频。
两个函数的使用方法很简单,手册里的说明和例子也很详细,这里不再赘述。
通过这两个参数的连环使用,理论上可以实现无数台节点来进行处理,但其结果同样是显而易见的——随着节点数量的增加,计算效率必然呈现下降。当这个下降超过分布处理带来的性能提升的时候,整体效能势必不升反降,结果适得其反。

===================================
以下是测试
===================================
先介绍一下参与本次测试的三台电脑:
1.E8400(没有OC) + 2G DDR800 (1000M网卡)
2.T7200 + 2G DDR667 (1000M网卡)
3.赛扬2.4G + 512M PC150(100M网卡)
今天下午主要测试了两个项目:中复杂度脚本和高复杂度脚本。使用最简单的分工方式——一台电脑负责处理AVS脚本,另一台电脑负责用x264去压缩。也就是,将处理和压缩这两个部分分别交给两台电脑,实现效能上的提升。

首先我很天真地在3号机上运行了一个中等复杂度AVS脚本,然后,在1号机上通过TCPSource ("192.168.0.7",5415,"LZO")来接收视频,并送给x264压缩。
压缩1200帧片段10.80fps,甚至不如1号机单独运行来的速度高(15.00fps),整体速度不升反降。思考一下,这个似乎也在预料之内,因为两台机器的性能差距太大了,3号机很显然成了性能瓶颈,1号机一直处于等待状态。
吸取教训之后,我用2号机替代3号机(此时网络连接速度是1000M),进行同样的测试。这次两台电脑配合无间,取得了16.50fps的好成绩,超过单独运行1.5fps。

接下来在2号机上运行高复杂度脚本,在1号机上用同样的参数压缩,速度10.32fps,比1号机单独进行的11.47fps慢了1fps。

结论:
因为两个机器之间存在性能差,所以测试高复杂度AVS的时候,T7200的性能瓶颈一下子就显示出来了,速度甚至不如E8400单独运行。但是,不是T7200的绝对性能不够,而是AVS不支持双核,T7200的CPU占用率一直在49%。
所以,根据编码器的参数和AVS脚本的复杂程度的不同,运用TCPDeliver提升性能的条件也不尽相同。简单地说,要想用TCPDeliver后性能高于使用前,至少要保证服务器端输出fps要大于客户端编码器的处理能力才行。
此外还有一个瓶颈在于网络。100M网络理论传输能力大概在12.5MByte/s上下(实际上是到不了这个速度的)。而704×480@24fps的YV12无压缩数据量有11.6MByte /s左右,如果整体处理速度到达20fps以上,网络将成为新的瓶颈,这点是需要预防的。

话题:图像处理

AviSynth网络分布式计算TCPDeliver使用笔记有 2 条回应

    • zhzq674436
    • 09.05.15 07:43

    No.416 回复

    太神奇了吧 AVS居然有个功能 今天算是被“雷”到了grin

    • mfkof
    • 09.06.26 09:19

    No.422 回复

    真没想到AVS脚本能这么玩

发表回应

 
如果您是注册用户,请先登录。
昵称 (*)
E-Mail (*)
(不会公开)
网站
留言 (*)
悄悄话
有(*)标记的是必填项目。