全球数据量的迅猛增长使得数据存储日益成为各企业关注的焦点,持续增长的数据存储压力带动了整个存储市场的快速发展,云存储迅速成为存储的热点[1]。许多企业开发者和个人用户将其应用从传统存储迁移至公有云存储系统,为了评判选择的公有云存储系统能否满足业务需求,需要对公有云存储系统进行性能评估, 因此,云存储系统性能成为企业开发者和个人用户关注的焦点。传统的存储系统性能测试方法直接用于云存储系统时,存在如下问题:第一,由于实际环境资源的限制,测试不具有可扩展性,难以评测大规模云存储系统的性能;第二,难以模拟足够多的用户同时访问云存储系统;第三,测试环境构建复杂,需要花费大量的人力物力,测试时间长;第四,准备测试环境,测试成本投入高;第五,测试过程受网络因素及外界其他因素影响,评测结果不稳定。
针对以上问题,本文提出一种公有云存储系统性能评测方法——“云测试云”,该方法通过在云计算平台动态申请足够数量的实例,对公有云存储系统性能进行评测。该方法主要针对公有云存储系统,因为私有云存储系统是针对特定企业或高校搭建,供其内部人员使用,而公有云存储系统具有普遍使用性。该方法具有如下优点:第一,在云计算平台上动态按需申请实例,可以模拟足够数量的用户,具有很好的扩展性;第二,评测过程自动化部署,节约人力物力,使评测过程更高效;第三,使用云计算资源构建评测环境,节约测试成本;第四,评测过程相对屏蔽网络因素的影响,使评测过程稳定;第五,该方法可以适用于任何公有云存储平台,具有很好的通用性。
本文的主要工作为:第一,提出一种公有云存储系统性能评测方法——“云测试云”;第二,构建通用的性能评测框架,可动态伸缩申请实例,自动化部署评测工具及负载,控制并发访问云存储系统,自动释放实例及收集并反馈评测结果;第三,提出多维度的性能评测指标,涵盖不同典型应用、不同云存储接口;第四,提出一种可扩展通用的性能评测模型,可以适用于任何的公有云存储平台,通过该模型可以评测常见典型应用的性能,并且可以分析用户使用机器类型、用户访问文件大小、同时访问用户数对云存储系统性能的影响。
1 相关研究目前,在公有云存储性能评测方面,已经有大量的研究工作,根据云存储接口访问类型,可以分为块存储、对象存储、数据库存储。
文献[2]研究Windows Azure云平台三种主要存储服务Blob (块存储)、Table和Queue (数据库存储) 的性能,采用1~192个客户端从多维度评测指标角度进行评测,比如分析Blob上传下载的传输速率,分析Table常用应用程序编程接口 (Application Programming Interface, API) 操作 (Insert、Query、Update、Delete) 的次数。该方法的优点是模拟多用户真实访问,分析不同存储接口的性能;但是该方法的不足是评测时限制用户所在区域,而真实用户访问地区各不相同,没有真正地做到从用户角度分析云存储系统性能;另外,该方法只是分析用户访问数对云存储性能影响,而没有分析其性能的影响因素。文献[3]针对Azure云存储平台的性能研究提出一套开源的benchmark——AzureBench,使用多层次指标评测Blob、Table和Queue三种存储服务的性能。该方法分析了不同实例数量、不同文件大小对其存储性能的影响,但是没有分析实例类型对存储性能的影响,同时评测过程没有做到自动化部署,评测效率低。
文献[4]从数据持久性、数据可用性、数据访问性能角度评测Amazon S3(Simple Storage Service) 存储服务的性能。该方法的优点是从5个不同的地区和Amazon内部的EC2角度采用横向对比评测Amazon S3性能; 但是在评测Amazon S3并发访问性能时,采用不同地区的EC2单台虚拟机设置多线程来测试,这种方法不能模拟真实的多用户并发访问。文献[4]调用Amazon S3提供的REST API采用Java、C++、Python语言实现评测工具,但是该工具不能实现自动化部署。文献[5-6]采用C++语言调用Amazon S3 API实现评测工具,从EC2角度评测Amazon S3的吞吐量、并发访问及可用性。该方法的优点是能分析时间因素和地区因素对Amazon S3性能的影响; 但不足是没有分析不同实例类型及不同实例数量对Amazon S3性能的影响,并且评测方法使用单客户端进行评测,使得该评测方法不具有可扩展性。文献[7]利用网络分析工具iptools获得云存储系统在处理用户访问请求的各个阶段的时间开销,从而建立模型评测云存储的性能,并且以百度云盘和金山快盘为测试对象进行实验,验证模型。但是该方法只分析单客户访问云存储的性能,因此评测方法不具有扩展性。文献[8]采用网络嗅探工具Ethereal,通过捕获网盘客户端传输文件的数据包的方式来确定其传输时间、计算传输速率。该方法的优点是采用所提方法横向对比三种典型网盘的性能,但不足是只分析单用户访问的性能,没有分析多用户同时访问的性能,评测方法不具有可扩展性。文献[9]研发评测Openstack Swift应用服务接口层性能工具CSPTS (Cloud Storage Performance Test System),通过调用Swift开放的API接口,测试文件读写和元数据操作的性能。文献[10]对公有云存储Azure和私有云存储Nimbus进行性能评价,使用集成benchmark和负载应用程序对性能进行评价,主要指标有计算性能、网络性能和成本。该方法的优点在于将所提性能评测方法在公有云存储Azure和私有云存储Nimbus上进行对比评测,评测指标多样化,但没有具体说明提出的性能评测方法。
YCSB (Yahoo Cloud Serving Benchmark)[11]由Yahoo公司开发,主要是面向key/value云存储系统的评估。文献[11]提出了一个称为YCSB的测试框架,用于云数据服务系统的性能对比,具有通用性与扩展性, 并定义了5个核心工作负载,可用于测试云数据服务系统的基础性能,也可较容易地基于这些负载生成新的负载以对特定的应用进行测试。文献[12]提出了一个测试生成工具,可高效运行多个benchmark进行测试以获得更高置信度的结果,该工具与负载生成器进行交互以执行每一个测试,类似于YCSB的客户端。
通过分析发现,现有的研究通过多维度评测指标,横向对比可以很好地评测特定公有云存储系统性能,但是这些方法不具有通用性、可扩展性,并且评测工具不能自动化部署,评测效率低,有些方法不能模拟真实的多用户同时访问,评测结果对企业开发者和个人用户不能很好地提供建议。
针对以上研究工作的不足,本文提出一种公有云存储系统性能评测方法——“云测试云”,该方法具有很好的通用性和可扩展性。通过自动化部署和多维度指标评测,为企业开发者和个人用户使用云存储系统提供参考。
2 云测试云 2.1 评测框架本文构建通用的性能评测框架,如图 1所示。主要包括4个模块:1) 控制决策模块。首先,对企业开发者或个人用户提交的需求说明进行需求分析;然后,根据需求分析结果创建虚拟机组;接着,给创建的所有虚拟机发送工具和负载信息,并且控制虚拟机进行访问操作;其次,当访问测试模块完成时,从各个虚拟机中收集评测结果;最后,当用户收到评测结果后,释放虚拟组。2) 资源调度模块。主要根据控制决策模块发送的请求消息启动虚拟机组。3) 访问测试模块。所有新启动的虚拟机根据控制决策模块的需求分析信息访问云存储系统,进行元数据访问或者数据访问。4) 结果处理模块。主要负责处理控制决策模块从各个虚拟机收集的评测结果,分为单节点结果处理和多节点结果处理,并将分析结果反馈给企业开发者或个人用户。
本地存储系统的性能评测指标有IOPS (Input/Output Operations Per Second)、数据传输率、元数据吞吐率和并发数等,具体如下:
1) IOPS:测试本地存储系统每秒处理的IO请求数,单位为IO次数/秒 (IOPS)。
2) 数据传输率:测试本地存储系统在单位时间内的最大数据传输率,单位为兆字节/秒 (MB/s)。
3) 元数据吞吐率:本地存储系统在单位时间内能够处理的元数据量,单位为次/秒。
4) 并发数:同一时间内能够支持的最大用户访问数目。
借鉴本地存储系统性能评测指标,本文提出云存储系统面向不同典型应用和不同云存储接口的多维度性能评测指标,具体如下:
1) 面向不同典型应用的评测指标。
典型应用性能:针对不同用户机器类型、不同网络环境、不同测试时间点,测试典型应用的完成时间,单位为秒 (s)。
典型应用的性能不只与用户上传下载的文件大小有关系,并且和文件的读写访问模式有关系。如云相册,用户一次写入,多次进行读访问,并且用户一般访问不是下载单个照片,而是下载某个相册整体。
常见的云存储系统典型应用如表 1所示。因为文件、软件、视频等用户使用时都会有大文件和小文件、大软件和小软件等之分,所以设置两个参数值,并且只对小文件,小软件、小视频等作测试。
2) 面向不同云存储接口的评测指标。
根据云存储系统的不同接口访问类型,可以分为块存储接口、对象存储接口、数据库存储接口,不同接口的具体评测指标如表 2所示。
本文在评测指标的基础上提出两种通用可扩展的公有云存储系统性能评测模型:典型应用性能评测模型和云存储接口层性能评测模型。典型应用性能评测模型,可以分析用户使用不同典型应用在不同访问模式、不同机器类型、不同网络环境和不同测试时间点时完成时间;云存储接口层性能评测模型可以评测用户使用的机器类型、用户访问的文件大小及同时访问的用户数对云存储系统性能的影响。两种具体评测模型如图 2~3所示。
典型应用性能评测模型的具体执行流程如下:首先将不同的典型应用在不同时间,部署到不同区域的不同类型机器上;最后可以评测出不同典型应用在不同访问模式、不同时间、不同区域、不同类型机器上的完成时间。
云存储系统云存储接口层性能评测模型主要分为两个阶段,具体执行流程如下。
第一阶段因素分析。
1) 评测云存储系统性能和实例类型之间的关系。固定文件大小 (一般设置小文件) 和用户数量 (一般设置单用户),评测实例类型 (即用户使用的机器类型) 对云存储系统性能的影响。
2) 确定最优文件大小。不同云存储系统支持的最优文件大小不同,固定实例类型 (一般设置小配置实例类型) 和用户数量 (单用户),寻找评测的云存储系统支持访问的最优文件大小,即用户上传、下载时的最优文件大小, 并且分析文件大小和云存储系统性能之间的关系。
3) 确定云存储系统支持的最大用户数。云存储系统支持的最大用户数,与用户使用的实例类型及用户上传或下载的文件大小有关系,所以在评测时,将实例类型设置为较优实例配置,将文件大小设置为小文件,进而评测云存储系统同时支持的最大用户访问数,并且分析用户数和云存储系统性能之间的关系。
第二阶段当用户使用云存储系统时,通过统筹规划动态调整上述分析的各个因素,尽可能地为用户提供较优的性能,从而为用户的使用提供指导建议。
3 实验为了验证本文提出“云测试云”的公有云存储系统性能评测方法的可行性、合理性、通用性和可扩展性,本文在Amazon S3平台上进行实验验证。选择Amazon S3公有云存储平台进行验证,是因为Amazon在2016年最新的为用户提供最佳云存储服务体验排名[13]中位居榜首;另外,无论是Amazon EC2还是Amazon S3都提供开放的API,这些API发布时间长,成熟稳定,因此评测过程稳定。本文使用python语言调用EC2和Amazon S3的API,使用云测试云评测方法研发工具进行评测,工具名称为:Amazon S3云测试云工具 (S3 Cloud Testing Cloud,S3CTC)。
3.1 评测指标1) 面向不同典型应用的评测指标。同2.2节面向不同典型应用的评测指标。
2) 面向不同云存储接口的评测指标。从2.2节通用的评测指标中可得,针对Amazon S3(对象存储) 的评测指标如表 3所示。
本文的重点在于提出一个通用的公有云存储系统性能评测框架和评测模型,验证该评测框架和评测模型的可行性和合理性,所以不验证所有评测指标,只是选具有代表性评测指标进行评测。所有的实验都选择在Amazon EC2平台东京地区进行。评测环境的拓扑如图 4所示。
实验时选择不同的虚拟机实例类型进行实验对比, 处理器为Intel Xeon E5-2670 v2 2.50 GHz,内核版本为3.13.0-48-generic,操作系统为Ubuntu 14.04.2 LTS,实例存储为EBS only,不同实例配置信息如表 4所示。
根据2.3节提出的通用可扩展的评测模型,评测过程分为两部分进行:
第一部分评测不同典型应用的完成时间。只评测不同典型应用在同一时间、相同区域 (Amazon EC2平台东京地区)、相同机器类型 (t2.micro) 上的完成时间。
第二部分评测Amazon S3云存储系统性能影响因素。只评测数据操作时的MBPS和API响应时间。
1) 判断Amazon S3云存储性能和用户使用机器类型的关系,文件大小固定为100 MB,实例数量固定为1台,实例类型分别设置为:t2.nano、t2.micro、t2.small、t2.medium、t2.large、m4.large。
2) 判断Amazon S3云存储性能和用户访问文件大小的关系,实例类型固定为t2.micro,实例数量固定为1台,文件大小分别设置为:1 MB、10 MB、50 MB、100 MB、500 MB、1 GB、1.5 GB、2 GB、3 GB。
3) 判断Amazon S3云存储性能和同时访问用户数的关系,文件大小固定为100 MB,实例类型固定为t2.micro,实例数量分别设置为1台、2台、4台、8台、16台。
3.4 实验结果及分析为了排除异常值的影响,每次测试进行5次实验,实验结果去掉一个最大值和一个最小值,然后将剩余的3次实验结果取平均。
第一部 分评测不同典型应用的完成时间。当用户同一时间使用EC2东京地区的t2.micro机器访问Amazon S3时,用户上传不同典型应用的完成时间如图 5所示。
第二部分 评测Amazon S3云存储系统性能影响因素。
1) 评测Amazon S3云存储性能和实例类型关系。
不同实例类型访问Amazon S3云存储系统文件传输速率对比如图 6所示,API响应时间对比如图 7所示。
由图 6和图 7可知:无论上传、下载文件,当实例类型为t2.nano、t2.micro、t2.small、t2.medium时,访问Amazon S3云存储系统的文件传输速率和API响应时间差异并不大; 但是当实例类型为t2.large和m4.large时,访问Amazon S3云存储系统的文件传输速率和API响应时间都比之前4种实例类型性较优。主要原因是t2.large和m4.large的CPU为2个,内存为8 GB,比其他实例类型配置提升一倍。
因此,可得结论,当实例类型为t2.large和m4.large时,访问Amazon S3云存储系统性能较好。
2) 评测Amazon S3云存储性能和文件大小关系。
不同实例类型访问Amazon S3云存储系统文件传输速率对比如图 8所示,API响应时间对比如图 9所示。
由图 8和图 9可知,当文件大小从1 MB到1 GB逐渐增加时,上传下载文件的文件传输速率和API响应时间也随着增加。因为Amazon S3采用流量计费,所以由于经费限制,未测得Amazon S3支持的最优上传下载文件大小。
3) 评测Amazon S3云存储性能和实例个数关系。
不同实例数量同时访问Amazon S3云存储系统文件传输速率对比如图 10和图 11所示,API响应时间对比如图 12所示。
由图 10和图 12可知,当实例个数从1增加到16时,无论上传、下载文件, 文件传输速率和API响应时间都随着实例个数的增加而增加,成线性关系。同样,由于经费限制,未测得Amazon S3支持的最大用户访问数。
但是,结合平均每个实例文件传输速率分析可得:平均上传速率随着实例数增加先降低后逐渐增加,并且增长幅度缓慢,因此可得继续增加实例个数,平均每个实例上传速率会趋于稳定甚至降低,故上传100 MB文件的总速率也会趋于稳定。平均下载速率随着实例数增加而逐渐降低,因此可得继续增加实例个数,平均每个实例下载速率逐渐降低,故下载100 MB文件的总速率会趋于稳定。
综上所述,当实例个数增加到一定值时,并发访问Amazon S3云存储系统的上传、下载速率最终会趋于稳定。
4 工具验证为了验证第3章研发的Amazon S3性能评测工具的准确性,本文使用开源工具s3cmd进行验证。
4.1 验证环境使用s3cmd验证S3CTC准确性的测试环境拓扑如图 13所示。
使用s3cmd验证研发工具时,两种方式的实例配置相同,具体如下:东京地区,实例数1台,实例类型为t2.micro,操作系统为Ubuntu 14.04.2 LTS。
4.2 验证方法因为s3cmd在上传下载文件时,以15 MB进行分块上传或下载。而S3CTC调用S3 API,查看API实现源码,以8 MB分块进行文件处理。因此,为了避免文件分块时间的影响,使s3cmd可以准确验证研发工具准确性,设置验证测试的文件大小为1 MB、2 MB、4 MB、6 MB、8 MB。
具体验证方法如下:首先,使用S3CTC测试1 MB、2 MB、4 MB、6 MB和8 MB文件的上传和下载速率;其次,使用s3cmd测试1 MB、2 MB、4 MB、6 MB和8 MB文件的上传和下载速率;最后,对比分析两种工具测试结果。
4.3 验证结果及分析S3CTC和s3cmd上传文件速率对比如图 14所示。
由图 14可得,S3CTC和s3cmd相对比,S3CTC测试的上传文件速率较低,但是整体误差不超过0.62 MB/s。
S3CTC和s3cmd下载文件速率对比如图 15所示。
由图 15可得,S3CTC和s3cmd相对比,除下载1 MB文件外,下载其他大小文件时,S3CTC测试的下载文件速率较低,但是整体误差不超过0.32 MB/s。
综上所述,上传文件时,S3CTC和s3cmd相比,误差不超过0.62 MB/s;下载文件时,S3CTC和s3cmd相比,误差不超过0.32 MB/s。因此,通过验证可得,S3CTC可以准确测试Amazon S3公有云存储系统性能。
5 结语针对云存储性能评测的难点问题,本文提出一种“云测试云”的公有云存储系统性能评测方法,该方法通过在云计算平台动态申请足够数量的实例,对公有云存储系统性能进行评测。该方法创新在于:第一,构建通用的性能评测框架,可动态伸缩申请实例,自动化部署评测工具及负载,控制并发访问云存储系统,自动释放实例及收集并反馈评测结果;第二,提出多维度的性能评测指标,涵盖不同典型应用,不同云存储接口;第三,提出一种可扩展通用的性能评测模型,该模型可以评测常见典型应用的性能,分析云存储性能影响因素,可适用于任何的公有云存储平台。为了验证该方法的可行性、合理性、通用性和可扩展性,本文利用提出的方法研发Amazon S3云存储系统性能评测工具S3CTC, 使用该工具对Amazon S3云存储系统进行性能评测,并使用s3cmd验证S3CTC工具的准确性。实验结果表明本文方法具有很好的可行性和合理性,评测结果可以为企业开发者和个人用户提供参考意见。
未来的研究工作将该方法扩展到不同的云存储接口,如阿里云的OSS (Open Storage Service)、Ceph等,以及扩展不同的应用,如用户聊天记录备份等。
[1] | 张龙立. 云存储技术探讨[J]. 电信科学, 2010, 26(8A): 71-74. ( ZHANG L L. Cloud storage technology study[J]. Telecommunications Science, 2010, 26(8A): 71-74. ) |
[2] | HILL Z, LI J, MAO M, et al. Early observations on the performance of Windows Azure[J]. Scientific Programming, 2011, 19(2/3): 121-132. |
[3] | AGARWAL D, PRASAD S K. AzureBench:Benchmarking the storage services of the Azure cloud platform[C]//Proceedings of the 2012 IEEE 26th International Parallel and Distributed Processing Symposium Workshops & PhD Forum. Washington, DC:IEEE Computer Society, 2012:1048-1057. |
[4] | PALANKAR M R, IAMNITCHI A, RIPEANU M, et al. Amazon S3 for science grids:a viable solution?[C]//Proceedings of the 2008 International Workshop on Data-aware Distributed Computing. New York:ACM, 2008:55-64. |
[5] | GARFINKEL S L. An evaluation of Amazon's grid computing services:EC2, S3 and SQS, TR-08-07[R]. Cambridge:Harvard University, School for Engineering and Applied Sciences, 2007. |
[6] | GARFINKEL S. Commodity grid computing with Amazon’s S3 and EC2[EB/OL].[2016-10-20].http://www.dtic.mil/dtic/tr/fulltext/u2/a486666.pdf. |
[7] | 周小鹏, 张小芳, 赵晓南. 云存储性能评测研究[J]. 计算机科学, 2014, 41(4): 190-194. ( ZHOU X P, ZHANG X F, ZHAO X N. Cloud storage performance evaluation research[J]. Computer Science, 2014, 41(4): 190-194. ) |
[8] | 何思敏, 康慕宁, 张晓, 等. 云存储性能评测技术与方法研究[J]. 计算机与现代化, 2011(12): 1-4. ( HE S M, KANG M N, ZHANG X, et al. Cloud storage performance evaluation technology and method research[J]. Computer and Modernization, 2011(12): 1-4. doi: 10.3969/j.issn.1006-2475.2011.12.001 ) |
[9] | 齐婵颖, 李战怀, 张晓, 等. 云存储系统性能评测技术研究[J]. 计算机研究与发展, 2014, 51(S1): 223-228. ( QI C Y, LI Z H, ZHANG X, et al. The research of cloud storage system performance evaluation[J]. Journal of Computer Research and Development, 2014, 51(S1): 223-228. ) |
[10] | TUDORAN R, COSTAN A, ANTONIU G, et al. A performance evaluation of Azure and Nimbus clouds for scientific applications[C]//Proceedings of the 2nd International Workshop on Cloud Computing Platforms. New York:ACM, 2012:Article No. 4. |
[11] | COOPER B F, SILBERSTEINS A, TAM E, et al. Benchmarking cloud serving systems with YCSB[C]//Proceedings of the 1st ACM Symposium on Cloud Computing. New York:ACM, 2010:143-154. |
[12] | SHIVAM P, MARUPADI V, CHASE J S, et al. Cutting corners:workbench automation for server benchmarking[C]//Proceedings of USENIX 2008 Annual Technical Conference. Berkeley, CA:USENIX Association, 2008:241-254. |
[13] | 云存储[EB/OL]. [2016-05-15]. http://www.hostucan.cn/cloud-storage. ( Cloud storage[EB/OL].[2016-05-15]. http://www.hostucan.cn/cloud-storage. ) |