APP下载

国产操作系统稳定性测试系统设计与实现

2021-09-22杨攀飞于子桐牟特

电子技术与软件工程 2021年13期
关键词:测试工具内存界面

杨攀飞 于子桐 牟特

(基础软硬件性能与可靠性测评工业和信息化部重点实验室工业和信息化部电子第五研究所 广东省广州市 510610)

1 引言

1.1 背景

在信息技术应用创新的大背景下,对自主、安全、稳定提出更高要求,操作系统是计算机软件和应用正常运行的必备基础条件,其稳定性与上下游软硬件可靠性正相关。操作系统稳定性是指在有异常输入或压力条件下,系统能够继续正确运行的程度,即当其上运行的应用、硬件层或设备驱动器错误时,操作系统拒绝或反应能力的指标。当前国产操作系统大多沿用Linux技术体系及成果,Linux作为宏内核的典型代表,除最基本的进程管理、线程管理、内存管理外,文件系统、驱动、网络协议等均在内核模块,优点是效率高,缺点是稳定性差,通过国产操作系统稳定性测试技术研究进而提升其稳定性是信息技术应用创新的重要工作。

1.2 研究现状

国产操作系统基于Linux 操作系统二次开发,通常采用同一个版本针对龙芯、飞腾等不同技术路线CPU特点和需求进行延伸定制,大部分模块功能稳定、重用性高,因此测试过程中易集中出现问题,导致多次回归。

目前针对国产操作系统稳定性测试主要使用开源Linux 操作系统测试工具,此类工具测试目标较为单一、缺乏集成测试功能,没有稳定的开发团队维护升级,运行环境需求也各不相同,针对不同版本的操作系统和脚本语言,无良好的操作界面,使用感不友好。

因此,通过自主开发、综合应用、引入完善开源软件测试工具,制定有效可行的测试计划、执行准确完整的测试用例,构建全过程管理的统一高效的自动化测试平台非常有必要,用以保证国产操作系统研发、使用和维护时的质量稳定性,满足建立完整的国产操作系统生态链的需要。

2 稳定性测试系统设计与实现

2.1 系统分析

根据国产操作系统特点,结合用户需求开发测试用例库,涵盖操作系统的不同模块,比如CPU、GPU、内存、I/O、网络等,并提供自动化和半自动化的测试接口,从而对国产操作系统进行自动化的稳定性测试及评价。

2.2 系统设计

操作系统稳定性测试工具采用MVC设计模式,模型,视图,控制器分离,可分为控制端、执行测试和文件系统三个部分。测试工具运行在控制端,包含测试配置模块、数据处理模块、和总控模块三个部分。操作系统稳定性设计流程图如图1所示。

测试参数配置模块主要提供对单独模块测试参数的配置,可通过修改测试参数配置实现自定义测试。配置项与测试工具相关,比如内存测试提供的配置项有数组大小,测试次数,编译优化,多线程等,也可根据需要自由配置最为合适的参数组合。

数据处理模块主要负责收集测试中生成的测试数据,实时更新测试进度信息,并对测试数据做进一步分析处理,计算测试数据的均值,最大值,变异系数等,通过熵值法得到该测试下各项性能指标的权重,综合计算最终稳定性,并根据稳定性区间等级确定该测试的稳定性等级。

总控模块负责启动整个系统,控制整个测试过程。测试前,读入系统参数更新界面中的相关信息,并根据测试参数配置编译并启动测试脚本;测试中,对测试进度进行监控,得到实时信息;测试结束后,对测试过程产生的数据做进一步分析,得到测试模块的稳定性。

2.3 系统实现

国产操作系统稳定性测试系统主要采用Java语言实现,具备平台可移植性;各测试脚本具有配置界面,便于在不同的条件下对国产操作系统稳定性进行测试;各指标的稳定性通过变异系数计算求得,该系数广泛应用于诸多领域中,本系统将该系数移植到国产操作系统的稳定性评估中,具有一定的含义;为了综合不同的指标,采用熵值法对不同指标分配权重,更加客观。

在功能实现方面,操作系统稳定性测试工具支持以下功能:

(1)测试参数配置,对于单独模块的测试,可通过修改测试参数配置实现自定义测试,配置项和具体使用到的测试工具相关。

(2)稳定性分析,通过调用第三方内存测试工具,得到一系列的测试数据用于稳定性分析,当有多个指标时,采用熵值法进行综合评估。

