当前位置:文档之家› 基于QT 的Linux 基准测试GUI 的设计与实现

基于QT 的Linux 基准测试GUI 的设计与实现

2017年第5期28

方案与应用

信息技术与信息化

基于QT的Linux基准测试GUI的设计与实现

柳玉巧* 李传忠 吴登勇 陈亮甫

LIU Yu-qiao LI Chuan-zhong WU Deng-yong CHEN Liang-fu

摘 要 Linux 操作系统具有安全性、可靠性等特点,支持多种平台,因此有广泛的应用领域。计算机系统的性

能对用户来说非常重要,会影响用户的决策,通常使用相关的基准测试对计算机操作系统的性能进行测试。本文研究了常用的Linux 基准测试工具以及QT 的相关知识,设计并实现基于QT 的Linux 基准测试GUI,实现了Linux 基准测试的可视化操作。

关键词 QT;Linux 基准测试;性能测试

Abstract Linux operating system has many characteristics, such as security, reliability, support for multiple platforms, thus it has a wide range of applications. The performance of computer operating system is very important for users, and it will affect users' decisions, then we usually test the performance of operating system by benchmarks. This paper studies the commonly used Linux benchmarks and QT knowledge, then designed and implemented Linux benchmark GUI by QT. The GUI realizes human –computer interaction. Key words QT;Linux benchmark;performance test

doi:10.3969/j.issn.1672-9528.2017.05.004

* 山东超越数控电子有限公司 山东省特种计算机重点实验室 山东济南 250000

0 引言

操作系统的性能对用户或者开发者来说非常重要,因此需要对操作系统进行性能测试。性能测试是评价操作系统性能的重要手段。通过性能测试,可以评估操作系统的综合能力、验证系统可靠性、识别系统中强弱点、为系统调优提供依据等[1]。性能测试的结果也是用户选用操作系统的重要依据。

影响操作系统性能的因素很多,通常有:执行时间、计算速度、系统吞吐量、CPU 利用率、指令执行数、浮点运算数、网络传输速率、延迟、带宽、系统开销、服务器相应速度、图形处理能力等

[2]

。不同的测试目标需要的基准测试也不同,

其中,基准测试(Benchmark)是指利用基准程序系列对系统进行测试,同时给出相应的技术性能指标,通过对技术性能指标进行分析比较,进而确定系统的优缺点。

QT 是一种跨平台的应用程序开发框架,具有较高的可移植性、可扩展性。强大的跨平台性使其成为开发可视化软件的主要解决方案,在Linux 系统中有广泛的应用,也是许多国产操作系统的开发工具选择。

Linux 系统的基准测试基本上都是通过命令实现的,对于普通的用户来说操作比较困难。通常来说,测试结果是直接显示在命令行界面里,不便于结果保存、查看与使用。

针对以上情况,开发基于QT 的Linux 基准测试GUI 有重要的现实意义。将多种基准测试项目集成在图形用户界面中,通过该图形界面用户可以选择基准测试项目、保存测试数据并查看测试数据。1 Linux 操作系统性能测试

本文主要研究系统综合处理能力、内存性能、硬盘读写性能、系统的2D 性能。下面介绍如何进行测试。1.1 系统综合处理能力

系统的综合处理能力代表了操作系统的整体性能,选择Unixbench 基准测试工具来测试系统的综合处理能力。

Unixbench 属于微观基准测试程序,它主要从CPU 浮点运算能力、以不同缓冲区大小拷贝不同大小文件、管道吞吐量、进程生成速度、系统调用开销等方面来测试Linux 相关性能[3]。1.2 内存性能

内存是影响Linux 性能的主要因素之一。内存资源会直接影响系统的使用性能,其性能指标包括内存总线数据宽度、

方案与应用信息技术与信息化

不同数据模式下读写操作的延迟和带宽等[2]。内存性能可以通过stream进行测试。stream是业界广为流行的综合性内存带宽实际性能测量工具之一,具有良好的空间局部性,支持Copy、Scale、Add、Triad四种操作[4]。

1.3 硬盘读写性能

磁盘操作速度的快慢会直接影响到系统的性能。决定磁盘性能的因素有:I/O总线数目和带宽,磁盘通道的数目和带宽,磁盘的性能(转速、寻道时间、cache大小等)等[2]。硬盘的读写性能可以采用Iozone基准程序测试。Iozone是一个文件系统的benchmark工具,可以测试Read、write、re-read、re-writ等不同的模式下的硬盘性能[5]。

1.4 图形处理能力

由于操作系统的图形处理能力在使用中越发重要,用户也很关心系统对显示器进行图形输出时的性能。显卡性能、CPU速度等都会影响系统图形处理能力。测试系统图形处理能力时要重点考虑:点与线的描绘、图形翻转滚动、输出文字、绘制并填充平行四边形、圆形等。

系统的二维图形处理性能可以通过x11perf工具进行测试。x11perf是一个测试xserver的图形性能工具,可以测试各种显示分辨率的性能,有画点、画直线、画平行四边形性能等测试。

系统的三维图形处理能力可以通过系统自带的glxgears 进行测试。

2 系统设计与实现

系统基于Ubuntu 12.04系统,使用QT4.8.6、QtCre-ator2.5进行开发。

2.1 系统组成

