一种针对Linux文件系统的性能测试方法

文档序号:6370454阅读:335来源:国知局
专利名称:一种针对Linux文件系统的性能测试方法
技术领域
本发明涉及开源操作系统技术领域,尤其涉及针对Linux文件系统的性能测试方法。
背景技术
目前,针对Linux文件系统的性能测试方法主要是基准测试方法。所谓基准测试就是通过设计科学的测试方法、测试工具和测试系统,实现对一类测试对象的某项性能指标进行定量的和可对比的测试。基准测试工具大体分为三类Micro_benchmarks (即微观基准测试工具)、Macro-benchmarks (宏观基准测试工具)和Replaying traces (可重放跟踪文件)。Linux文件系统的Micro-benchmarks测试主要针对文件系统某一个或多个具体的操作性能进行测试,其测试负载通常由不同类型的操作组成,并以此来凸现文件系统某一方面或者某些方面的特征。Micro-benchmarks测试的优点是能从微观的角度帮助用户了解文件系统某些特点方面的性能,且测试结果容易分析和理解;但存在的主要问题是测试覆盖率低;硬件上的微观性能难以反映文件系统的真实工作性能。Linux文件系统的Macro-benchmarks测试是通过模拟文件系统的真实工作负载来对文件系统的综合性能进行评估。这种测试方法的目标是尽可能真实地产生符合文件系统实际行为的测试负载。Macro-benchmarks测试的优点是能从宏观的角度确定合适的工作量来模拟有代表性的负载和用户作业;但也存在如所模拟的应用负载并不是用户所关心的负载、工作负载不能灵活配置、默认负载过于陈旧、针对的Linux文件系统类型过于单一等问题。Linux文件系统的Replaying traces测试收集到现实负载下的文件系统操作日志记录,并按照一定格式记录在trace文件中,然后在测试时按照收集的trace文件中的跟踪记录重播程序向文件系统发出1/0请求,从而对文件系统的真实应用行为进行性能评估。Replaying traces的目标与Macro-benchmarks类似,都是产生能充分反映真实应用环境的工作负载。但是由于它们需要一个权威的机构对其进行统一存储管理,包括录制、发布、存储、使用说明等都应该有统一的标准的管理,就使得它们的使用变得复杂和繁琐。

发明内容
本发明提供了一种针对Linux文件系统性能进行评估的方法,有效解决了当前针对Linux文件系统基准测试工具中存在的测试覆盖率低、可扩展性差、难以反应文件系统的真实工作性能的问题。本发明所采取的技术方案是一种针对Linux文件系统的性能评估方法,该方法从三个维度来对Linux文件系统的性能进行评估,具体包括微观读写带宽测试,通过模拟多个10操作的应用场景对Linux文件系统微观读写带宽进行测试;
事务操作吞吐量测试,通过基于随机概率的事务交叉循环操作方式对Linux文件系统的文件操作吞吐量进行测试;宏观典型应用模拟测试,通过基于多线程的可扩展负载模型构建方式对典型应用场景进行模拟从而评估Linux文件系统的真实工作性能。与现有技术相比,本发明的优点是(I)本发明针对微观读写带宽测试,对常用的读写测试点进行了扩充,有效提高了测试覆盖率。(2)本发明针对事务操作吞吐量的测试,设计了丰富的可扩展测试负载配置参数和丰富的指标集,并采取基于随机概率的事务循环交叉操作方式来模拟现实应用中的文件操作行为。有效提高了测试负载的可扩展性和测试结果的真实性与可对比性。(3)本发明针对宏观典型应用的模拟测试,采取了基于多线程的可扩展负载模型构建方式来模拟文件在实际应用中的真实工作负载,在保证了负载的现实性同时也提高了负载的可扩展性。