(3)记录历史测试结果,当测试完成时,会将本次测试的一些重要信息记录在文件中,可用于对比分析。

(4)选择测试模块,综合测试模块中包含各个模块的测试,用户可根据需要选择不同的测试组合进行综合测试。

(5)上传文件,选择上传待分析的测试数据,一般为文本文件。

(6)稳定性分析,首先会对上传的文件做校验,检查其文件内容格式是否正确,再对文件内容做进一步分析,得到各指标值。

(7)支持测试结果的持久化保存及管理。

在界面及具体测试模块实现方面,介绍如下:

2.3.1 系统主界面

系统主界面如图2所示,通过选项卡进入不同模块的测试界面。

2.3.2 CPU稳定性测试模块

CPU稳定性测试选用的工具为sysbench,其对CPU的测试是在指定时间内,循环进行素数计算。编程公式:对正整数n,如果用2到根号n之间的所有整数去除,均无法整除,则n为素数。

CPU稳定性测试模块界面如图3所示,主要包括四个部分,分别是参数配置栏,输出控制台,显示测试结果的结果集以及趋势图部分。

参数配置部分包括了sysbench工具几个主要的测试参数,其含义分别如下:

(1)素数个数上限(cpu-max-prime):若设置为3,则表示2、3、5(这样要计算1-5共5次);若设置为10,则表示2、3、5、7、11、13、17、19、23、29(这样要计算1-29共29次);默认值为10000。

(2)线程数(threads)若设置为1,则sysbench仅启动1个线程进行素数的计算;若设置为2,则sysbench会启动2个线程,同时分别进行素数的计算;默认值为1。

(3)运行时间(time,单位秒)若设置为5,则sysbench会在5秒内循环往复进行素数计算,从输出结果可以看到在5秒内完成了几次,比如配合--cpu-max-prime=3,则表示第一轮算得3个素数,如果时间还有剩就再进行一轮素数计算,直到时间耗尽。每完成一轮就叫一个event;默认值为10;相同时间,比较的是谁完成的event多。

(4)event上限(events)若设置为100,则表示当完成100次event后,即使时间还有剩,也停止运行;默认值为0,则表示不限event次数;相同event次数,比较的是谁用时更少

(5)测试次数,该参数用来控制一共跑几轮上述配置的测试,用于做稳定性分析。

2.3.3 GPU稳定性测试模块

GPU测试模块采用的测试工具为glmark2,默认在使用该工具时调用了如下几个测试项:buあer,build, bump,clear,conditionals,desktop,function。

由于测试项已经采用默认的了,因此参数配置主要包括两项,单项测试时长以及测试次数,主界面如图4所示,单项测试时长是指每个测试项测试的时间,因此不考虑初始化等其他因素,一次完成的测试为单项测试时长的七倍。

2.3.4 内存稳定性测试模块

内存稳定性测试界面如图5所示,大致可分为3个部分,分别为上部的参数配置部分,中间的测试结果显示部分,底部为测试管理部分。下面分别对这三部分进行简述。

测试人员可根据需要对测试参数进行自定义修改,各参数含义如下:

数组大小:内存测试过程中,使用的数组大小,数组占用内存应至少为CPU最高级缓存大小的4倍。

测试次数:内存测试执行的次数。

O3编译优化:编译测试脚本时是否启用O3优化,优化级别分为O0、O1、O2、O3、Os,O0不做任何优化,是默认的编译选项;O1提供基础级别的优化,会消耗较少的编译时间,它主要对代码的分支,常量以及表达式等进行优化;O2提供更加高级的代码优化,会尝试更多的寄存器级的优化以及指令级的优化,它会在编译期间占用更多的内存和编译时间;O3则在O2的基础上进行更多的优化,例如使用伪寄存器网络,普通函数的内联,以及针对循环的更多优化,提供最高级别的代码优化,线上发布时一定要用O3;Os相当于O2.5,是使用了所有-O2的优化选项,但又不缩减代码尺寸的方法。

多核测试:是否启用多核执行测试。就是利用CPU两个或多个计算引擎(内核)进行测试,核心数就代表“劳动力”,多核测试可以更好地处理多进程、多线程的任务。

图2:操作系统稳定性测试系统主界面

图3:操作系统稳定性测试系统CPU测试界面