系统主要由基准测试模块与测试数据查询模块组成。

2.1.1 基准测试模块

测试模块主要完成系统性能测试的功能。用户可以选择需要的测试项目,然后进行测试;用户可以选择“一键测试”,即进行所有测试。为了方便用户收集测试数据,测试文件最终会保存在桌面上,方便用户使用鼠标操作。

2.1.2 测试数据查询模块

测试结果查询模块主要实现测试数据的查阅。测试完成后,用户可以选择测试项目,然后查看测试结果。此外,用户也可以自行选择需要查看的测试结果文件。

2.2 系统功能实现

在实现系统功能的过程中,主要完成的工作如下:

(1)编写基准程序的测试脚本并在QT下调用;

(2)调用QT的信号与槽机制,完善系统功能界面;

(3)系统GUI界面;

2.2.1 测试脚本编写与调用

由于测试软件的实现需要测试脚本,因此要编写各个测试项的测试脚本。本文涉及到的测试基准程序有:unixbench、stream、iozone、x11perf。因此需要实现相关的测试脚本。

以x11perf为例,脚本内容如下:

#!/bin/bash

date

./x11perf -dot >> /home/test/Desktop/x11perf && ./x11perf -rect100 >> /home/test/Desktop/x11perf &&

./x11perf -ellipse100 >> /home/test/Desktop/ x11perf &&

./x11perf -line100 >> /home/test/Desktop/x11perf &&

./x11perf -circle100 >> /home/test/Desktop/ x11perf &&

./x11perf -ellipse100 >> /home/test/Desktop/ x11perf

每次测试前都会执行date命令,表明测试时间。测试结果保存在桌面的x11perf文本中。与x11perf脚本类似,编写unixbench、stream、iozone的测试脚本。

通常shell脚本是在终端里运行的,不便于用户操作。因此,在GUI程序中,可以通过button来运行shell脚本。

QT调用shell脚本的常用方法有:

(1)system(“/opt/test”);

(2)QProcess::execute(“/opt/test”);

(3)QProcess *pro=new QProcess; pro-start(“/ opt/test”);

其中,第一种方法是通过调用Linux C函数库中的sys-tem(const char *string)来实现脚本的调用,第二种和第三种方法用到了QProcess类。QProcess是QT下执行shell 或者外部程序的类,是QIODevice的派生类。由于前两种方法会阻塞进程,所以本文选择使用第三种方法。

因此在软件实现过程中,在button的click事件中实现shell脚本的调用:

void Widget::on_pushButton_clicked()

{

…………

QProcess *proc=new QProcess;

proc->start(“/opt/x11perf.sh”)

………….

2017年第5期29

2017年第5期30

方案与应用

信息技术与信息化

}

在QT 中实现shell 脚本调用需要使用QProcess 类。2.2.2 QT 的信号与槽机制

系统界面设计完成后,就需要实现界面的功能,本系统中主要是单击按钮进行的相关操作。在实现这些功能的过程中主要会用到信号与槽机制。

信号与槽是QT 的核心机制,主要应用于对象之间的通信。当一个特定事件发生的时候,一个信号被发射,并由一个被称作槽的函数来处理这一信号[6]。QT 窗口部件有很多预定义的信号和槽,调用预定义的信号和槽需要connect 语

句:connect(ui->m_unixbench,SIGNAL(-clicked()),this,SLOT(on_unixbench_clicked ()))。2.2.3系统GUI 界面

系统主要界面有两个tab 组成,分别实现系统的两个功能模块。系统界面如下图1、图2所示

.

1 基准测试模块

图2 结果查询模块

另外,由于系统中有中文内容,因此需要解决中文乱码问题,具体代码如下:

QTextCodec *codec = QTextCodec::codecForName(“GB2312”);

QTextCodec::setCodecForLocale(codec);QTextCodec::setCodecForCStrings(codec);QTextCodec::setCodecForTr(codec);3 小结

Linux 基准测试是评价操作系统性能的重要方法,但对于使用者来说,使用命令进行测试不够人性化,因此开发Linux 基准测试软件有重要意义。由于QT 具有跨平台性强、可移植性强等优点,所以选择QT 作为Linux 基准测试GUI 的开发工具。基于QT 的Linux 基准测试GUI 让使用者通过图形用户界面进行操作,可用性强,并且提供用户选择查看测试结果的功能。另外,软件将测试结果保存在文本文件里,方便用户对数据进行积累以便后续的分析。

参考文献

[1]周晓宇. Linux 操作系统性能评测与测试指标浅析[J].计算机光盘软件与应用,2012,1:50-51.

[2]师劲松,刘爱芳. Linux 操作系统性能评价方法[J].微型电脑应用,2001,17(1):15-19.

[3]肖鹏. Linux 桌面操作系统性能评测[D].长春:吉林大学,2004.

[4] h t t p ://b l o g.c s d n.n e t /m a r a y /a r t i c l e /d e -tails/6230912

[5] https://www.doczj.com/doc/0e11609902.html,/view/3502720.htm

[6]朱吉佳,蔡家麟. 基于Qt 的业务监控系统界面设计与实现[J].计算机技术与发展,2008,18(3):237-239.

(收稿日期:2017-03-02)

相关主题
文本预览
相关文档 最新文档