图I是本发明的针对Linux文件系统的事务操作吞吐量测试的实施流程图。图2是本发明的针对Linux文件系统的宏观典型应用模拟测试中的网络代理应用默认测试负载。图3是本发明的针对Linux文件系统的宏观典型应用模拟测试中的网络代理应用模拟测试流程图。
具体实施例方式本发明是一种针对Linux文件系统的性能评估方法,该方法从三个维度来对Linux文件系统的性能进行评估,具体包括微观读写带宽测试,通过模拟多个IO操作的应用场景对Linux文件系统微观读写带宽进行测试;事务操作吞吐量测试,通过基于随机概率的事务交叉循环操作方式对Linux文件系统的文件操作吞吐量进行测试;宏观典型应用模拟测试,通过基于多线程的可扩展负载模型构建方式对典型应用场景进行模拟从而评估Linux文件系统的真实工作性能。一、微观读写带宽测试对于微观读写测试场景的设计主要分为6个步骤。具体描述如下步骤I :选取微观测试点。需要对IO操作的发生规律进行统计,包括读写位置选取、读写文件的存在与否等,并在此基础之上建立相应的存取模型。本发明选取顺序读写、随机读写、倒序读、跳跃读、写与覆盖写、内存映射读写六种存取模型对文件系统的微观读写操作性能进行测试。并针对不同的存取模型了设计了 12个微观测试点来从不同的角度对Linux文件系统的读写性能进行测试。如表I所示表I、读写方式测试操作种类简要介绍
Read顺序读文件
_Re-read顺序读最近读过的文件
顺序1实与Write顺序写一个新文件
Re-wrtie顺序写一个已存在文件
Random-read随机读已存在文件随机读写Random-write随机写已存在文件
Random-mix读写两种方式随机混合操作·反向读Backwards-read反向读已存在文件
跳跃丨卖Stride-read跳跃读已存在文件
写与繼盖写Record-rewrite写与覆盖写已存在文件
Mmap-read通过内存映射机制读火文件
内存映射读写--z-
Mmap-write通过内存映射机制巧大文件如表I所示,顺序读写存取模式又分为四个测试操作场景,分别为ReacURe-read、Write和Re-write ;其中,Read是测试顺序读一个已存在的文件的性能,Re-read是测试对最近读过的一个文件进行再次读取的性能,Write是测试向一个新文件进行数据写入的性能,Re-write是测试向一个已存在的文件进行数据写入的性能。如表I所示,随机读写存取模式又分为3个测试操作场景,分别为Random-read、Random-write、Random-mix ;其中,Random-read是指测试从一个已有文件的随机偏移量处进行数据读取的性能,Random-write是指测试向一个已有文件的随机偏移量处进行数据写入的性能,Random-mix是指测试对文件进行数据读取和数据写入随机混合操作时的性能。如表I所示,内存映射读写存取模式又分为2个测试操作场景,分别为Mmap-read和Mmap-write ;其中,Mmap-read是测试通过内存映射机制对文件进行数据读取的性能,Mmap-write是测试通过内存映射机制对文件进行数据写入的性能。步骤2:配置测试负载在测试开始之前,用户需要指定测试的文件大小上下限和数据块大小上下限,其中数据块大小的上限需低于或者等于文件大小的下限。测试的过程则按照所设置的文件和数据块大小的上下限进行双重循环测试,用以反映不同文件大小和不同数据块大小下的读
写性能差异。步骤3 :测试初始化按照本轮测试的测试文件大小完成初始化操作,可包括创建文件、生成文件内容、生成随机节点、生成待写入内容等。不同的测试操作对应的测试初始化操作不同。如顺序读写模式中的Read是测试对已有文件进行顺序读取的性能,需要进行初始测试文件的创建以及测试文件内容的生成。步骤4 :执行单轮测试流程启动测试监控,按照单轮测试的文件大小和数据块大小执行相应的测试操作。如Read测试是按照本轮测试所设置数据块大小将测试文件的内容顺序读入缓冲区,直至数据读取完毕。步骤5 :统计单轮测试带宽停止测试监控,统计本轮测试下的单位时间内的读写数据量,并记录相应文件大小和数据块大小。步骤6 :双重循环控制单轮读写测试执行流程结束后,将检查本轮测试的数据块大小是否达到上限,如果没有达到上限,则将数据块大小增倍,测试文件大小保持不变,转到步骤4启动下一轮测试;如果本轮测试数据块大小已经达到上限,则检查本轮测试文件大小是否达到上限,如果没有达到上限则测试文件大小增倍,并将数据块大小重置为下限,转到步骤4启动下一轮测试;如果本轮测试的数据块大小和测试文件大小都达到了上限,则退出测试循环并删除所有测试文件。 二、事务操作吞吐量测试事务操作吞吐量测试需要模拟事务批量操作和事务交叉操作来对文件事务操作的真实工作性能进行评估,并提供灵活的测试配置参数与丰富的测试指标帮助用户从多个角度对文件系统事务操作性能进行直观分析。针对事务操作吞吐量的测试场景设计如图I所示,事务操作吞吐量的测试场景包括步骤2中描述的文件批量创建测试操作、步骤3中描述的循环事务交叉测试操作、步骤4中描述的批量文件删除3个阶段。事务操作吞吐量测试包括5个步骤,具体描述如下步骤I :设计测试配置参数为了提供灵活的测试负载配置机制,需要对文件系统的实际事务操作特点进行分析,从而设计丰富的符合实际负载特点的测试配置参数。如表2所示表权利要求
1.一种针对Linux文件系统的性能评估方法,其特征在于,该方法从三个维度来对Linux文件系统的性能进行评估,具体包括 微观读写带宽测试,通过模拟多个IO操作的应用场景对Linux文件系统微观读写带宽进行测试; 事务操作吞吐量测试,通过基于随机概率的事务交叉循环操作方式对Linux文件系统的文件操作吞吐量进行测试; 宏观典型应用模拟测试,通过基于多线程的可扩展负载模型构建方式对典型应用场景进行模拟从而评估Linux文件系统的真实工作性能。
2.如权利要求I所述的对Linux文件系统的性能评估方法,其特征在于,所述的微观读写带宽测试主要分为6个步骤 步骤I :选取微观测试点,需要统计真实的IO操作发生规律,包括读写位置选取、读写 文件的存在与否,并在此基础上建立典型的微观读写存取模型; 步骤2 :配置测试负载,指定测试的文件大小上下限和数据块大小上下限,其中数据块大小的上限需低于或者等于文件大小的下限; 步骤3 :测试初始化,包括创建文件、生成文件内容、生成随机节点、生成待写入内容;步骤4 :执行单轮测试流程,启动测试监控,按照单轮测试的文件大小和数据块大小执行相应的测试操作; 步骤5 :统计单轮测试带宽,停止测试监控,统计本轮测试下的单位时间内的读写数据量,并记录相应文件大小和数据块大小; 步骤6 :双重循环控制,单轮读写测试执行流程结束后,检查本轮测试的数据块大小是否达到上限,如果没有达到上限,则将数据块大小增倍,测试文件大小保持不变,转到步骤4启动下一轮测试;如果本轮测试数据块大小已经达到上限,则检查本轮测试文件大小是否达到上限,如果没有达到上限则测试文件大小增倍,并将数据块大小重置为下限,转到步骤4启动下一轮测试;如果本轮测试的数据块大小和测试文件大小都达到了上限,则退出测试循环并删除所有测试文件。
3.如权利要求2所述的对Linux文件系统的性能评估方法,其特征在于,所述典型的微观读写存取模型包括顺序读写模型;随机读写模型;倒序读模型;跳跃读模型;写与覆盖与丰旲型;内存映射读与I旲型; 所述的顺序读写存取模式又分为4个测试操作场景,分别为Read、Re-read、Write和Re-write ;其中,Read是测试顺序读一个已存在的文件的性能,Re-read是测试对最近读过的一个文件进行再次读取的性能,Write是测试向一个新文件进行数据写入的性能,Re-write是测试向一个已存在的文件进行数据写入的性能; 所述的随机读写存取模式又分为3个测试操作场景,分别为Random-read、Random-write> Random-mix ;其中,Random-read是指测试从一个已有文件的随机偏移量处进行数据读取的性能,Random-write是指测试向一个已有文件的随机偏移量处进行数据写入的性能,Random-mix是指测试对文件进行数据读取和数据写入随机混合操作时的性能;所述的内存映射读写存取模式又分为2个测试操作场景,分别为Mmap-read和Mmap-write ;其中,Mmap-read是测试通过内存映射机制对文件进行数据读取的性能,Mmap-write是测试通过内存映射机制对文件进行数据写入的性能。
4.如权利要求I所述的对Linux文件系统的性能评估方法,其特征在于,所述的事务操作吞吐量测试,具体包括5个步骤 步骤I :设计测试配置参数; 步骤2 :执行文件批量创建测试操作,该阶段执行的操作包括启动测试,然后记录测试开始时间startjime,并按照用户所设置的并发文件数量以及文件平均大小顺序批量创建文件,最后记录事务随机交叉循环测试操作开始时间t_start_time ; 步骤3 :执行事务随机交叉循环测试操作,该阶段以用户设置的事务操作比例为依据随机交叉执行不同的事务操作; 步骤4 :执行批量文件删除测试操作,该阶段执行的操作包括首先记录事务随机交叉循环测试操作结束时间t_end_time,然后批量删除所有剩余测试文件并记录测试结束时间end—time ; 步骤5 :统计各项测试指标。
5.如权利要求4所述的对Linux文件系统的性能评估方法,其特征在于,所述测试配置参数,具体包括 文件尺寸的上下限; 并发文件集的数量; 子目录数量; 读操作数据块大小; 写操作数据块大小; 读/写操作比例; 创建/删除操作比例; 事务执行次数。
6.如权利要求4所述的对Linux文件系统的性能评估方法,其特征在于,所述的事务随机交叉循环操作阶段,针对Create、Delete、Read、Append这4种文件操作类型,该阶段的事务操作分为两大类Create/Delete和Read/Append,然后根据用户设置的读/写操作比例和创建/删除操作比例为依据随机交叉循环执行不同的文件操作,具体步骤包括 步骤31 :判断是否执行Read/Append操作,若否则转向步骤32,若是则按照Read/Append操作比例产生一个随机数用来判断本次循环是否执行Read操作,如果是,则执行一次Read操作,如果否,则执行一次Append操作; 步骤32 :判断是否执行Create/Delete操作,若否则转向步骤33,若是则按照Create/Delete操作比例产生一个随机数用来判断本次循环是否执行Create操作,如果是,则执行一次Create操作,如果否,则执行一次Delete操作; 步骤33 :将事务执行次数加1,若事务执行次数达到用户设定的值,则事务随机交叉循环操作阶段结束,进入文件批量删除阶段;否则转向步骤31。
7.如权利要求4所述的对Linux文件系统的性能评估方法,其特征在于,所述的事务操作吞吐量的测试指标包括总吞吐量、批量操作吞吐量和交叉操作吞吐量; 其中,总吞吐量包括事务总吞吐量和文件创建/删除总吞吐量;事务总吞吐量是指单位时间内执行的事务次数,计算方式为transactions/t_elapsed, transactions为用户执行的事务执行次数,t_elapsed=t_end_time-t_start_time, t_start_time 为所述事务随机交叉循环执行开始时间,t_end_time为所述事务随机交叉循环执行结束时间;文件创建/删除总吞吐量是指单位时间内创建/删除的文件数量,计算方式为fileS_Created/elapsed, files_created 为测试过程中所创建的文件数量,elapsed=end_time-start_time, start_time为所述测试执行开始时间,end_time为测试执行结束时间; 批量操作吞吐量包括文件批量创建吞吐量和文件批量删除吞吐量,文件批量创建吞吐量是指单位时间内批量创建的文件数量,计算方式为files_init/interval I, files_init为用户指定的并发文件数量,intervall=t_start_time-start_time ;文件批量删除吞吐量是指单位时间内批量删除的文件数量,计算方式为deleted/interval2, deleted为文件批量删除阶段所删除的文件数量,interval2=end_time-t_end_time ; 交叉操作吞吐量包括事务交叉时读操作吞吐量、事务交叉时追加文件吞吐量、事务交叉时创建文件吞吐量、事务交叉时删除文件吞吐量;事务交叉时读操作吞吐量是指事务交叉时单位时间内的文件读取次数,计算方式为files_read/t_elapsed, files_read是指测 试过程中读文件的次数;事务交叉时追加文件吞吐量是指事务交叉时单位时间内文件追 加次数,计算方式为files_appended/t_elapsed, f iles_appended是指测试过程中写文件的次数;事务交叉时创建文件吞吐量是指事务交叉时单位时间内文件创建个数,计算方式为(files_created_files_init)/t_elapsed, files_created 是指测试过程中的文件创建总数;事务交叉时删除文件吞吐量是指事务交叉时单位时间内文件删除个数,计算方式为(files_deleted-deleted)/t_elapsed, files_deleted 是指测试过程中的文件删除总数。
8.如权利要求I所述的对Linux文件系统的性能评估方法,其特征在于,所述宏观典型应用模拟测试,主要分为6个步骤 步骤I :分析真实应用的负载特点; 步骤2 :定义仿真线程树; 步骤3:定义测试配置参数; 步骤4:定义默认测试负载; 步骤5 :启动测试执行操作,该过程主要是进行测试的实时监控与记录,并进行不同线程的同步控制; 步骤6 :统计测试指标,根据测试过程中实时记录的文件操作信息统计模拟测试场景中的文件操作总吞吐量、文件读写总带宽和CPU占用率; 其中,文件操作总吞吐量是指单位时间内所完成的文件操作次数,所述文件操作包括文件创建、删除、读取和写入,该项指标值是通过测试过程中完成的文件操作总次数除以测试执行总时间而获得; 文件读写总带宽是指单位时间内的文件数据传输总量,单位为MB/s,该项指标是通过测试过程中所有读写操作完成的数据传输量除以测试执行总时间而获得; CPU占用率是指单个文件操作所占用的CPU时间,该项指标通过测试执行过程的总CPU占用时间除以从文件操作次数而获得。
9.如权利要求8所述的对Linux文件系统的性能评估方法,其特征在于,所述启动测试执行操作为网页代理应用的测试操作,其执行流程具体操作包括 步骤51 :启动主线程测试,并按照指定的初始文件数量、单个目录下的平均文件数量以及平均文件大小分配测试初始文件集;其中文件集的目录分配与文件大小分配均服从gamma分布; 步骤52:启动测试监控,并按照测试负载中指定的并发线程个数并开启多个测试线程,用于模仿多个用户对文件服务器进行并发访问的情况; 步骤53 :多个网页代理线程并发执行仿真线程树中定义的文件操作, 依次为删除文件、创建文件、向文件追加内容、然后连续执行5次随机读操作; 步骤54 :在步骤53进行的同时,主线程对所有网页代理线程进行测试监控,直到所有的线程执行完毕。
全文摘要
本发明提供了一种针对Linux文件系统的性能测试方法,该方法从三个维度来对Linux文件系统的性能进行评估,具体包括微观读写带宽测试,通过模拟多个IO操作的应用场景对Linux文件系统微观读写带宽进行测试;事务操作吞吐量测试,通过基于随机概率的事务交叉循环操作方式对Linux文件系统的文件操作吞吐量进行测试;宏观典型应用模拟测试,通过基于多线程的可扩展负载模型构建方式对典型应用场景进行模拟从而评估Linux文件系统的真实工作性能。本发明提出的方法在保证正确性的前提下有效提高了测试覆盖率。
文档编号G06F11/36GK102750221SQ20121017193
公开日2012年10月24日 申请日期2012年5月29日 优先权日2012年5月29日
发明者兰雨晴, 颜佩琼 申请人:兰雨晴
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1