图4:操作系统稳定性测试系统GPU测试界面

2.3.5 I/O稳定性测试模块

I/O测试采用的测试工具为iozone,是一个文件系统的benchmark工具,可以测试多种模式下文件系统的读写性能。测试时,设置的测试文件大小一定要大于系统内存(最佳为内存的两倍大小),否则linux会将读写内容进行缓存,导致数值不真实。

iozone常用的配置参数如下:

(1)-a全面测试,自动增加块大小进行多次测试。

图5:操作系统稳定性测试系统内存测试界面

图6:操作系统稳定性测试系统I/O测试界面

图7:操作系统稳定性测试系统其他测试界面

(2)-i N用来选择测试项,比如Read /Write /Random。比较常用的是0 1 2,可以指定成-i 0 -i 1 -i2,各数字对应的测试模式如表1所示。

(3)-r block size 指定一次写入/读出的块大小。

(4)-s file size 指定测试文件的大小。

(5)-f filename 指定测试文件的名字,完成后会自动删除(这个文件必须指定在待测硬盘中)。

(6)-F file1 file2...指定多线程下测试的文件名。

参数配置界面如图6所示,可提供2个常用预设测试选项,除此之外可以通过自定义,手动在文本框中输入测试命令;测试文件这一栏为测试文件所在的路径,比如默认测试路径为/tmp,在测试过程中就会在该路径下创建一个testfile用于测试,测试完毕后,会自动删除;测试次数即指定运行多少次上述配置的测试,用于对稳定性进行评估。

图8:操作系统稳定性测试系统综合评估界面

表1:测试模式

2.3.6 其他测试模块

其他测试主要用于分析数据的稳定性。主界面如图7所示。数据需按格式要求,比如第一行表示横纵坐标轴,第二行对应下面各列数据的含义。当提供的文件格式不正确时系统会报错,当提供文件格式正确时则会处理该文件中的数据。

2.3.7 综合评估模块

综合评估模块即对前述四个模块分别进行默认配置的测试,最终将所有测试结果进行综合,通过熵值确定各个指标的权重并评价,得到最终的综合稳定度以及稳定等级。其主界面如图8所示。

3 系统运行效果与分析

在完成测试系统代码的编写及调试后,并在配置了龙芯、飞腾、申威、鲲鹏、兆芯等主流硬件平台及麒麟操作系统、UOS操作系统等国产主流操作系统的计算机中测试,对测试中出现的问题进行修改和优化,使测试系统能够稳定运行并提供可靠的测试结果。如下内容为对运行的效果进行描述和分析。

3.1 运行效果

以测试GPU为例,描述测试运行过程如下:

(1)安装初始化:根据测试系统不同测试模块所依赖的环境安装相关依赖包,然后安装测试系统安装包,测试系统已集成为一个jar包,前期运行环境及安装部署完成之后,进入.jar文件或.sh文件路径下,通过终端使用命令java –jar StTestTool.jar或./StTestTool.sh即可运行。

(2)测试配置:可配置测试时使用的测试配置,也可使用默认的测试配置。

图9:GPU测试结果图

(3)执行测试:图9为一次测试示例,在结果集中显示了每次测试完成后得到的各个测试项的测试结果,该数值为FPS,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。FPS是测量用于保存、显示动态视频的信息数量。每秒钟帧数越多,所显示的动作就会越流畅。右侧变化图是各个测试项的每次测试结果,对测试结果进行直观显示。最终的测试结果即稳定性显示在最下方,有稳定性数值及其对应的稳定性等级。

4 总结

针对国产操作系统设计并现了一套综合测试系统,可对适配不同厂商的操作系统,具备良好的通用性,界面操作简便,极大地提高了测试效率,无需测试人员编写测试脚本,降低了测试难度,弥补了对国产操作系统进行综合测试区域的空白,为对国产操作系统进一步测试研究打下了基础。

猜你喜欢

测试工具内存界面
外部高速缓存与非易失内存结合的混合内存体系结构特性评测
国企党委前置研究的“四个界面”
“春夏秋冬”的内存
Http并发连接测试工具
基于FANUC PICTURE的虚拟轴坐标显示界面开发方法研究
手车式真空断路器回路电阻测试电流线接头研究
人机交互界面发展趋势研究
手机界面中图形符号的发展趋向
福禄克推出先进的连接式测试工具系统
基于内存的地理信息访问技术