存储服务器性能综合测试系统的制作方法

文档序号:7595170阅读:287来源:国知局
专利名称:存储服务器性能综合测试系统的制作方法
技术领域
本发明属于服务器系统测试领域,为存储服务器提供了一种标准的性能综合测试系统。
背景技术
互联网的广泛应用使数据成为维系千百万企业和机构正常运行的生命线,怎样对这些数据提供最可靠的保护以及确保它们的畅通已经成为影响企业竞争力的最关键的因素。选择恰当的服务器系统以及相应的内外存储技术和设备又是实现数据畅通和保护的主要途径。如何有效的对存储服务器综合性能进行测试已经成为人们研究的热点问题。
业界评测存储局域网SAN(Storage Area Network)性能的基准测试程序是SPC-1,它主要测评SAN的事务处理能力,测试指标是每秒种输入输出数(IOPS),该基准测试程序属于存储器性能委员会(Storage PerformanceCouncil)所有。SPC-1测试工具包软件采用Java语言编写,可运行在Solaris、AIX和Windows NT/Windows 2000操作系统上,运行SPC-1测试软件需要Java环境支持。评测存储服务器的主要环节均由一系列的Java操作构成,优点是可以很方便的跨平台操作,但缺点是在每台设备上运行一个个的Java命令会加大评测的复杂度。在SPC-1销售方面,对于非会员客户,企业License售价为10000美元,站点License售价为2500美元;对于会员客户,企业License售价为4000美元,站点License售价为1000美元;对于学术机构,站点License售价为500美元;这些销售价格相比较目前国内的生产和生活水平而言,相对过高。因此,我们认为SPC-1存在评测过程复杂、评测费用高的问题。

发明内容
本发明的目的是提供一种能克服上述缺陷的存储服务器性能综合测试系统,该系统具有简单、高效和评测成本低的特点。
本发明提供的一种存储服务器性能综合测试系统,其特征在于该系统包括设置在客户机上的测试管理模块和负载产生模块;其中测试管理模块负责设置测试参数,向负载产生模块发送测试命令,收集负载产生模块的测试结果数据,并将测试结果数据统计整理后输出,控制测试全过程;负载产生模块用于创建I/O访问流量,在测试管理模块控制下,传送I/O请求报文到存储服务器,并接收存储服务器返回的响应信息;上述测试管理模块包括用户界面模块、配置信息模块、定时器模块、负载管理模块和进程通信模块;其中,用户界面模块用于人机接口的交互,获取部分配置信息并传送给配置信息模块;配置信息模块用于接收从用户界面模块和配置文件传送过来的配置信息,并将全部配置信息传送给负载管理模块;负载管理模块产生配置命令、测试命令,并且处理测试结果数据;定时器模块负责调度负载管理模块的配置命令和测试命令,控制测试的全过程,并将配置和测试命令传送给进程通信模块;进程通信模块负责将配置命令和测试命令发送给负载产生模块,并从负载产生模块收取测试结果数据,完成测试管理模块与负载产生模块之间的进程通信;此外,负载管理模块接收进程通信模块从负载产生模块收取的测试结果数据,并将这些数据处理后生成输出文件;上述负载产生模块包括测试对象管理模块、DISK测试模块、多线程模块和第一、第二TCP模块、;第一TCP模块接收来自测试管理模块的配置命令和测试命令,并发送给测试对象管理模块,测试对象管理模块负责配置测试参数,增加或减少测试对象,并将所有配置命令和测试命令发往多线程模块;DISK测试模块负责产生测试流、测试请求命令,接收响应信息和记录测试结果,并将信息传送给多线程模块和第二TCP模块;多线程模块负责产生、管理和维护多个DISK测试线程,并发送DISK测试模块的测试结果数据给测试对象管理模块,测试对象管理模块将这些数据统计整理后通过第一TCP模块发送至测试管理模块;第二TCP模块向存储服务器发送I/O读或者写请求报文,并从存储服务器接收请求报文相应的响应报文。
上述DISK测试模块包括I/O流产生器子模块、I/O命令产生器子模块、I/O命令完成子模块和统计信息搜集子模块;I/O流产生器子模块按照用户访问存储服务器用户存储单元的统计特性,产生访问存储服务器的一系列I/O流;I/O命令产生器子模块根据I/O流产生器子模块产生的I/O流定义,向存储服务器发出读/写请求;I/O命令完成子模块负责收取由存储服务器返回的响应信息;统计信息搜集子模块负责从I/O命令完成子模块中搜集和整理响应信息的时间,以及读/写请求的文件大小。
本发明采用客户机/服务器体系结构,在高速宽带局域网中,使用多台客户机模拟多个用户,遵循用户访问存储服务器的统计特性,在规定的测试时间内访问存储服务器,测试存储服务器在各种负载条件下(100%、95%、90%、80%、50%、10%)体现出来的性能,测试指标包括IOPS和LRT,IOPS表示每秒种输入输出数,LRT即最小I/O请求响应时间,LRT通常为负载为10%条件下的平均响应时间。本系统采用了Linux下的多线程技术、进程间通信技术和网络编程技术,评测过程简单,操作方便,系统资源消耗少,评测费用低。具体而言,本发明具有以下优点及效果(1)测试原理规范测试原理来源于实际,采用用户访问存储服务器的统计特性,具备良好的科学基础,非常规范。
存储服务器性能综合测试系统采用了最新的用户访问存储服务器的统计特性,本系统软件模块运行在多个客户机上,基于客户机/服务器体系结构,在高速宽带局域网内,按照用户访问存储服务器的统计特性,模拟典型的商业应用访问存储服务器,例如OLTP、数据库、电子邮件等应用,测试存储服务器在各种负载条件下体现出来的综合性能。
(2)评测操作控制精简存储服务器性能综合测试系统采用C/C++作为开发语言,无须客户机支持Java,降低了对客户机的系统要求和设置难度;本系统还采用了基于TCP/IP的集中控制技术,利用测试管理模块全程控制评测过程的各个环节,无须逐个分步操作每台测试设备,极大地降低了评测过程的复杂度;本系统提供了图形化的配置界面,方便了人机交互。
(3)评测费用低廉存储服务器性能综合测试系统费用低廉,运行本系统软件模块的客户机可由多台运行Linux的PC机组成,无须专业的工作站,这样就大大降低了评测成本。


