RISC-V开发板分布式编译FFmpeg

最近测试了FFmpeg在RISC-V架构CPU上的编译运行情况。测试用的开发板是赛昉VisionFive 2,具体配置如下:

RISC-V开发板分布式编译FFmpeg

在开发板上编译一次FFmpeg耗时约11分钟

$ time ./build_ffmpeg.sh

real    10m57.876s
user    22m27.586s
sys     2m27.434s

对应的编译配置如下:


configure --prefix=/home/quink/work/ffmpeg-ci/install \
  --cc=gcc --cxx=g++ \
  --extra-cflags=-I/home/quink/work/ffmpeg-ci/install/include \
  --extra-ldflags='-L/home/quink/work/ffmpeg-ci/install/lib' \
  --extra-libs='-lstdc++  -pthread -lm' \
  --pkg-config-flags=--static \
  --enable-libx264 \
  --enable-libx265 \
  --enable-libdav1d \
  --enable-nonfree \
  --enable-gpl \
  --enable-version3 \
  --enable-rpath \
  --enable-libxml2 \
  --enable-openssl \
  --disable-doc \
  --samples=/home/quink/work/ffmpeg-ci/ffmpeg-fate-sample \
  --ignore-tests= \
  --disable-stripping \
  --enable-vulkan \
  --enable-libdrm \
  --enable-libzimg \
  --enable-libuavs3d \
  --enable-libass \
  --enable-libdavs2 \
  --enable-libfreetype \
  --enable-libfontconfig \
  --enable-debug \
  --disable-optimizations

基本算是全量编译,还开启了不少第三方库。特别值得一提的是

  • 关掉了编译优化(disable-optimizations),如果开启优化,耗时会更长一些,特别是开启lto链接时优化
  • 关掉编译优化是为了方便个人开发调试,正常业务一定不要用disable-optimizations(看到太多业务上线用的FFmpeg关掉了汇编优化和编译优化)

再看FFmpeg fate(FFmpeg Automated Testing Environment)测试的耗时:

$ time make fate -j4

real    61m16.944s
user    220m6.735s
sys     6m51.073s

运行一次测试耗时一个小时

虽然fate测试耗时久,但我可以配置在空闲的时候运行。开发过程中反复编译是无法避免的,所以我要找个加速的方式。

我有两块板子,可以用distcc做个分布式编译。

分布式编译是个古老的技术,distcc首次发布是2002年。如今,分布式编译已经成了CI/CD的基建部分。

distcc的安装配置非常简单,可以参考各个发行版的wiki,例如https://wiki.gentoo.org/wiki/Distcc 

./configure --cc='distcc gcc' --cxx='distcc g++' ...

第一次测试结果:

real    9m14.739s
user    14m4.852s
sys     2m22.841s

提升少的可怜。观察server端的运行情况,几乎处于空闲状态,很少运行编译。

问题应该出在IO。测试两个机器的网络传输速度,不到100Mbps,且非常不稳定。

换了一个路由器,关掉distcc的日志,第二次测试结果:

real    8m52.195s
user    14m25.578s
sys     2m23.138s

两个设备分布编译耗时约9分钟,有提升,还是不太理想。client和server的CPU空闲时间太多,没有跑满。瓶颈可能在文件IO叠加网络IO。两个板子系统都是装在TF卡上的,大文件读写速度20MB/s。计划换成固态硬盘再测试下。

既然distcc提升有限,再加上ccache缓存试下吧。ccache和distcc一起使用见 

https://ccache.dev/manual/3.0.html#_using_ccache_with_distcc

ccache + distcc测试结果:

real    6m21.325s
user    8m15.273s
sys     2m23.632s

以上是运行一次configure + make。开发过程中一般不需要频繁执行configure,测试make clean + make的耗时:

real    4m48.702s
user    7m18.338s
sys     2m6.419s

全量编译一次在5分钟以内,算是可以接受的结果了。

短期期待固态硬盘对编译速度的提升,长期期待下RISC-V芯片的性能提升。十年前拿ARM当PC CPU是hacker行为,今天是司空见惯,或许RISC-V也可以

作者:quink
来源:Fun With FFmpeg
原文:https://mp.weixin.qq.com/s/opHv5Oipj9wzj1dtHIKTSg

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论