掌桥专利:专业的专利平台
掌桥专利
首页

一种参数推荐方法、装置以及计算机存储介质

文献发布时间:2023-06-19 19:07:35


一种参数推荐方法、装置以及计算机存储介质

技术领域

本申请涉及分布式存储技术领域,尤其涉及一种参数推荐方法、装置以及计算机存储介质。

背景技术

分布式存储系统,顾名思义,是将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,不能满足大规模存储应用的需要。分布式存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,不但提高了系统的可靠性、可用性和存取效率,还易于扩展。

在相关技术中,为了提高分布式存储系统的性能,通常考虑硬件优化和软件优化两个层面。其中,从硬件层面考虑优化时,通常对硬件具有硬性要求,优化成本很高。从软件层面考虑优化时,对于一个分布式存储系统,例如Ceph,其提供的可配置参数可达上千个之多,在配置分布式存储系统时,参数设置很大程度上依赖于存储工程师的经验;然而即使是经验丰富的存储工程师,也很难保证设置的参数一定是能够使分布式存储系统的性能达到最佳的最优参数。

目前,虽然针对分布式存储系统的参数调优方案有很多,但是均存在过于依赖技术人员的知识基础和实践经验、难以兼容多种存储场景需求等缺陷。

发明内容

本申请提供了一种参数推荐方法、装置以及计算机存储介质,能够根据不同存储场景所侧重的性能指标,有针对性地对分布式存储系统进行参数推荐,可以减少资源消耗,而且还可以提高参数优化效率。

本申请的技术方案是这样实现的:

第一方面,本申请实施例提供了一种参数推荐方法,该方法包括:

确定分布式存储系统的参数输入集合以及在至少一种存储场景下配置的系统参数;

根据所述参数输入集合和所述系统参数,确定至少一种性能指标;

根据所述参数输入集合、所述系统参数以及所述至少一种性能指标进行模型训练,确定至少一种性能预测模型和至少一种更新参数集合;其中,每种性能指标对应一种性能预测模型和一种更新参数集合,且所述更新参数集合是所述参数输入集合在所述模型训练过程中迭代更新后得到的;

根据所述至少一种性能预测模型和所述至少一种更新参数集合,向所述分布式存储系统进行参数推荐。

第二方面,本申请实施例提供了一种参数推荐装置,该参数推荐装置包括确定单元,训练单元以及推荐单元,其中,

所述确定单元,配置为确定分布式存储系统的参数输入集合以及在至少一种存储场景下配置的系统参数;以及根据所述参数输入集合和所述系统参数,确定至少一种性能指标;

所述训练单元,配置为根据所述参数输入集合、所述系统参数以及所述至少一种性能指标进行模型训练,确定至少一种性能预测模型和至少一种更新参数集合;其中,每种性能指标对应一种性能预测模型和一种更新参数集合,且所述更新参数集合是所述参数输入集合在所述模型训练过程中迭代更新后得到的;

所述推荐单元,配置为根据所述至少一种性能预测模型和所述至少一种更新参数集合,向所述分布式存储系统进行参数推荐。

第三方面,本申请实施例还提供了一种参数推荐装置,该参数推荐装置包括存储器和处理器,其中,

所述存储器,用于存储能够在所述处理器上运行的计算机程序;

所述处理器,用于在运行所述计算机程序时,执行如第一方面所述的参数推荐方法。

第四方面,本申请实施例提供了一种计算机存储介质,该计算机存储介质存储有计算机程序,所述计算机程序被至少一个处理器执行时实现第一方面所述的参数推荐方法。

本申请所提供的一种参数推荐方法、装置以及计算机存储介质,通过确定分布式存储系统的参数输入集合以及在至少一种存储场景下配置的系统参数;根据所述参数输入集合和所述系统参数,确定至少一种性能指标;根据所述参数输入集合、所述系统参数以及所述至少一种性能指标进行模型训练,确定至少一种性能预测模型和至少一种更新参数集合;其中,每种性能指标对应一种性能预测模型和一种更新参数集合,且所述更新参数集合是所述参数输入集合在所述模型训练过程中迭代更新后得到的;根据所述至少一种性能预测模型和所述至少一种更新参数集合,向所述分布式存储系统进行参数推荐。这样,在进行参数推荐时,由于在模型训练中考虑了不同存储场景下的系统参数,如此,可以根据该训练得到的性能预测模型和更新参数集合有针对性地对分布式存储系统进行参数推荐,无需再针对每种参数都进行分析,且整个过程自动化实现,能够避免人工干预;另外将性能预测模型加入到参数寻优过程,不仅提高了参数优化效率,而且还减少了资源消耗。

附图说明

图1为本申请实施例提供的一种参数推荐方法的流程示意图;

图2为本申请实施例提供的另一种参数推荐方法的流程示意图;

图3为本申请实施例提供的一种参数推荐系统的应用架构示意图;

图4为本申请实施例提供的一种参数推荐装置的组成结构示意图;

图5为本申请实施例提供的另一种参数推荐装置的组成结构示意图;

图6为本申请实施例提供的一种参数推荐装置的具体硬件结构示意图;

图7为本申请实施例提供的一种参数推荐设备的组成结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。可以理解的是,此处所描述的具体实施例仅仅用于解释相关申请,而非对该申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关申请相关的部分。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。

在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。

需要指出,本申请实施例所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。

应理解,分布式存储系统(也可以称为“分布式存储软件”、“分布式存储集群”、“分布式文件系统”等等),其本身可以看作一个排队模型,客户端与分布式存储系统的交互主要是输入/输出(Input/Output,I/O)相关指令的队列处理。因此,针对分布式存储系统的优化经常以队列模型为切入点,主要是增加并行度以及降低服务时间两个方向,这两个方向都与服务器的硬件配置,操作系统设置等因素息息相关,比如中央处理器(CentralProcessing Unit,CPU)的处理能力,磁盘的并行度,软件设计中的IO路径长度,内存大小,内存回收机制,网络带宽等等。

在相关技术中,针对分布式存储系统的参数调优方案有很多,多数调优方案是首先划定调参范围,根据集群运行时的性能监控进行实时调整,调整策略较为依赖技术人员的知识基础和实践经验。还有一些调优方案将统计与机器学习的技术应用于参数调优,通过参数取值范围抽样构建输入集合,确定评估指标,然后通过尝试不同参数配置,选择性能最优的参数配置。这种方法理论上可找到最优解,尤其针对非线性的场景,调优效果显著,并且可以实现自动调优,对运维人员的要求并不高,但是其迭代过程会耗费大量系统资源,并且,每次的结果不可兼容处理不同硬件配置,操作系统配置等。另外,虽然也有调优方案提出首先构建预测模型,将预测模型引入参数训练过程中,可以减少资源的消耗,加快寻找最优参数组合的时间,但是本质上还是与集群本身配置高耦合。

基于此,本申请实施例提供了一种参数推荐方法,该方法的基本思想是:确定分布式存储系统的参数输入集合以及在至少一种存储场景下配置的系统参数;根据所述参数输入集合和所述系统参数,确定至少一种性能指标;根据所述参数输入集合、所述系统参数以及所述至少一种性能指标进行模型训练,确定至少一种性能预测模型和至少一种更新参数集合;其中,每种性能指标对应一种性能预测模型和一种更新参数集合,且所述更新参数集合是所述参数输入集合在所述模型训练过程中迭代更新后得到的;根据所述至少一种性能预测模型和所述至少一种更新参数集合,向所述分布式存储系统进行参数推荐。这样,在进行参数推荐时,由于在模型训练中考虑了不同存储场景下的系统参数,如此,可以根据该训练得到的性能预测模型和更新参数集合有针对性地对分布式存储系统进行参数推荐,无需再针对每种参数都进行分析,且整个过程自动化实现,能够避免人工干预;另外将性能预测模型加入到参数寻优过程,不仅提高了参数优化效率,而且还减少了资源消耗。

下面将结合附图对本申请各实施例进行详细说明。

本申请的一实施例中,参见图1,其示出了本申请实施例提供的一种参数推荐方法的流程示意图。如图1所示,该方法可以包括:

S101、确定分布式存储系统的参数输入集合以及在至少一种存储场景下配置的系统参数。

