查字典论文网 >> 浅谈一种在嵌入式内核中测试exfat文件系统性能的方法

浅谈一种在嵌入式内核中测试exfat文件系统性能的方法

小编:马盛林

随着嵌入式技术的发展,利用各种开源的嵌入式平台来开发电子产品,已经成为大部分公司的首选。要使运行嵌入式系统的电子产品实现音频、视频、图片等多媒体信息的存储及处理,几乎离不开文件系统的支持,那么在嵌入式平台下开发各种文件系统也是必然。其中具备优越性能的exfat 文件系统由于微软的不开源性,也常常需要在内核中自主开发。

在嵌入式系统中,如linux、ucos,实现exfat 文件系统的功能已经不难。嵌入式开发者在具备嵌入式开发经验及exfat 文件系统的知识基础上,即可完成。但是在实现了exfat 文件系统的功能后,要如何验证其性能却不是那么容易。

1 测试工具的局限性

嵌入式软件由于内存有限、实时性、开发工具昂贵等特点,测试非常困难。嵌入式软件从下到上,分为硬件层、驱动层、内核层、应用层,而内核层由于结构复杂、代码庞大,是嵌入式软件中最难测试的部分,本文中待测的exfat 文件系统正处于内核层。虽然嵌入式软件有一些集成的测试软件,但是一般的测试软件只能用于标准的嵌入式内核,只能测试规定的功能,不能进行二次开发,而对于很多嵌入式产品来说,嵌入式内核源码需要修改,也需要测试更多特定的功能,这就需要特定的测试方式。

因此本文要探索的是在内核层的文件系统的测试方式。按照测试方式来分类,该测试属于白盒测试的范畴。

2 测试体系

文件系统是一种存储系统,对于存储系统来说,需要关注的性能有访问接口性能、数据读写性能、聚合带宽、最大并发数、任务数、最大吞吐率、可扩展能力等,本文中的测试任务是测试嵌入式系统内核层文件系统的性能,因此需要测试的性能也相对单一,着重测试访问接口性能和数据读写性能。其中访问接口性能是指各个操作元数据和数据的API 返回速度,单位为API 操作数/s。以Open 函数为例,在应用层新建文件,调用Open函数,就可以通过内核文件函数FS_Open 函数调用驱动层函数,从而调用硬件,完成具体的功能。那么该API的返回速度指发送Open 命令到返回成功所花的时间;数据读写性能是指测定不同文件大小,数据块大小和读写比例的数据读写性能,单位为MB/s,以Read 函数为例,预先在系统中插入存储设备,调用Read 函数来读取该存储设备中的特定大小的文件,通过文件的大小除以读取的时间即可获得读取的速度;当然也可以用time 命令来测试时间,手动去计算速度,测试代码如下:

#define size 1024*1024*200

#define LEN 1024

#include

int main()

{

FILE *fp1;

char *buf=new char[LEN];

int i,j;

fp1=fopen(data.in,rb

for(j=0;j1024*500;j++)

{

fread(buf,1024,1,fp1);

}

printf(ok!/n

fclose(fp1);

}

综上所述,测试体系如下所示:其中应用层的测试代码作用是调用相关的APP 函数,内核层对应函数指的是exfat 文件系统的功能函数,驱动层函数指的是与硬件相连的操作函数。

Exfat 文件系统的接口函数有:

unsigned int fsapitbl[]={

(unsigned int)FOpen,

(unsigned int)FClose,

(unsigned int)FRead,

(unsigned int)FWrite,

(unsigned int)GetLength,

(unsigned int)GetTime,

(unsigned int)ConvertName,

......

};

针对所有的APP 都需要完成接口性能测试,测试其响应时间以及功能的正确性;针对包含Read 和Write的APP 还需要完成读写性能测试,测试其读写速度,并且针对不同的存储设备,不同的文件大小要有不同的测试数据。对于存储系统的其他测试性能,需要联合整个嵌入式系统来测试。

3 测试数据

在ucos 嵌入式平台上测试exfat 的读写性能所得。其中ReadDIO 指用DirectIO 的方式来完成读操作,速度比一般的Read 更快,当然针对不同的应用需求,可能会对内核文件系统系统进行不同的修改,测试时要根据文件系统需求文档和设计文档来设计测试样例。

4 测试结果

通过测试数据的分析,可以看出本文提出的测试方法可以快速全面地测试内核层exfat 文件系统的性能。虽然本文提出的测试方法目前只针对exfat 文件系统,但因为exfat、fat、ntfs 等文件系统基本接口APP 的类似性,本问提出的测试方法也可以拓展到其他文件系统的测试。不过本文的测试方法还未实现全自动的测试,这还需要后续通过配置脚本来实现。

热点推荐

上一篇:注重加强非计算机专业大学生计算机应用能力的培养

下一篇:如何对幼儿进行德育教育论文 幼儿园关于德育教育之类的论文

最新廉政风险防控心得体会实用 银行风险防控心得体会(优秀8篇) 2023年应急物资储备工作计划(49篇)