【摘要】 如何使用phoronix-test-suite跑ffmpeg转码性能测试,主要测试X86和ARM的。中间使用Docker容器方便操作过程。
Phoronix Test Suite是一款性能测试软件,自带了各种CPU,内存,网络,系统等维度的测试用例。可以在Linux, Solaris, OS X, 和 BSD操作系统上进行benchmark测试。
不过虽然该软件集成了各式各样的测试软件,但是每个测试项都要联网下载。
我们后面简称PTS。
1 X86跑phoronix-test-suite1.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
这个时候就会出结果:
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:xpasswordx@172.18.xx.xxx: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
ARM的跑分性能一般般。不过我们要把价格因素考虑进去。
都是4U8G,X86是1.3元/小时,ARM是0.8元/小时。
下图是相同规格的X86的:
作者:tsjsdbd