需要说明的是,本申请实施例提供的参数推荐方法用于在创建分布式存储系统之前,结合实际存储场景推荐一套使得分布式存储系统的性能指标最佳的优化参数集合。该方法可以应用于进行参数推荐的装置,或者集成有该装置的设备、系统等。这里,电子设备可以是诸如计算机、智能手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(PersonalDigital Assistant,PDA)、导航装置等等,本申请实施例对此不作具体限定。

在本申请实施例中,分布式存储系统的参数输入集合是指来自于分布式存储系统自身的可配置参数,以分布式存储系统Ceph为例,其自身的可配置参数可达上千种,例如,一次写journal的最大字节(byte)数:journal max write bytes,任意时刻队列中存储的最大操作数:journal queue max ops等。

还需要说明的是,在申请实施例中,初始参数集合可以是对分布式存储系统自身的大量可配置参数经过筛选之后所优化出来的参数集合,即并非将分布式存储系统的每一个可配置参数都作为初始参数集合中的参数。

另外,这里的系统参数则是指在不同的存储场景(例如操作系统、硬件配置以及存储策略的不同)下系统的一些固有配置参数,例如:CPU核数、内存大小、最大线程数限制等等。在不同的存储场景下,即使是相同的分布式存储系统的配置参数,其性能指标也可能会有不同的表现。在本申请实施例中,对于系统参数而言,可以分别确定在不同的存储场景下配置的系统参数,例如裸金属块存储,虚机块存储,对象存储,全闪块存储等不同的存储场景。

S102、根据参数输入集合和系统参数,确定至少一种性能指标。

需要说明的是,在确定参数输入集合和系统参数之后,就可以根据参数输入集合和系统参数,确定在不同的参数组合下,分布式存储系统的性能指标。

在一些实施例中,所述根据所述参数输入集合和所述系统参数,确定至少一种性能指标,可以包括:

根据参数输入集合和系统参数,搭建至少一种存储场景对应的测试集群;

在至少一种存储场景对应的测试集群的运行过程中,利用性能测试工具得到至少一种性能指标;

其中,性能指标包括下述至少一项:单位时间读写次数IOPS、吞吐量、中央处理器CPU利用率、内存利用率、交换内存SWAP利用率和读写延迟。

需要说明的是,分布式存储系统的参数以及系统参数的不同取值,均有可能对分布式存储系统的性能产生影响。这一步骤主要是通过分布式存储系统的参数输入集合以及系统参数,通过性能测试工具例如perf、fio等确定在不同的参数取值以及组合下,分布式存储系统的性能指标。性能指标主要指读写指标,包括但不限于,单位时间读写次数(Input/Output Operations Per Second,IOPS)、吞吐量、中央处理器(CentralProcessing Unit,CPU)利用率、内存利用率、交换内存(SWAP)利用率和读写延迟。

S103、根据参数输入集合、系统参数以及至少一种性能指标进行模型训练,确定至少一种性能预测模型和至少一种更新参数集合。

需要说明的是,将参数输入集合、系统参数以及至少一种性能指标作为训练集进行模型训练,就能够得到至少一种性能预测模型以及一种更新参数集合,其中,每一种性能指标分别对应一种性能预测模型和一种更新参数集合,且更新参数集合是参数输入集合在模型训练过程中迭代更新后得到的。

S104、根据至少一种性能预测模型和至少一种更新参数集合,向分布式存储系统进行参数推荐。

需要说明的是,在经过前述步骤之后,就得到了分别与至少一种性能指标相对应的至少一种性能预测模型和一种更新参数集合。然后根据这至少一种性能预测模型和至少一种更新参数集合,确定出最优参数集合,进而可以向分布式存储系统进行参数推荐。

还需要说明的是,为了提高分布式存储系统的性能,一般会考虑硬件优化和软件优化两个层面。在一种可能的实施方式中,从硬件层面考虑优化,对于硬盘类型,固态硬盘(Solid State Disk,SSD)的读写性能要远远高于机械硬盘(Hard Disk Drive,HDD),尤其是基于非易失性存储器标准(Non-Volatile Memory express,NVMe)协议的SSD,可以充分发挥CPU多核的优势,极大地增加并发度,但是其成本也是相当可观的,所以全闪集群的使用范围有限。除此之外,如果集群采用全闪部署,那磁盘IO将不再是瓶颈,IO路径的长度,尤其是操作系统内核态的切换,以及涉及到分布式,就会涉及到的多节点网络通信,这将成为新的瓶颈。部分厂商引入远程直接数据存取(Remote Direct Memory Access,RDMA),存储性能开发工具包(Storage Performance Development Kit,SPDK)的用户态等方案解决新的性能瓶颈。但是,以上这些提高分布式存储系统性能的解决方案,都无疑对硬件有硬性要求,经济成本较高,改造成本也很高。

在另一种可能的实施方式中,从软件层面考虑优化,以分布式存储系统Ceph为例,作为一款常见的开源分布式存储系统,其提供的可配置参数达上千个之多,并且在不同的存储场景(如副本或纠删码)下,部署在不同的设备(如HDD或SSD)上,采用不同的操作系统(如x86或ARM)时,其参数设定值对性能的影响与这些因素都相关。即使是经验丰富的存储工程师,也无法保证在不同场景下选择最合适的参数用以发挥出分布式存储系统的最佳性能。

示例性地,Ceph的filestore中有一个参数filestore_op_threads,其表示IO线程数,如果该参数设定成一个较大的值,能够加快IO处理的速度,但是如果线程太多,频繁的线程切换也会影响分布式存储系统的性能。再比如,Ceph的bluestore的设计中应当尽量避免双写,但元数据以及一些比较小的数据(如HDD上小于16K,SSD上小于64K的数据)会写入关键字-值(key-value,kv)数据库,数据库的索引特性可以加快读写速度,但与此同时,这部分同样也带来了双写的问题。

基于此,在又一种可能的实施方式中,本申请实施例可以根据硬件配置,系统设置,存储场景等推荐最适合的一套分布式存储系统的参数配置。本申请是从软件层面对分布式存储系统进行性能优化,以参数自动调优为切入点,提供一套参数自动调优的方法以及系统,可以根据硬件配置、存储策略以及不同的使用场景选择出最优的参数组合,以提升不同分布式存储系统的存储性能。

本申请实施例提供了一种参数推荐方法,通过确定分布式存储系统的参数输入集合以及在至少一种存储场景下配置的系统参数;根据参数输入集合和系统参数,确定至少一种性能指标;根据参数输入集合、系统参数以及至少一种性能指标进行模型训练,确定至少一种性能预测模型和至少一种更新参数集合;其中,每种性能指标对应一种性能预测模型和一种更新参数集合;根据至少一种性能预测模型和至少一种更新参数集合,向分布式存储系统进行参数推荐。这样,由于在模型训练中考虑了不同存储场景下的系统参数,如此,根据该训练得到的性能预测模型可以实现在不同存储场景下的最优参数推荐,而且还可以减少资源消耗。

在本申请的另一实施例中,由于本申请实施例主要应用于基础设施即服务(Infrastructure as a Service,IaaS)层提供存储资源服务的分布式软件定义存储(Software Define Storage,SDS)系统,对于IaaS层的分布式SDS系统,这类分布式存储系统涉及到的参数数量往往很多,且每种参数取值范围都很广,在不同的使用场景下,对性能有决定性影响的参数也不尽相同。

以分布式存储系统Ceph为例,其提供的可配置参数可达上千种之多,但是并非每种参数都会对性能产生影响,而且在不同的存储场景下,对性能产生影响的参数也不尽相同。因此,有必要通过一定方式对其进行参数筛选,即只将会对分布式存储系统的性能产生影响或者产生较大影响的参数筛选出来,再针对这些类型的参数进行有针对性的训练,并最终产生这些参数的最优参数集合,用以创建分布式存储系统。

因此,在一种具体的示例中,本申请实施例可以通过一定方式对分布式存储系统的参数类型进行筛选,确定分布式存储系统的参数输入集合。参见图2,其示出了本申请实施例提供的另一种参数推荐方法的流程示意图。如图2所示,该方法可以包括:

S201、获取分布式存储系统的初始参数集合,并对初始参数集合中的参数进行预设参数取值范围的随机取样,确定测试样本。

S202、根据测试样本和系统参数,确定至少一种性能指标。

S203、利用第二预设算法对测试样本、系统参数和至少一种性能指标进行模型训练,确定至少一种中间性能预测模型以及测试样本中每种参数对每种中间性能预测模型的预测准确率贡献度。

S204、对所确定的预测准确率贡献度进行贡献度分析,根据分析结果从测试样本中选取参数输入集合。

需要说明的是,分布式存储系统的初始参数集合包括分布式存储系统的所有可配置参数(或者也可以是有经验的工程师将必然对分布式存储系统的性能没有影响的参数进行去除后所得的参数集合),分布式存储系统的每个可配置参数都有其特定的取值范围,即预设参数取值范围,对每种参数均在其预设参数取值范围进行随机取样,就得到了测试样本。

还需要说明的是,系统参数可以是分布式存储系统在至少一种存储场景下配置的系统参数;这里的至少一种存储场景可以是裸金属块存储,虚机块存储,对象存储,全闪块存储等,本申请实施例不作具体限定。如此,在确定出测试样本和系统参数后,根据测试样本和系统参数,可以得到多种分布式存储系统的参数和系统参数的参数组合,然后在每一种参数组合下,均能够确定该种参数组合时分布式存储系统的性能表现,即每种参数组合都会对应一组性能指标。

具体来说,可以通过性能测试工具,例如perf、fio等,根据测试样本和系统参数搭建分布式存储系统,然后运行该分布式存储系统,就能够得到具体的参数组合与性能指标之间的对应关系。

这里,性能指标主要指读写指标,可以包括但不限于下述中的一种或者多种,每秒进行读写操作的次数(即IOPS),吞吐量(可以用mbps表示),CPU利用率,内存利用率,SWAP使用率,读写延迟等。其中,关注较多的是IOPS、mbps以及读写延迟这三种性能,但是具体得到哪些性能指标可以结合实际情况具体设置,本申请实施例对此不作具体限定。

在得到至少一组性能指标之后,就可以利用第二预设算法对测试样本、系统参数以及性能指标进行训练,得到中间性能预测模型,这里中间性能预测模型与前述实施例中所述的性能预测模型为同类型模型,只是中间性能预测模型还不能作为最终确定出的性能预测模型,其作为确定参数输入集合的部分依据,相当于确定性能预测模型中的中间过程。

在本申请实施例中,第二预设算法选择随机森林算法,通过随机森林算法来进行训练得到中间性能预测模型,以测试样本以及系统参数作为输入,性能指标作为输出。随机森林(Random Forest,RF)是一个包含多棵决策树的分类器,其中的每棵决策树都可以用来作预测,通过建立多棵决策树并将它们融合起来从而得到了一个更加准确和稳定的模型。由于参数取值和性能指标往往不是线性关系,通过随机森林的算法,可以很好地解决参数取值与性能指标之间的非线性关系问题。

还需要说明的是,本申请实施例得到的一组中间性能预测模型,这一组中间性能预测模型包括与至少一种性能指标分别对应的至少一个中间性能预测模型,即对于每一个性能指标,都能够得到一个与其相对应的中间性能预测模型。例如:中间IOPS预测模型、中间mbps预测模型以及中间读写延迟预测模型等。

还需要说明的是,在得到每种性能指标对应的中间性能预测模型的同时,还能够得到每一参数对每一中间性能预测模型的预测准确率贡献度。

在一些实施例中,在利用第二预设算法对测试样本、系统参数和至少一种性能指标进行模型训练,确定至少一种中间性能预测模型以及测试样本中每种参数对每种中间性能预测模型的预测准确率贡献度之前,该方法还可以包括:

对参数输入集合中每一类型的参数以及至少一种性能指标进行突变点检测;

将至少一种性能指标发生突变时所对应的参数类型确定为用于进行模型训练的参数类型。

需要说明的是,在确定每种参数对每种中间性能预测模型的预测准确率贡献度之前,为了避免计算不必要的参数对预测准确率的贡献度,还可以利用突变点检测的方法确定是否需要对参数进行预测准确率贡献度检测,也即确定在进行模型训练的时候,是否需要用到某一参数。

具体来说,在训练中间性能预测模型的过程中,一种参数的每个参数数值的改变对性能的影响可能很大,也可能很小。如果对每次的性能结果都计算参数的预测准确率贡献度没有意义,因为这个性能的变化可能是很微量的,如果某个参数数值点上这个性能指标发生了突变,那么这个时候就有计算预测准确率贡献度分析的必要,突变点检测也就是在找这个性能指标发生突变的点所对应的参数类型。对性能指标的影响存在突变点的参数类型所对应的参数集合将作为训练数据,用于训练得到中间性能预测模型,并确定这些参数对中间性能预测模型的预测准确率贡献度,而对于对性能指标的影响不存在突变点的那部分参数,将不再作为训练中间性能预测模型的参数。

在这里,每个参数对每个性能指标对应的中间性能预测模型的预测准确率贡献度可能是不同的。示例性地,对于参数1,其对性能A的影响很大,其值稍作改变就有可能导致性能A从极差变到极好,那么对于性能A而言,参数1就是一个重要参数;而对于性能B,参数1对其影响很小,在参数1的取值范围之内,不管参数1如何取值,性能B都不会改变或者改变很小,那么对于性能B而言,参数1就可以视作一个“无关”参数。参数对某一性能的影响大小可以通过参数对该性能指标对应的性能预测模型的预测准确率贡献度来表征,预测准确率贡献度越大,说明该参数对这种性能的影响越大;反之,预测准确率贡献度越小,说明该参数对这种性能的影响越小。

因此,可以通过对预测准确率贡献度进行分析,并根据分析结果从初始参数集合中选取出参数输入集合。

在一些实施例中,所述对所确定的预测准确率贡献度进行贡献度分析,根据分析结果从所述测试样本中选取所述参数输入集合,可以包括:

从所确定的预测准确率贡献度中选取预测准确率贡献度大于预设贡献度阈值的候选预测准确率贡献度,并利用候选预测准确率贡献度对应的参数确定第一参数集合。

需要说明的是,本申请实施例以参数对中间性能预测模型的预测准确率贡献度来对参数进行筛选,可以设置一个预设贡献度阈值,当参数对中间性能预测模型的预测准确率贡献度超过预设贡献度阈值时,就说明这个参数对性能有较大影响,这个参数就可以作为被筛选出来的重要参数。示例性地,预设贡献度阈值可以为50%、60%等,本申请实施例对此不作具体限定。

具体来说,首先从所确定的预测准确率贡献度中选取所述预测准确率贡献度大于预设贡献度阈值的候选预测准确率贡献度,然后确定出候选预测准确率贡献度所对应的参数,这些参数即为被筛选出来的重要参数,这个重要参数就组成了第一参数集合,对这些参数在其预设参数取值范围进行随机取样,就完成了一次对分布式存储系统的参数输入集合进行筛选的过程。

还需要说明的是,对于系统参数而言,不同的系统参数对分布式存储系统的性能影响也是不同的。因此,在确定测试样本中每一参数相对每一种性能预测模型的预测准确率贡献度的同时,还可以将系统参数中每种系统参数相对每一种性能预测模型的预测准确率贡献度,再根据相同的方法,将对某一性能指标对应的性能预测模型的预测准确率贡献度超过贡献度阈值的系统参数筛选出来,作为更新后的系统参数。

这样,通过这种方式可以进行多次迭代,不断更新参数输入集合,即利用第一参数输入集合取代初始参数输入集合继续进行模型训练。

进一步地,在一些实施例中,所述方法还包括:

确定所述至少一种性能预测模型的迭代次数;

当所述迭代次数小于预设迭代次数时,将所述第一参数集合确定为所述初始参数集合,对所述迭代次数执行加1处理,并返回执行所述对所述初始参数集合中的参数进行预设参数取值范围的随机取样,确定测试样本确定测试样本的步骤;

当所述迭代次数达到预设迭代次数时,将所述第一参数集合确定为所述参数输入集合,并将最近一次迭代更新后得到的模型确定为所述至少一种性能预测模型。

需要说明的是,预设迭代次数可以是结合实际模型的复杂程度以及测试环境等因素确定的,例如可以是10次、30次、100次等,本申请实施例对此不作具体限定。

其中,每进行一次训练得到至少一种中间性能测试模型的过程称作一次迭代,当迭代次数小于预设迭代次数时,此时还需要继续筛选参数,在确定出至少一种性能预测模型以及对应的第一参数集合之后,此时将第一参数集合确定为初始参数输入集合,并对迭代次数执行加1处理,然后根据迭代更新后得到的第一参数集合(即更新的初始参数输入集合),返回执行对初始参数集合中的参数进行预设参数取值范围的随机取样,确定测试样本的步骤,并继续进行训练以得到新的至少一组中间性能预测模型。

当迭代次数达到预设次数时,这时候就无需再筛选参数,此时得到的第一参数集合就可以直接确定为参数输入集合,并且还可以直接将最近一次迭代更新后得到的模型确定为最终的至少一种性能预测模型。

另外,不再进行迭代的依据还可以是,当性能预测模型预测到的性能指标与真实性能指标之差的绝对值小于误差阈值时(或者是模型的损失函数值小于预设损失阈值时),此时说明性能预测模型的预测准确率已经较高,那么也不再进行迭代。

也就是说,通过性能预测模型(筛选参数的过程中的性能预测模型称作中间性能预测模型)自身来对用于训练性能预测模型的初始参数输入集合(也可以包括系统参数)不断进行更新,直至确定最终的参数输入集合,这是一个迭代的过程,可以通过最大期望(Expectation-Maximization algorithm,EM)算法来完成。

这样,通过将训练性能预测模型的过程与确定参数输入集合相结合,选择出参数输入集合。参数输入集合一方面作为进行性能预测模型训练时的样本参数,另一方面作为需要被优化的参数。这样做的好处是,由于最终得到的性能预测模型是由对性能影响最大的那部分参数训练得到的,一方面可以使得性能预测模型的预测结果更准确,另一方面不需要对那些对于性能没有影响或者影响很小的参数进行参数优化,减少了资源的消耗。

在另一种具体的示例中,本申请实施例还可以通过IO栈分析的方式确定分布式存储系统的参数输入集合。因此在一些实施例中:所述确定分布式存储系统的参数输入集合,可以包括:

对分布式存储系统进行IO栈分析,确定IO栈的相关参数;

对IO栈的相关参数进行预设IO栈参数取值范围的随机取样,得到相关参数集合,将相关参数集合确定为参数输入集合。

需要说明的是,如果某些类型的参数与分布式存储系统的IO栈相关,那么这些类型的参数必然会对分布式存储系统的性能产生影响。因此,可以通过对分布式存储系统的IO栈进行分析,确定出IO栈的相关参数,这些参数会影响IO路径的响应,可以作为对分布式存储系统的性能产生影响的重要参数。对这些重要参数(即IO栈的相关参数)在其参数取值范围(即预设IO栈参数取值范围)内进行随机取样就能够得到分布式存储系统的参数输入集合。

但是,在通过这种方式确定分布式存储系统的参数输入集合时,往往需要研发人员对分布式存储系统的实现有较为深入的了解,比较依赖于研发人员的经验。

在确定分布式存储系统的参数输入集合以及在至少一种存储场景下配置的系统参数之后,就可以根据参数输入集合和系统参数,确定至少一种性能指标。

需要说明的是,由于在本申请实施例中,确定参数输入集合的过程中是与训练预测模型的过程相结合的,那么这里最终确定出来的至少一种性能预测模型和至少一种更新参数集合,就是在前述迭代过程中,当迭代次数达到预设次数时,最近一次迭代更新后得到的至少一种性能预测模型,与至少一种性能预测模型相对应的一种更新参数集合就是最近一次迭代更新后的参数输入集合中用于训练相应性能预测模型的参数集合。

示例性地,假设对于一个分布式存储系统,其可配置参数有100个,分别为参数1、参数2、参数3…参数100,将这100个参数均在其预设参数取值范围内进行随机取样得到参数输入集合,然后与系统参数(系统参数可以作为被筛选的参数,也可以不对系统参数进行筛选,本示例假定不对系统参数进行筛选,仅筛选分布式存储系统自身的可配置参数)一起进行性能测试,从而得到多个对应的性能指标值,假设这里只对该分布式存储系统的性能A、性能B以及性能C进行检测。那么,在经过前述迭代过程(例如迭代100次)之后,最终分别得到了与性能A、B和C相对应的三个预测模型,而且由于在迭代过程中,基于每个参数对性能预测模型的预测准确率贡献度确定了哪些参数对特定性能指标的影响的较大的。

在迭代100次之后,最终与A性能指标对应的A预测模型是由对参数1~参数15以及参数27组成的参数输入集合得到的,即A预测模型所对应的更新参数集合就是参数1~参数15以及参数27;同理,如果最终与B性能指标对应的B预测模型是由对参数5~参数10以及参数70~参数75组成的参数输入集合得到的,即B预测模型所对应的更新参数集合就是参数5~参数10以及参数70~参数75;如果最终与C性能指标对应的C预测模型是由对参数60~参数73组成的参数输入集合得到的,即C预测模型所对应的更新参数集合就是参数60~参数73。而除了执行参数外的其它参数则由于对性能影响并不大,并没有作为训练性能预测模型的参数输入集合。

还需要说明的是,如果在步骤S101中,参数输入集合是基于IO栈分析的方法得到的,这里,就可以直接根据参数输入集合、系统参数以及至少一种性能指标进行模型训练,得到至少一种性能预测模型,以及分别与这至少一种性能预测模型相对应的参数集合(也称为更新参数集合)。

由于本申请实施例中,最终得到的性能预测模型是根据多次迭代更新后的更新参数集合得到的,使得使用该模型进行参数推荐时,能够得到与性能直接相关的参数的最优参数集合。另外,由于本申请实施例在训练性能预测模型时,将系统参数也作为参数输入集合来确定性能指标并用于性能预测模型的训练。这样,在进行参数推荐时,就可以直接得到与分布式存储系统的存储场景的系统参数相互配合的一套配置参数,能够得到在特定存储场景下,使得分布式存储系统性能最佳的配置参数。

进一步地,在一些实施例中,在模型训练过程中,该方法还可以包括:

在得到第一参数集合之后,根据第一参数集合中每种参数对每种性能预测模型的预测准确率贡献度以及性能预测模型与性能指标的对应关系,确定每种性能指标对应的第一参数集合中每种参数的预测准确率贡献度;

在每种性能指标下,从所确定的预测准确率贡献度中选取预测准确率贡献度大于预设贡献度阈值的候选预测准确率贡献度,将候选预测准确率贡献度对应的参数确定为每种性能指标对应的更新参数集合。

需要说明的是,在对性能预测模型进行训练的过程中,在得到第一参数集合后,就能够根据第一参数集合中,每种参数对每种性能预测模型的预测准确率贡献度,以及性能预测模型和性能指标的对应关系,确定出对于每种性能指标而言,更第一参数集合中每种参数对其的预测准确率贡献度。

这样,分别对于每种性能指标,都能够得到一个第一参数集合,将在每一种性能指标下,第一参数集合中对该性能指标的预测准确率贡献度大于预设贡献度阈值的参数确定为该性能指标对应的更新参数集合。从而可以确定出参数与性能指标之间的对应关系。

进一步地,在确定至少一种性能预测模型和至少一种更新参数集合之后,就可以根据这至少一种性能预测模型和至少一种目标参数集合,向分布式存储系统进行参数推荐。具体地,在一些实施例中,所述根据至少一种性能预测模型和至少一种目标参数集合,向分布式存储系统进行参数推荐,可以包括:

获取分布式存储系统在预设存储场景下配置的目标系统参数;

根据待进行参数推荐的目标性能指标,从至少一种性能预测模型中选择与目标性能指标对应的目标性能预测模型,以及从至少一种更新参数集合中选择与目标性能指标对应的目标参数集合;

根据目标性能预测模型,利用第一预设算法对目标参数集合和目标系统参数进行参数优化,得到目标性能指标对应的优化参数集合,将优化参数集合推荐给分布式存储系统。

需要说明的是,本申请实施例提供的参数推荐方法能够根据当前的使用场景进行最优参数推荐,在根据至少一种性能预测模型和至少一种目标参数集合,向分布式存储系统进行参数推荐时,首先获取分布式存储系统在预设存储场景下配置的目标系统参数,预设存储场景即为需要创建的分布式存储系统具体的存储场景,例如,采用何种存储策略,硬件如何配置,操作系统选什么等,每个存储场景所侧重的性能指标是不同的。

因此,再根据预设存储场景获取需要进行参数推荐的目标性能指标,从至少一种性能预测模型中选择目标性能指标所对应的目标性能预测模型,同时从至少一种更新参数集合中选取出目标性能指标对应的目标参数集合。然后将目标性能模型输入第一预设算法,通过第一预设算法来对目标参数集合和目标系统参数进行参数优化,得到与目标性能指标相对应的优化参数集合,将得到的优化参数集合向分布式存储系统进行参数推荐。

需要说明的是,在本申请实施例中,第一预设算法可以为EM算法,将目标参数集合和目标系统参数输入目标性能预测模型,然后将性能预测模型输入EM算法,通过EM算法的迭代计算,得到使得目标性能指标最佳的优化参数集合。另外,第一预设算法也可以为贝叶斯算法等,本申请实施例对此不作具体限定。

简单来说,本申请实施例提供的参数推荐方法,首先训练与不同性能指标相对应的性能预测模型,用于训练性能预测分布式存储系统的参数输入集合是基于IO栈分析和/或,在训练性能预测模型的过程中,根据每一参数对每种性能指标对应的性能预测模型的预测准确率贡献度确定的。这样,在得到性能预测模型的同时,还可以获取各参数与性能指标的对应关系,得到性能预测模型之后,就可以根据具体存储场景例如硬件配置、存储策略等确定在当前场景下更关注哪种类型的性能指标,然后选择该种性能指标对应的性能预测模型,并将该性能预测模型所对应的将参数输入集合、系统参数以及性能预测模型输入第一预设算法中,进行迭代计算,最终得到当前存储场景下的最优参数集合,将最优参数集合向分布式存储系统推荐,以根据最优参数集合创建分布式存储系统。

也就是说,本申请实施例在进行参数推荐时,就可以根据实际存储场景所侧重的性能指标选择相应的性能预测模型,根据性能预测模型以及更新参数集合,确定在更新参数集合中的参数在那种取值组合下,能够使得性能指标达到最佳,这组参数取值组合就作为最优参数组合进行推荐,并根据推荐的最优参数组合创建分布式存储系统。

本实施例提供了一种参数推荐方法,通过确定分布式存储系统的参数输入集合以及在至少一种存储场景下配置的系统参数;根据参数输入集合和系统参数,确定至少一种性能指标;根据参数输入集合、系统参数以及至少一种性能指标进行模型训练,确定至少一种性能预测模型和至少一种更新参数集合;其中,每种性能指标对应一种性能预测模型和一种更新参数集合,且更新参数集合是参数输入集合在模型训练过程中迭代更新后得到的;根据至少一种性能预测模型和至少一种更新参数集合,向分布式存储系统进行参数推荐。这样,能够根据存储场景的不同选择与当前存储场景所侧重的性能指标相对应的性能检测模型,同时还可以获知哪些参数对该性能指标的影响最大,从而根据性能预测模型对只对这些重要参数进行有针对性的优化,减小了不必要的资源消耗,提高了参数优化的效率。另外,由于将性能预测模型加入了参数寻优,在减小资源消耗的同时,还减小了系统的耦合性,因为由于训练出了精准的性能预测模型,在进行参数优化时,不需要重新去搭建一个分布式存储系统来检验其性能指标。而且,本申请实施例在性能预测模型的训练过程中能够得到参数和性能指标的对应关系,有助于研发人员有针对性地对IO栈进行改造工作,提高优化效率。

本申请的另一实施例中,参见图3,其示出了本申请实施例提供的一种参数推荐系统的应用架构示意图。如图3所示,该参数推荐系统可以包括三大模块,分别为:参数输入集合构建模块301、性能指标获取模块302以及模型训练与参数优化模块303。

参数输入集合构建模块301用于构建分布式存储系统的参数输入集合。可以基于IO栈分析的方法或者基于特征贡献度分析的方法确定出参数的类型,然后对这些类型的参数进行随机取样,得到分布式存储系统的参数输入集合。

性能指标获取模块302用于根据分布式存储系统的参数输入集合以及系统参数来确定性能指标。

模型训练与参数优化模块303用于训练性能预测模型,并根据性能预测模型进行参数优化。模型训练与参数优化模块303可以分为两个子模块,分别为模型训练子模块303A以及参数优化子模块303B。其中,模型训练子模块303A一方面用于得到输入参数对性能预测模型的预测准确率贡献度,以对其进行分析后更新参数输入集合,另一方面用于获取性能预测模型;参数优化子模块303B用于在训练性能预测模型的过程中,对第二预设算法的超参数进行优化。

下面将结合图3对本申请实施例提供的一种参数推荐系统各模块的工作流程进行详细阐述,需要说明的是,各模块之间的工作并非是独立分割的,例如:在对参数输入集合构建模块301的工作流程进行阐述时,还需要结合模型训练与参数优化模块303来对工作流程进行具体说明。

如图3所示,参数输入集合构建模块301可以对应步骤S3011至S3022,具体如下:

S3011、选择参数类型。

S3012、对参数进行随机取样。

需要说明的是,本申请实施例提供一种参数推荐方法,应用于作为IaaS层提供资源服务的SSD的分布式存储系统,对其进行参数推荐,对于作为IaaS层提供资源服务的SSD的分布式存储系统,其往往涉及到大量的可配置参数。以Ceph为例,其提供的可配置参数达上千个之多,且每个参数都有一定的取值范围,如果对每种参数组合都进行评估将会浪费大量资源;而且在这上千种参数中,并非每个参数都会对分布式存储系统的性能产生较大影响,所以,只需要将对性能有显著影响的参数作为样本进行训练,就能够对参数优化起到很好的效果;如果对根本不会对性能产生影响或者对性能影响很小的参数也进行训练,无疑会造成系统资源的浪费,且耗费更多时间。因此,本申请实施例首先将有必要作为训练样本的参数类型筛选出来。

具体来说,选择参数类型即是对参数进行筛选,可以按照以下两种方式中的一种或者两种来实施。

方式一:基于IO栈分析,通过分析分布式存储系统的IO栈,将与IO栈有关的参数确定出来,这些参数会影响IO路径的响应,进而对分布式存储系统的性能产生影响。这种方式要求研发人员对分布式存储系统的架构有较为清楚的了解,知道哪些参数对应着哪些IO流程。例如,ceph的设计中涉及到双写,先写journal再落盘,那么有一些参数就是控制如何来写journal的,以及是否使用缓存,以及何时下刷数据等等,都对分布式存储系统的性能有影响,如果是ceph的研发人员,会比较容易筛选出与IO栈相关的参数,这些IO栈相关参数更有可能对分布式存储系统的性能产生影响。基于IO栈分析筛选出的参数类型,就可以认为它们是IO栈相关类型。

但是,分布式存储系统涉及到的参数数量庞大,而分布式存储系统的用户却并不都是研发人员,这个时候,参数的筛选就会比较困难,如果把全部的参数都加入到性能预测模型的训练过程,这个训练过程的计算量会相当大,需要消耗极大的计算资源。此时,可以通过方式二来进行参数筛选。

方式二:基于特征贡献度分析,所谓特征贡献度分析就是指,在训练性能预测模型的过程中,每次的预测结果都可以用作本次参与训练的所有参数的评估,有些参数对预测结果准确率贡献度高,这些参数就更容易被选出来进入到下一次的迭代过程。

具体来说:首先将分布式存储系统的所有可配置参数都确定为候选参数,然后对所有的候选参数均在其参数取值范围内进行随机取样,这样,就得到了分布式存储系统的初始参数输入集合。

接着,在性能指标获取模块302中,根据初始参数输入集合以及系统参数输入集合获取性能指标,还可以通过突变点检测法将初始参数输入集合中对性能产生突变影响的参数类型筛选出来,作为训练性能预测模型的参数。随后,在模型训练与参数优化模块303中,根据初始参数输入集合、系统参数输入集合以及性能指标训练性能预测模型,就能够得到每个性能指标对应的性能预测模型,以及每种参数分别对性能预测模型的预测准确率贡献度(也称为特征贡献度),对特征贡献度进行分析,就能将比较重要的,即对性能预测模型的预测准确率贡献度较高的参数类型确定出来,将比较重要参数类型选择出来。将对选择出来的这些参数类型在预设参数取值范围内进行随机取样,得到参数输入集合,然后根据参数输入集合和系统参数确定性能指标,接着继续执行训练预测模型的步骤,再次得到性能预测模型以及每个参数对性能预测模型的预测准确率贡献度,再次将对性能预测模型的预测准确率贡献度较高的参数类型确定出来,根据这些参数对参数输入集合进行更新,然后迭代执行本前述过程,直到迭代次数达到预设迭代次数。

需要注意的是,获取性能指标以及进行模型训练的过程将在下面的步骤中进行详述,这里不再赘述。

如图3所示,性能指标获取模块302可以对应步骤S3021至S3024,具体如下:

S3021、确定分布式存储系统的参数输入集合。

S3022、确定系统参数输入集合。

分布式存储系统的参数输入集合即对前述确定类型的参数在其取值范围进行随机取样得到的参数输入集合。

系统参数输入集合可以包括自定义的系统参数,例如在不同的存储场景下的系统推荐配置参数。这里,不同的的存储场景可以是例如裸金属块存储,虚机块存储,对象存储,全闪块存储等。

示例性地,自定义的系统参数可以包括:最大线程数限制(kernel.threads-max),最大进程数限制(kernel.pid_max),物理内存使用方式(vm.swappiness),CPU数量,内存容量等。

本申请实施例提供的参数推荐方法,可以根据硬件配置、系统设置、存储策略以及存储使用场景等确定出最优的参数组合,从而提升分布式存储系统在不同使用场景下的存储性能。

其中,从硬件配置的角度来考虑,对于存储来讲就是分布式存储系统所部署的节点使用的是机械硬盘还是固态硬盘,或者是混合部署。例如,在比较常见的对象存储场景中,数据盘一般是成本比较低的机械硬盘,固态硬盘用来做缓存盘,在双写的过程中,journal写在SDD里会比写在HDD中更快。

从系统设置的角度来考虑,相同的分布式存储系统在不同的操作系统上所表现出的性能也可能是不一样的,比如传统的x86系统和ARM系统,以及操作系统是否开放大页(Huge Page),最大进程数等等都是需要和分布式存储系统进行适配才能发挥分布式存储系统更好的性能。通常情况下,取的都是经验值,但是在本申请实施例提供的参数推荐方法中,可以将系统设置这个环节加入到训练过程当中。

从存储场景的角度来考虑,不同的存储场景对性能和配置的要求是不同的,比如对象存储,就要求存储厂商提供海量的空间,但是对时延(即读写延迟)的要求就比较低,对于备份迁移等存储场景,则对数据传输时间的要求比较宽松,而对要给数据库提供服务的极速块存储场景,那对时延的要求就会很高,而且在不同的存储场景下,标准的硬件配置也是不一样的。对成本比较敏感的情况下,就会选择更多更廉价的机械硬盘提供更大的存储空间,而对时延敏感的存储场景,则会尽可能用性能更好的固态硬盘来减小IO瓶颈的影响。

从存储策略的角度来考虑,分布式存储系统的一个特点就是数据的可靠性,每份数据都会有多个副本,这一部分同样也要和存储场景相联系,比如希望尽可能提供更大的存储空间的对象存储一般会选择纠删码的存储策略,而如果是块存储的话,一般会选择三副本的存储策略。除此之外,为了实现数据安全,将副本以何种方式分布也是存储策略需要考虑的,副本放在同一个机架的不同服务器上,以及放在不同的机架上,甚至分布在不同的数据中心,这些存储策略的不同都会对分布式存储软件的性能产生影响,因为存储策略的不同,会导致了副本间通信成本的不同。

而如何根据这几者来提供最佳分布式存储系统参数配置的推荐,就是将其抽象成参数变量。例如操作系统是用的x86还是ARM,那么就可以写一个参数is_x86=1,is_arm=0;又例如存储策略,如果是三副本就是copy=3,如果是纠删码就是copy=2,通过抽象化,将硬件配置,存储策略,系统配置等作为具体的参数加入性能预测模型的训练过程。

S3023、运行分布式存储系统。

S3024、确定性能指标。

通过性能测试工具(如perf,fio等)根据分布式存储系统的参数输入集合以及系统参数输入集合中的具体参数的组合,模拟运行分布式存储系统就可以得到不同参数组合下的分布式存储系统的性能指标。

这里,分布式存储系统的性能指标主要指读写指标,至少可以包括下述中的一种或者多种:IOPS,mbps,CPU利用率,内存利用率,交换分区(即SWAP)使用率,读写延迟等。其中,IOPS可以包括顺序读写IOPS以及随机读写IOPS。在实际应用中,通常关注较多的是IOPS性能、mbps性能以及读写延迟性能。

如图3所示,模型训练与优化模块303可以对应步骤S3031至S3032,具体如下:

S3031、训练性能预测模型。

将分布式存储系统的参数输入集合以及系统参数输入集合以及性能指标作为训练集,通过随机森林算法构建性能预测模型,从而能够得到性能预测模型。在本申请实施例中,得到的性能预测模型可以包括分别与各个性能指标相对应的多个性能预测模型。

这里,训练性能预测模型与前述参数输入集合构建模块301选择参数类型的过程是相结合的,在得到多个与性能指标分别相对应的性能预测模型的同时,通过突变点检测的方法,得到每个参数分别对对应的性能预测模型的预测准确率贡献度。然后按照前述方案对参数类型进行选择,知道达到迭代次数之后,此时得到的性能预测模型即为最终的性能预测模型,此时确定的参数输入集合即为对分布式存储系统的性能有较大影响的参数。

还需要说明的是,假设原本有50个可配置参数,在经过迭代更新之后,参数输入集合中只剩下了8个可配置参数,参数1、参数2、参数3…参数8,最终得到了2个性能预测模型:A预测模型、B预测模型。其中,用于训练A预测模型的是参数1、参数2、参数3、参数4、参数5,那么在通过A预测模型进行参数推荐时,只需要对参数1、参数2、参数3、参数4、参数5这5个参数进行优化,得到优化参数集合进行推荐。

用于训练B预测模型的是参数3、参数4、参数5、参数6、参数7、参数8,那么在通过B预测模型进行参数推荐时,只需要参数3、参数4、参数5、参数6、参数7、参数8这6个参数进行优化,得到优化参数集合进行推荐。也就是说,对每个性能指标产生较大影响的参数可能是不同的。

在本申请实施例中,训练得到的性能预测模型可以直接参与到对参数进行优化再推荐的过程中,省去了构建新参数集合时获取性能指标的步骤,这样在一定程度上也减少了对特定集群的紧耦合。

这是因为,如果没有性能预测模型,要实现对参数优化再推荐的话,那每获得一次性能指标,都要运行一次分布式存储系统,工作量巨大,但是如果用训练得到的预测模型参与到对参数优化再推荐的过程,那性能指标可以不通过运行分布式存储系统,而是直接通过性能预测模型得到,极大地减少工作量。

另外,如果没有性能预测模型,那每个结果都是在一个固定的集群得到的,这样优化再推荐出来的参数受集群本身的影响很大,虽然在考虑硬件配置,存储策略等因素的时候,会在训练过程中在不同的集群运行得到这些参数对分布式存储系统性能的影响,但如果已经训练得到了性能预测模型,性能预测模型本身已经考虑到多个不同硬件配置,存储策略的影响,这样的性能预测模型参与到对参数进行优化再推荐过程,可以削减集群本身对结果的影响。从而降低了最终推荐的参数和集群的耦合性。也就是说,由于得到最优推荐参数的过程是有性能预测模型参与的,那么并非是只有在训练集群上这个结果是准确的,而且是具有普遍参考性的,在别的集群也是同样适用的。

在本申请实施例中,由于最终得到的是针对于不同性能指标的多个性能预测模型,可能存在对于A指标合适的参数对B指标却有弊端的情况。这时候就需要根据侧重的性能指标来选择参数类型以及具体模型,例如训练的模型是针对A指标的,那么对A有益的参数就被选出来。这也是为什么会训练多个模型,这样,针对不同的存储要求,就可以使用针对不同指标训练出的模型。

在训练性能预测模型的过程中,通过随机森林算法就可以直接确定出参数对性能预测模型的预测准确率贡献度。将预测准确率贡献度超过预设贡献度阈值的参数作为被筛选出来的样本参数,预设贡献度阈值可以自定义,例如设置为50%,具体可以根据迭代次数的接纳度来决定,通常,每次迭代的能保留1/5-1/2左右的参数,那么这个阈值设置就是合理的。

S3032、进行超参数优化。

在训练性能预测模型的过程中,还可以通过超参数优化算法对随机森林的超参数进行优化。也就是说,在本申请实施例中,步骤S3031和步骤S3032可以是同时进行的。示例性地,可以通过贝叶斯算法优化的方式实现对超参数的优化,例如:

输入:f,X

D←initSample(f,X)

for i←|D|to T do

f←buildModel(X)

x

y

D←D∪(x

end for

或者

输入:f,X,S,M

D←initSample(f,X)

for i←|D|to T do

p(y|x,D)←buildModel(M,D)

xi←argmaxx∈Xs(x,p(y|x,D))

y

D←D∪(x

end for

其中,X为随机森林的所有参数;

f表示目标函数,为随机森林模型交叉验证5次的AUC均值。

贝叶斯优化超参数为本领域的常用技术手段,这里不再赘述。

这样,通过第二预设算法(如随机森林算法)和超参数优化算法(如贝叶斯优化算法)得到最终的性能预测模型。

在得到最终的性能预测模型之后,只需要将性能预测模型以及需要进行参数推荐的存储场景的系统参数输入第一预设算法中,通过第一预设算法进行运算,就能够得到与当前存储场景相匹配的推荐参数。

也就是说,通过本申请实施例提供的参数推荐系统,最终能够得到优化参数集合以及性能预测模型,根据该性能预测模型,即使需要对新的存储场景进行参数推荐,只需要将新的存储场景的系统参数、参数输入集合以及性能预测模型输入第一预设算法中,就能够得到优化参数集合。

在本申请实施例中,在具体的使用场景下,选择相对应的具体性能预测模型来进行最优参数推荐。这样,就能够得到针对不同使用场景下分布式存储系统的配置(包括硬件配置,系统配置等等),例如是否配有SSD,内存大小,CPU数量,进程限制数等等,这些参数是固定的,选择需要的预测模型,运行参数优化算法,优化出来的分布式存储系统的参数设置就是最终推荐的参数。例如,时延敏感的使用场景,那么就选用以时延为性能指标训练得到的性能预测模型,运行参数优化算法,得到的最佳时延结果对应的参数集合就是推荐出来的针对这个场景的适用参数设置。

示例性地,第一预设算法为EM算法,参数推荐的过程如下所示:

X:初始参数集

F:性能预测模型

S:调整X取值

M(X,y):符合Y_exception的X集合

X_perfect:推荐的参数取值

Y_exception=[define]:要求达到的性能指标

for(n)

y=F(X)

X=S(X)

when y in Y_exception:

M.append(X,y)

X_perfect=argmaxM(X,y)

这样,通过运行上述算法,就能够得到符合当前场景的最佳的参数推荐。

综上所述,本申请实施例提供的参数推荐方法,整体上可以分为三个部分:构建参数输入集合;获取性能指标;模型训练和超参数优化。

第一部分:构建参数输入集合,以Ceph为例,分布式存储系统的可配置参数众多,可达几千个,且每个参数都有自己一定的取值范围,如果对每一种参数组合都进行评估无疑会浪费大量资源。另外,并非所有参数都对分布式存储系统的性能影响很大,只要对性能有显著影响的参数被考虑到就能对优化起到很好的效果。所以,对于参数输入集合的选择,可以采用以下两种方案,一种方案是通过分析分布式存储系统的IO栈来确定IO栈相关参数,这些参数会影响IO路径的响应,势必会对性能有影响,但是这种方法需要研发人员对使用的分布式存储系统的实现有较为深入的了解。还有一种方案是首先将分布式存储系统的所有参数作为候选参数进行参数取值范围随机取样,构建测试样本,然后进入第二部分获取性能指标,再进入第三部分构建性能预测模型,在获取性能预测模型的同时可以得到每种参数对性能预测模型的预测准确率贡献度,对预测准确率贡献度进行分析(即特征贡献度分析),可以选出比较重要的参数集合。

第二部分:获取性能指标,这一部分主要是通过第一部分得到的参数集合和自定义的系统参数(例如:最大线程数限制kernel.threads-max,最大进程数限制kernel.pid_max,如何使用物理内存vm.swappiness等),通过性能测试工具perf,fio等得到性能指标,性能指标主要是读写指标,例如:IOPS,mbps,CPU利用率,内存利用率,SWAP使用率,读写延迟。

第三部分:训练与优化,这个部分可以再细分为两个部分,训练性能预测模型和参数优化。首先,训练性能预测模型的目的不仅是为了做特征贡献度分析,还希望减少资源的消耗,通过抽样方法训练得到的性能预测模型可以直接参与到参数优化过程,省去了构建新参数集合时获取性能指标的步骤,这样在一定程度上减少了对特定集群的紧耦合。预测方法可以选择如随机森林,这种方法可以很好地解决参数取值与性能指标的非线性关系问题。本申请实施例选择的参数优化/推荐算法可以在很小评估代价下获得一个近似最优解,而实际应用的需求正是训练集合不够丰富,因为获取参数组合下的性能评估指标是一个较为消耗资源的过程,无论是将预测模型加入参数优化过程还是选择参数优化/推荐算法都是基于这个需求。

简单来说,本申请实施例提供的参数推荐方法可以通过以下步骤实现:

步骤1:构建参数输入集合:对参数取值范围进行随机取样。

步骤2:系统参数输入集合:几种场景下的系统推荐配置参数(裸金属块存储,虚机块存储,对象存储,全闪块存储)。

步骤3:搭建分布式存储集群(即分布式存储系统),获取性能指标:例如顺序读写IOPS,随机读写IOPS,时延(即读写延迟),吞吐量等。

步骤4:将参数输入集合和性能指标结果作为训练集通过随机森林算法构建性能预测模型,将对每个性能指标都得到一个性能预测模型以及每个参数对对应模型的预测准确率贡献度。

步骤5:选择步骤4中贡献度超过50%的参数重复步骤1-4,得到新的性能预测模型和预测准确率贡献度。可以通过EM算法迭代执行步骤1-5,直到得到最终的性能预测模型。通过这样的步骤,在得到用于参数优化步骤的性能预测模型的同时,还可以获得参数和性能指标的对应关系,有助于研发人员有针对性的对软件IO栈进行改造工作,提高优化效率。

在训练性能预测模型的过程中,还可以通过贝叶斯算法对随机森林的超参数进行优化。

步骤6:参数推荐。根据实际场景选择对应的性能预测模型,将系统参数以及性能预测模型输入第一预设算法中,经过迭代计算得到最优参数集合。

与相关技术的方案相比,本申请实施例提供的参数推荐方法至少具有以下优点:现有参数优化方案大都与系统紧耦合,理论上,在配置不同的每个系统时都需要一次参数寻优,较为消耗资源。还有一些参数优化方案要求调优人员对分布式存储系统本身有较为深入的了解,学习成本比较高。本申请实施例旨在通过减少人工干预,尽可能让参数优化系统从参数集选取到模型建立再到参数推荐各个环节实现自动化。而且,由于选择了非黑盒的算法:如本申请实施例中的随机森林算法,这些解释性较强的算法可以通过对计算过程的分析得到对各个参数的深入了解,也可用于性能瓶颈分析,对之后分布式存储系统的优化提供合理的思路。

也就是说,本申请提案的关键点在于:

(1)根据不同存储设计使用场景和不同的配置提供最佳分布式存储系统参数配置的推荐。

(2)将性能预测模型加入参数寻优,减少资源消耗,减小系统的耦合性。

(3)在性能预测模型的训练过程中可以得到参数与性能指标的对应关系,有助于研发人员有针对性的对分布式存储系统的IO栈进行改造工作,提高优化效率。

本实施例提供了一种参数推荐方法,通过上述实施例对前述实施例的具体实现进行了详细阐述,从中可以看出,本实施例提出的参数推荐方法,可以根据实际存储场景选择对应的性能预测模型,对与该性能模型对应的性能指标影响较大的参数进行优化并进行参数推荐,实现了有针对性的参数推荐;从参数选集、模型建立以及参数推荐的各环节都可以自动化实现,减小了人工干预的影响,不再受限于专业人员自身的业务水平;由于将预测模型加入了参数寻优的过程,不但减小了系统的资源消耗,还能够减小系统的耦合性,同时还可以根据在模型训练过程中得到的参数与性能指标的对应关系,据此研发人员可以有针对性地对IO栈进行改造工作,进一步提高优化效率。

本申请的再一实施例中,参见图4,其示出了本申请实施例提供的一种参数推荐装置40的组成结构示意图。如图4所示,该参数推荐装置40可以包括:确定单元401,训练单元402以及推荐单元403,其中,

确定单元401,配置为确定分布式存储系统的参数输入集合以及在至少一种存储场景下配置的系统参数;以及根据所述参数输入集合和所述系统参数,确定至少一种性能指标;

训练单元402,配置为根据所述参数输入集合、所述系统参数以及所述至少一种性能指标进行模型训练,确定至少一种性能预测模型和至少一种更新参数集合;其中,每种性能指标对应一种性能预测模型和一种更新参数集合,且所述更新参数集合是所述参数输入集合在所述模型训练过程中迭代更新后得到的;

推荐单元403,配置为根据所述至少一种性能预测模型和所述至少一种更新参数集合,向所述分布式存储系统进行参数推荐。

在一些实施例中,如图5所示,该参数推荐装置40还可以包括获取单元404,配置为获取所述分布式存储系统在预设存储场景下配置的目标系统参数;以及根据待进行参数推荐的目标性能指标,从所述至少一种性能预测模型中选择与所述目标性能指标对应的目标性能预测模型,以及从所述至少一种更新参数集合中选择与所述目标性能指标对应的目标参数集合;

推荐单元403,还配置为根据所述目标性能预测模型,利用所述第一预设算法对所述目标参数集合和所述目标系统参数进行参数优化,得到所述目标性能指标对应的优化参数集合,将所述优化参数集合推荐给所述分布式存储系统。

在一些实施例中,确定单元401,还配置为对所述分布式存储系统进行输入输出IO栈分析,确定所述IO栈的相关参数;以及对所述IO栈的相关参数进行预设IO栈参数取值范围的随机取样,得到相关参数集合,将所述相关参数集合确定为所述参数输入集合。

在一些实施例中,确定单元401,还配置为获取所述分布式存储系统的初始参数集合,并对所述初始参数集合中的参数进行预设参数取值范围的随机取样,确定测试样本;以及根据所述测试样本和所述系统参数,确定至少一种性能指标;以及利用第二预设算法对所述测试样本、所述系统参数和所述至少一种性能指标进行模型训练,确定至少一种中间性能预测模型以及所述测试样本中每种参数对每种中间性能预测模型的预测准确率贡献度;以及对所确定的预测准确率贡献度进行贡献度分析,根据分析结果从所述测试样本中选取所述参数输入集合。

在一些实施例中,如图5所示,该参数推荐装置40还可以包括分析单元405,配置为从所确定的预测准确率贡献度中选取所述预测准确率贡献度大于预设贡献度阈值的候选预测准确率贡献度,并利用所述候选预测准确率贡献度对应的参数确定第一参数集合;

所述训练单元402,还配置为确定所述至少一种性能预测模型的迭代次数;以及当所述迭代次数小于预设迭代次数时,将所述第一参数集合确定为所述初始参数集合,对所述迭代次数执行加1处理,并返回执行所述对所述初始参数集合中的参数进行预设参数取值范围的随机取样,确定测试样本的步骤;以及当所述迭代次数达到预设迭代次数时,将所述第一参数集合确定为所述参数输入集合,并将最近一次迭代更新后得到的模型确定为所述至少一种性能预测模型。

在一些实施例中,确定单元401,还配置为在得到所述第一参数集合之后,根据所述第一参数集合中每一参数相对每一种性能预测模型的预测准确率贡献度以及性能预测模型与性能指标的对应关系,确定每一种性能指标对应的所述第一参数集合中每一参数的预测准确率贡献度;以及在每种性能指标下,从所确定的预测准确率贡献度中选取预测准确率贡献度大于预设贡献度阈值的候选预测准确率贡献度,将所述候选预测准确率贡献度对应的参数确定为每种性能指标对应的所述更新参数集合。

在一些实施例中,确定单元401,还配置为根据所述参数输入集合和所述系统参数,搭建所述至少一种存储场景对应的测试集群;以及在所述至少一种存储场景对应的测试集群的运行过程中,利用性能测试工具得到所述至少一种性能指标;其中,所述性能指标包括下述至少一些:IOPS、吞吐量、CPU利用率、内存利用率、SWAP利用率以及读写延迟。

可以理解地,在本实施例中,“单元”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是模块,还可以是非模块化的。而且在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

因此,本实施例提供了一种计算机存储介质,该计算机存储介质存储有计算机程序,所述计算机程序被至少一个处理器执行时实现前述实施例中任一项的参数推荐方法。

基于上述的一种参数推荐装置40的组成以及计算机存储介质,参见图6,其示出了本申请实施例提供的一种参数推荐装置40的具体硬件结构示意图。如图6所示,该参数推荐装置40可以包括:通信接口601、存储器602和处理器603;各个组件通过总线系统604耦合在一起。可理解,总线系统604用于实现这些组件之间的连接通信。总线系统604除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图6中将各种总线都标为总线系统604。其中,通信接口601,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;

存储器602,用于存储能够在处理器603上运行的计算机程序;

处理器603,用于在运行所述计算机程序时,执行:

确定分布式存储系统的参数输入集合以及在至少一种存储场景下配置的系统参数;

根据所述参数输入集合和所述系统参数,确定至少一种性能指标;

根据所述参数输入集合、所述系统参数以及所述至少一种性能指标进行模型训练,确定至少一种性能预测模型和至少一种更新参数集合;其中,每一种性能指标分别对应一种性能预测模型和一种更新参数集合,且所述更新参数集合是所述参数输入集合在所述模型训练过程中迭代更新后得到的;

根据所述至少一种性能预测模型和所述至少一种更新参数集合,向所述分布式存储系统进行参数推荐。

可以理解,本申请实施例中的存储器602可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步链动态随机存取存储器(Synchronous link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本文描述的系统和方法的存储器602旨在包括但不限于这些和任意其它适合类型的存储器。

而处理器603可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器603中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器603可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器602,处理器603读取存储器602中的信息,结合其硬件完成上述方法的步骤。

可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecific Integrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(Programmable LogicDevice,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。

对于软件实现,可通过执行本文所述功能的模块(例如过程、函数等)来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。

可选地,作为另一个实施例,处理器603还配置为在运行所述计算机程序时,执行前述实施例中任一项所述的方法的步骤。

基于上述参数推荐装置40的组成以及硬件结构示意图,参见图7,其示出了本申请实施例提供的一种参数推荐设备70的组成结构示意图。如图7所示,该参数推荐设备70至少包括前述实施例中任一项所述的参数推荐装置40。

对于参数推荐系统70而言,由于针对不同的存储场景选择相应的性能预测模型,针对该性能预测模型对应的参数集合向分布式存储系统进行参数推荐,从而实现了对不同存储场景下的分布式存储系统自动进行最优参数推荐,提高参数推荐的效率,而且减少了资源消耗。

以上所述,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。

需要说明的是,在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。

本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。

本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

相关技术
  • 一种对象推荐方法、装置、终端及计算机可读存储介质
  • 一种推荐方法、装置及计算机可读存储介质
  • 一种建筑模型参数管理方法、计算机装置及可读存储介质
  • 一种温度显示方法装置、计算机装置和计算机存储介质
  • 一种车牌识别方法、装置、计算机装置及计算机可读存储介质
  • 一种参数推荐方法、装置、计算机设备及存储介质
  • 一种健身动作参数推荐方法及计算机可读存储介质
技术分类

06120115803519