图1为本发明测试系统的结构示意图;图2为测试管理模块和负载产生模块的结构示意图;图3为DISK测试模块的子模块示意图;具体实施方式
存储服务系统包括客户机、存储服务器和交换机,本发明用于对其中的存储服务器进行测试,整个测试构筑在高速宽带局域网中。从工作原理的角度,可以将测试系统分为两大部分,即测试管理模块(BenchmarkManager)和负载产生模块(Load Generator)。这两个模块均设置在客户机上,由于受到单台PC机硬件性能的限制,这两个模块最好是分开安装到不同的客户机上。根据测试负载的需要,负载产生模块可以设置1到多个,并分别安装到不同的客户机上。
测试系统的结构如图1所示,测试管理模块1主要用于向负载产生模块2发送测试命令,并控制测试全过程。在测试管理模块1控制下,负载产生模块2发送I/O请求报文到存储服务器4,并接收存储服务器返回的响应信息。当测试系统包括多个负载产生模块时,各模块的功能及工作过程与上述模块2相同。
下面分别对各模块作进一步详细的说明。
测试管理模块1负责设置测试参数,包括应用存储单元ASU-1、ASU-2和ASU-3的逻辑卷;启动和停止测试;收集负载产生模块的测试结果数据,并将测试结果数据统计整理后以纯文本形式输出。如图2所示,测试管理模块1包括配置信息模块4、定时器模块5、用户界面模块6、负载管理模块7和进程通信模块8。用户界面模块6用作人机接口,录入部分配置信息并传送给配置信息模块,从用户界面获取的配置信息主要有负载产生模块子线程数。配置信息模块4用于接收用户界面模块录入的部分配置信息,以及直接从配置文件获得的配置信息,并将全部配置信息传送给负载管理模块7,从配置文件获取的测试配置参数有应用存储单元ASU-1、ASU-2和ASU-3的逻辑卷,即路径和名字。负载管理模块7包括配置命令和测试命令,完成测试数据的处理,其中配置命令中包含上述所有的配置信息。定时器模块6负责定时调用负载管理模块7的配置命令和测试命令,控制存储服务器综合性能测试的全过程,它将配置命令和测试命令集传送给进程通信模块8。进程通信模块8负责将配置命令和测试命令发送给负载产生模块2,并收取每个负载产生模块发来的测试结果数据,完成测试管理模块1与负载产生模块2之间的进程通信。这样可以确保配置命令和测试命令传送畅通,测试结果统计准确。此外,负载管理模块7通过进程通信模块8,接收所有测试结果数据,并将这些数据分类统计、综合计算,最后生成数据表格式的TXT文件。
负载产生模块2用于创建I/O访问流量,即通过Samba协议向存储服务器发送I/O请求,同时收取存储服务器的I/O响应信息,并记录响应信息达到的时间和文件传输大小。如图2所示,负载产生模块2包括测试对象管理模块9、DISK测试模块10、多线程模块11、第一TCP模块12和第二TCP模块13。
测试对象管理模块9通过第一TCP模块12接收来自测试管理模块1的配置命令,配置命令携带了所有与测试相关的配置信息,它们是应用存储单元ASU-1、ASU-2和ASU-3的逻辑卷和DISK测试线程数;另外,测试对象管理模块9通过第一TCP模块12也接收测试管理模块的测试命令。即第一TCP模块12发送配置命令和测试命令给测试对象管理模块9。后者将所有配置命令和测试命令发往多线程模块11,并接收多线程模块11发送的各个DISK测试模块的测试结果数据,将这些数据统计整理后通过第一TCP模块12发送至测试管理模块1。
DISK测试模块10包括I/O流产生器子模块14、I/O命令产生器子模块15、I/O命令完成子模块16和统计信息搜集子模块17,如图3所示。I/O流产生器子模块14按照用户访问存储服务器用户存储单元ASU-1、ASU-2、ASU-3的统计特性,产生访问存储服务器的一系列I/O流,每个流即为I/O操作的完整定义,包括读/写操作,读/写文件的大小,以及待访问的用户存储单元;I/O命令产生器子模块15根据I/O流产生器子模块14产生的I/O流定义,向存储服务器发出读/写请求;I/O命令完成子模块16负责收取读/写请求发出之后存储服务器返回的响应信息;统计信息搜集子模块17负责搜集和整理响应信息的时间,以及读/写请求的文件大小。需要说明的是,I/O流产生器子模块14根据用户访问存储服务器用户存储单元的统计特性,调用相应的统计函数,产生访问存储服务器的一系列I/O流。
多线程模块11从测试对象管理模块9接收配置命令和测试命令,并提取一个重要的配置信息DISK测试线程数,从而产生多个线程,每个线程对应为不同的DISK测试模块,多线程模块11负责与这些DISK测试模块通信发送配置命令,即用存储单元ASU-1、ASU-2和ASU-3的逻辑卷;发送测试命令;收取每个DISK测试模块的测试结果数据。即DISK测试模块10向多线程模块11发送配置命令测试命令,多线程模块11向DISK测试模块10发送测试结果数据。另外,多线程模块11搜集所有DISK测试模块的测试结果数据并发往测试对象管理模块9。
第一TCP模块12完成负载产生模块2和测试管理模块1之间的进程通信,它负责从测试管理模块1收取配置命令和测试命令,并发送测试结果数据。第二TCP模块13向存储服务器发送I/O读或者写请求报文,并从存储服务器接收请求报文相应的响应报文。
本发明为了系统实现上的方便,将测试管理模块和负载产生模块放入两台客户机上实现,注意,需要在负载产生模块程序启动时,向特定测试管理模块的IP地址和中指定是否运行实例存储服务器性能综合测试系统的配置及运行过程如下(1)建立存储服务器。所有客户机和服务器之间通过1000M交换机互联为一个局域网,为了保证测试结果的正确性,该局域网与其他用途的网络和设备隔离,避免额外网络流量影响测试结果。在测试前,按照测试规模,在安装存储服务器时设置好用户存储单元ASU-1、ASU-2和ASU-3,并将配置这些ASU用Samba协议共享局域网内用户访问。应用存储单元ASU是一个介于数据仓库和基于主机的应用程序间的逻辑接口,这些基于主机的应用程序完成基准测试,且在此过程中完成持续稳定地存储读写操作。本测试定义了三种不同的ASU数据存储单元ASU-1,用户存储单元ASU-2,日志存储单元ASU-3。数据存储单元保存应用系统的原始输入数据,它占ASU总容量的45%;用户存储单元保存应用系统处理过的信息,它占ASU总容量的45%;日志存储单元包含应用系统为保护数据存储单元和用户存储单元中数据信息的完整性而生成的文件;它占ASU总容量的10%。
(2)在运行负载产生器的客户机上,用装载命令smbmount将存储服务器上共享的ASU安装在本地目录上。所有客户机对三种用户存储单元ASU-1、ASU-2和ASU-3的安装点相同。
(3)运行Benchmark Manager。必须在所有的Load Generator客户端运行前,启动Benchmark Manager。在Benchmark Manager的图形窗口式的配置界面中,输入需要配置的各项参数和指定的配置文件名。
(4)运行Load Generator,运行时指定测试控制模块所在客户端的以太网卡IP地址。每个运行Load Generator的客户端配有一张千兆以太网卡。Load Generator会根据指定Benchmark Manager的IP地址,向BenchmarkManager注册,并等待Benchmark Manager的配置命令和测试命令。在测试结束时,向Benchmark Manager发送测试结果数据。
(5)Benchmark Manager收到所有Load Generator发送来的测试结果数据后,其负载管理模块归纳统计这些测试结果数据,以数据表形式输出测试结果文本文件。
权利要求
1.一种存储服务器性能综合测试系统,其特征在于该系统包括设置在客户机上的测试管理模块(1)和负载产生模块(2);其中测试管理模块(1)负责设置测试参数,向负载产生模块(2)发送测试命令,收集负载产生模块(2)的测试结果数据,并将测试结果数据统计整理后输出,控制测试全过程;负载产生模块(2)用于创建I/O访问流量,在测试管理模块(1)控制下,传送I/O请求报文到存储服务器,并接收存储服务器返回的响应信息;上述测试管理模块包括用户界面模块(6)、配置信息模块(4)、定时器模块(5)、负载管理模块(7)和进程通信模块(8);其中,用户界面模块(6)用于人机接口的交互,获取部分配置信息并传送给配置信息模块(4);配置信息模块(4)用于接收从用户界面模块(6)和配置文件传送过来的配置信息,并将全部配置信息传送给负载管理模块(2);负载管理模块(7)产生配置命令、测试命令,并且处理测试结果数据;定时器模块(5)负责调度负载管理模块(7)的配置命令和测试命令,控制测试的全过程,并将配置和测试命令传送给进程通信模块(8);进程通信模块(8)负责将配置命令和测试命令发送给负载产生模块(2),并从负载产生模块(2)收取测试结果数据,完成测试管理模块(1)与负载产生模块(2)之间的进程通信;此外,负载管理模块(7)接收进程通信模块(8)从负载产生模块(2)收取的测试结果数据,并将这些数据处理后生成输出文件;上述负载产生模块(2)包括测试对象管理模块(9)、DISK测试模块(10)、多线程模块(11)和第一、第二TCP模块(12、13);第一TCP模块(12)接收来自测试管理模块(1)的配置命令和测试命令,并发送给测试对象管理模块(9),测试对象管理模块(9)负责配置测试参数,增加或减少测试对象,并将所有配置命令和测试命令发往多线程模块(11);DISK测试模块(10)负责产生测试流、测试请求命令,接收响应信息和记录测试结果,并将信息传送给多线程模块(11)和第二TCP模块(13);多线程模块(11)负责产生、管理和维护多个DISK测试线程,并发送DISK测试模块(10)的测试结果数据给测试对象管理模块(9),测试对象管理模块(9)将这些数据统计整理后通过第一TCP模块(12)发送至测试管理模块(1);第二TCP模块(13)向存储服务器发送I/O读或者写请求报文,并从存储服务器接收请求报文相应的响应报文。
2.根据权利要求1所述的测试系统,其特征在于DISK测试模块(10)包括I/O流产生器子模块(14)、I/O命令产生器子模块(15)、I/O命令完成子模块(16)和统计信息搜集子模块(17);I/O流产生器子模块(14)按照用户访问存储服务器用户存储单元的统计特性,产生访问存储服务器的一系列I/O流;I/O命令产生器子模块(15)根据I/O流产生器子模块(14)产生的I/O流定义,向存储服务器发出读/写请求;I/O命令完成子模块(16)负责收取由存储服务器返回的响应信息;统计信息搜集子模块(17)负责从I/O命令完成子模块(16)中搜集和整理响应信息的时间,以及读/写请求的文件大小。
全文摘要
本发明公开了一种存储服务器性能综合测试系统,包括设置在客户机上的测试管理模块和负载产生模块,前者负责设置测试参数,向负载产生模块发送测试命令,收集负载产生模块的测试结果数据,并将测试结果数据统计整理后输出,控制测试全过程;后者用于创建I/O访问流量,在测试管理模块控制下,传送I/O请求报文到存储服务器,并接收存储服务器返回的响应信息。本发明在高速宽带局域网中,使用多台客户机模拟多个用户,遵循用户访问存储服务器的统计特性,在规定的测试时间内访问存储服务器,测试其在各种负载条件下体现出来的性能。本发明测试原理科学,采用了Linux下的多线程技术、进程间通信技术和网络编程技术,具有评测过程简单,评测费用低等优点。
文档编号H04L12/26GK1588892SQ20041006087
公开日2005年3月2日 申请日期2004年9月17日 优先权日2004年9月17日
发明者金海 , 谢夏, 李胜利, 卢鹏, 戴志华, 黄瑾, 张琴, 赵俊 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1