【华为云技术分享】Docker容器+Phoronix-Test-Suite测试X86和ARM的ffmpeg转码性能

【摘要】 如何使用phoronix-test-suite跑ffmpeg转码性能测试,主要测试X86和ARM的。中间使用Docker容器方便操作过程。

Phoronix Test Suite是一款性能测试软件,自带了各种CPU,内存,网络,系统等维度的测试用例。可以在Linux, Solaris, OS X, 和 BSD操作系统上进行benchmark测试。

不过虽然该软件集成了各式各样的测试软件,但是每个测试项都要联网下载。

我们后面简称PTS。

1      X86跑phoronix-test-suite

1.1      使用Docker启动Phoronix Test Suite

根据 PTS官网提示,直接下载docker镜像:https://www.phoronix-test-suite.com/?k=downloads

docker pull phoronix/pts

1.2      执行测试用例

启动pts容器:

docker run -it phoronix/pts

然后,会进入交互模式,可以敲

help

查询可以执行的命令。

由于我们要跑 ffmpeg 用例,所以需要先下载。

install pts/ffmpeg

这个时候如果联网正常,就可以下载好(实际上我这里是内网,连openbenchmarking.org总数出错,我单独补一章节记录怎么解决)。然后直接执行用例就行:

run pts/ffmpeg

这个时候就会出结果:

image.png

2      代理联网失败

我install的时候,各种失败。这里记录解决过程。

2.1      使用bash模式进入容器

先进入容器,然后手动启动pts shell。

docker run -it phoronix/pts /bin/bash

进入容器后,手动启动 pts shell

/phoronix-test-suite/phoronix-test-suite shell

2.2      设置代理

在pts 的shell交互模式下,敲:

network-setup

进入代理设置菜单。设置好了代理信息。

然后重新开始install。还是报 checksum 失败。

2.3      关闭Checksum校验

退出shell模式,设置关闭checksum校验。

export NO_FILE_HASH_CHECKS=1

然后重新启动 pts shell

/phoronix-test-suite/phoronix-test-suite shell

这个时候,再install的时候,就跳过checksum检查了。

这个时候,下载 ffmpeg 包还是失败。。。(不知道代理为什么不生效)

2.4      手动下载依赖包

再开一个Xshell的console窗口,进入刚才那个pts容器:

docker exec -it phoronix/pts /bin/bash

进入到 测试用例对应的目录:

cd /var/lib/phoronix-test-suite/installed-tests/pts/ffmpeg-2.8.0

设置代理:

export http_proxy=t00402375:[email protected]:8080

手动下载2个包:(参见https://openbenchmarking.org/innhold/db4065425d63a915c8d19fd8023b4c29125791de

(1)ffmpeg软件

curl http://ffmpeg.org/releases/ffmpeg-4.0.2.tar.bz2 -o ffmpeg-4.0.2.tar.bz2

(2)视频文件

curl http://samples.ffmpeg.org/V-codecs/h264/HD2-h264.ts -o HD2-h264.ts

下载好后。

再去pts shell里面,跑run pts/ffmpeg 终于可以了。

3      打包镜像,下次不用再联网下载了

对刚才成功跑通的Docker容器,重新打镜像:

docker commit -m "tsj" -a "tsj" aab0871167d7 phoronix/pts:ffmpeg

这样下次就不联网了,ffmpeg测试用例已经在镜像里面了。

docker run -it phoronix/pts:ffmpeg

然后进入shell

/phoronix-test-suite/phoronix-test-suite shell

直接跑:

run pts/ffmpeg

搞定。

3.1      自动化跑用例

如果不想使用shell交互模式,直接跑:

docker run --rm phoronix/pts:ffmpeg bash -c "echo -e 'n\n' | /phoronix-test-suite/phoronix-test-suite run pts/ffmpeg"

4      ARM版本的 Docker镜像

在pts仓库的issue里面有个跟踪:

https://github.com/phoronix-test-suite/phoronix-test-suite/issues/155

负责人说由于基础镜像的关系,ARM版本的Docker镜像就不提供了。

所以ARM版本的Docker镜像,需要自己打包。。

目前看,ARM上,直接下载软件包的方式(非Docker方式)跑更直接一点。

5      ARM环境下跑ffmpeg

(1)根据文档更新Ubuntu源:

参考华为镜像设置:https://mirrors.huaweicloud.com/

Ø  备份当前镜像源文件配置

cp -a /etc/apt/sources.list /etc/apt/sources.list.bak

Ø  下载新的镜像配置源文件

wget -O /etc/apt/sources.list https://mirrors.huaweicloud.com/repository/conf/Ubuntu-Ports-bionic.list

Ø  更新

apt-get update

(2)下载软件包:

根据官网资料:https://www.phoronix-test-suite.com/?k=downloads

curl http://phoronix-test-suite.com/releases/repo/pts.debian/files/phoronix-test-suite_9.4.1_all.deb -o phoronix-test-suite_9.4.1_all.deb

(3)安装依赖

直接安装pts会报错,说有些依赖软没有安装。比如:php-cli,php-xml等,所以我们要先安装依赖包。

apt-get install php-cli php-gd php-xml

(4)安装pts

dpkg -i phoronix-test-suite_9.4.1_all.deb

安装后,可执行文件 phoronix-test-suite 会自动放入 /usr/bin/ 目录。

(5)启动 pts shell

直接运行:

phoronix-test-suite shell

就可以了。(ps,国内网络下载超级慢。。。嫌慢的可以去香港region买ARM的机器跑。)

然后正常的安装测试用例,执行测试用例:

install pts/ffmpeg

run pts/ffmpeg

5.1      自动化跑用例

echo –e "n\n" | phoronix-test-suite run pts/ffmpeg

image.png

ARM的跑分性能一般般。不过我们要把价格因素考虑进去。

都是4U8G,X86是1.3元/小时,ARM是0.8元/小时。

下图是相同规格的X86的:

image.png

作者:tsjsdbd

发布了1110 篇原创文章 · 获赞 5495 · 访问量 121万+

猜你喜欢

转载自blog.csdn.net/devcloud/article/details/104966685