phoronix-test-suite,移植不支持的工具方法

邵华皓
2023-12-01

ps:系统ubuntu

PTS开发

一.PTS安装

1. 从官网下载官方的deb

      (http://www.phoronix-test-suite.com/?k=downloads)

2. 通过dpkg命令进行安装,安装之后会有依赖问题,一般通过sudo apt-get install -f命令可以解决

3. 执行which phoronix-test-suit输出为/usr/bin/phoronix-test-suite,则安装成功。

二..phoronix-test-suite文件夹介绍

2.1 生成.phoronix-test-suite目录

执行命令phoronix-test-suite gui,会生成.phoronix-test-suite目录

2.2 .phoronix-test-suite包含目录及文件

序号

类型

名称

功能

1

目录

download-cache

未知,空

2

目录

modules

未知,空

3

目录

modules-data

未知,空

4

目录

test-suites

未知,空

5

目录

xsl

未知,有数据

6

目录

openbenchmarking.org

zip文件,控制文件

7

目录

test-profiles

通过上面zip文件解压得来

8

目录

test-results

测试结果

9

目录

installed-tests

安装工具目录

10

文件

graph-config.json

html结果文件配置

11

文件

user-config.xml

用户配置

2.3 openbenchmarking.org目录介绍

包含三个文件夹:localptssystem。以及两个文件:pts.indexsystem.index。这里重点介绍pts文件夹和pts.index文件。

pts文件夹:其中包含很多zip文件。每一个zip文件对应一个测试工具,解压开通常会有四个文件(有些多几个文件),这里以netperf为例,包括:downloads.xmlinstall.shtest-definition.xmlresults-definition.xml

  这四个文件简单点来说:下载,安装,执行命令格式及参数,最后结果生成的格式。

  downloads.xml:代表下载文件,其中指示了netperf工具下载的网址、MD5值、工具大小等。

  install.sh:安装方法,在执行phoronix-test-suite install netperf的时候会执行这个脚本,这个脚本中包括解压安装netperf和执行(phoronix-test-suite run netperf)命令时对应的测试netperf命令有关。 

  test-definition.xml:其中包括工具名称、描述、版本、支持平台、测试时间以及执行(phoronix-test-suite run netperf)时和用户交互设置netperf参数。

  results-definition.xml:对应结果输出的格式,这个文件目前没有官方文档说明,只能猜其中意思。

   pts.index文件:想移植自己的工具进去,这是一个关键的文件。因为通过命令phoronix-test-suite list-tests查找,根据实验应该时识别的这个文件,但是每当联网的时候,执行上述命令就会上网更新这个文件,所以说在修改这个文件之后需要断开网络,再执行phoronix-test-suite list-tests,就可以看到自己的工具了。就可以通过phoronix-test-suite install命令进行安装,不然就算在文件中添加,也会表示识别不到这个工具。

   如何修改文件,根据文件格式添加unixbench说明:

"unixbench":{"title":"unixbench","description":"lzlzlzlzlzlzlzlz","test_type":"Processor","software_type":"Utility","status":"Verified","supported_platforms":["Linux"],"internal_tags":[],"test_extends":"","package_hash":null,"average_run_time":"396","last_updated":"1520174749","popularity":"53","versions":["1.0.1","1.0.0"]},

 

2.4 test-profiles目录

   test-profiles目录:据我的猜测就是通过上面所说的zip文件解压而来,每个工具对应一个目录。应该是再执行命令phoronix-test-suite gui后,下载zip,解压放到 test-profiles目录中。再移植自己工具时,我们就不需要提供zip,只需要提供工具对应的上述四个文件到test-profiles中。

2.5 test-results目录

   根据文件results-definition.xml输出对应的结果,由于没有官方说明,目前这个文件没有吃透,导致最后一步输出有很大的困难。

2.6 installed-tests目录

   执行phoronix-test-suite installed XXX,会安装工具到这个目录中,再installed-tests/pts/下面每一个工具对应一个目录。举例Netperf,执行phoronix-test-suite installed netperf命令,之后他会根据install.sh安装,生成installed-tests/pts/netperf目录和netperf脚本,这个脚本就是再phoronix-test-suite run netperf执行的时候调用的。

 

三.移植unixbench

 经过上面的分析以及了解,开始移植工作,总结几个步骤:

1. 修改installed-tests/pts

2. 修改test-profiles/pts

3. 修改openbenchmarking.org/pts.index

4. 断网,执行phoronix-test-suite list-tests

 3.1 修改installed-tests/pts

    1. 新建installed-tests/pts/unixbench。下载unixbench5.1.3.tgz放入。

    2. 注意必须是小写字母、数字组成。最好unixbench5.1.3.tgz里面文件夹带有版本号。

 3.2 修改test-profiles/pts

    新建test-profiles/pts/unixbench,在其中添加四个文件:downloads.xmlinstall.shtest-definition.xmlresults-definition.xml

 3.3 修改openbenchmarking.org/pts.index

添加unixbench对应格式的说明。确保pts能够识别到工具,这样才能安装。

 3.4 测试安装

   1. 断网,执行phoronix-test-suite list-tests,应该就可以看到pts/unixbench

   2. phoronix-test-suite run unixbench,显示安装没有报错,则移植成功。


四.命令介绍

4.1 安装命令

phoronix-test-suite installed pts/unixbench

   安装完PTS这款工具之后,我们第一步是下载对应的工具进行测试,当然如果没有联网,也是可以安装成功的,只需要新建installed-tests/pts/unixbench,下载unixbench5.1.3.tgz放入,这个方法是能够移植其他pts没有工具的基础。按照我的理解,执行命令时首先会查看installed-tests/pts/unixbench目录下有没有对应安装包,如果有则按照install.sh进行安装,如果没有则根据downloads.xml文件进行下载,再根据install.sh进行安装

    通过install.sh安装完成之后,还会根据install.sh脚本生成对应工具的测试方法。对应的测试方法就会放在installed-tests/pts/unixbench里面,一般就是以工具命名的一个脚本。

 4.2 查看命令

phoronix-test-suite list-tests

   上面移植的时候存在一个问题,当我们新建installed-tests/pts/unixbench。下载unixbench5.1.3.tgz放入,怎么知道pts是否识别到呢。这时我们需要修改openbenchmarking.org/pts.index,根据文件中的格式,添加对unixbench的支持,这里就不具体介绍格式了。之后就可以通过上述命令查看到自己添加的工具了。

 4.3 执行命令

phoronix-test-suite run pts/unixbench

通过上述两个步骤安装完成之后,我们需要进行测试,这时pts会根据安装时生成的脚本和test-definition.xml文件进行测试,生成脚本为测试主体,而test-definition.xml文件主要是输入命令参数。当命令执行成功之后,就会根据results-definition.xml生成对应的结果。


欢迎大家多多交流。

本文为个人原创,转发请标明出处,感谢!

 类似资料: