一种软件组件资源消耗模拟方法

文档序号:10654341阅读:396来源:国知局
一种软件组件资源消耗模拟方法
【专利摘要】本发明公开了一种软件组件资源消耗模拟方法,包括如下步骤:1、根据组件运行参数确定组件的CPU资源消耗率的数学分布和内存资源消耗的数学分布,建立CPU资源消耗模型和内存资源消耗模型;2、分别依据CPU资源消耗模型和内存资源消耗模型,构造CPU资源模拟组件和内存资源消耗模拟组件;3、依据待评估软件体系结构的规模,部署并运行模拟组件,获取组件的实时CPU资源消耗状态数据和内存资源消耗状态数据;4、将实时资源消耗状态数据写入相应的评估数据库。本发明具有能够在系统开发早期对系统体系结构性能进行评估,达到降低开发成本、降低研发风险的效果。
【专利说明】
-种软件组件资源消耗模拟方法
技术领域
[0001] 本发明属于计算机的软件体系结构评估领域,特别设及一种软件组件资源消耗模 拟方法。
【背景技术】
[0002] 对于软件体系结构来说,所关注的一个重要问题就是质量,尤其是对大规模的复 杂软件系统更是运样。所W对一个软件体系结构进行评估,对确保最终系统的质量至关重 要。对一个软件系统结构进行评估,是为了在系统被构建之前预测它的质量,并不一定需要 完全精确的评估结果,通过分析系统结构的相关数据对于系统质量的主要影响,进而提出 改进。软件组件资源消耗估算是软件体系结构评估中的一个核屯、和关键,主要包括软件组 件运行时的CPU资源消耗和内存资源消耗两项。并且,组件资源的消耗模拟还依赖于每次评 估的具体的部署规模。
[0003] 现代软件越来越多地使用组件技术进行开发,使用组件技术开发软件提高了代码 的可重用性W及软件开发的效率。组件技术已经成为了分布式计算和Web服务的基础,大规 模系统的开发依赖于组件的组装。目前对组件的研究主要集中在对具体组件技术的研究, 如COM+组件、.肥T技术W及化VaBeans等,或者是研究如何使用组件技术实现特定软件系 统,即框架技术。但是,关于组件运行时资源消耗估算方法的相关研究未见有报道,从而导 致开发人员在系统的开发早期无法对系统的性能进行评估。
[0004] 在系统开发前,需要评估预测系统的性能,需要对组件运行时的资源消耗状态进 行估算。传统的方法是基于经验直接假设或建立性能模型,一些性能模型与程序所使用的 数值算法密切相关,缺乏客观性,而且建立过程需要花费大量的专家人力,模型计算时间也 较长,无法实现自动化;另一些性能模型所使用的工具和建模方法基于某种特定类型的计 算平台,具有平台依赖性,而且只对其少数战略同盟开放使用。
[0005] 如果系统体系结构的设计缺乏相应的性能评估,则不利于其迭代优化,将会直接 关系到系统的质量。因此,使用本资源消耗估算方法可W客观有效地对软件组件运行时的 资源消耗进行模拟,进而为整个宿主体系体系结构的客观有效评估及其迭代优化设计建立 基础,并降低系统研发的成本和风险。

【发明内容】

[0006] 发明目的:为了克服现有技术中存在的不足,本发明提供一种能够在系统开发早 期对系统体系结构性能进行评估,达到降低开发成本、降低研发风险的效果的软件组件资 源消耗模拟方法。
[0007] 技术方案:为实现上述目的,本发明提供一种软件组件资源消耗模拟方法,具体包 括如下步骤:
[000引步骤一:根据组件运行参数确定组件的CPU资源消耗率的数学分布和内存资源消 耗的数学分布,建立CPU资源消耗模型和内存资源消耗模型;
[0009] 步骤二:分别依据CPU资源消耗模型和内存资源消耗模型,构造 CPU资源模拟组件 和内存资源消耗模拟组件;
[0010] 步骤依据待评估软件体系结构的规模,部署并运行模拟组件,获取组件的实时 CPU资源消耗状态数据和内存资源消耗状态数据;
[0011] 步骤四:将实时资源消耗状态数据写入相应的评估数据库。
[0012] 进一步的,所述步骤一中CPU资源消耗率的计算公式为,
[0013]
[0014] 其中core_num为CPU的核数,ST为采样周期,cost_time为在ST中消耗的CPU时间, cpu_usage 为 CPU 消耗率。
[0015] 进一步的,所述步骤一中CPU资源消耗率的数学分布具体确定方法为:根据资源消 耗率与组件在每个采样周期ST对CPU的消耗时间cost_time的关系即CPU资源消耗率的计算 公式得到CPU资源消耗率的数学分布为指数分布。
[0016] 进一步的,所述步骤一中内存资源消耗的数学分布具体确定方法为:根据组件消 耗内存的动态变化和内存消耗率的变化关系得到内存资源消耗的数学分布为正态分布。
[0017] 进一步的,所述步骤一中建立CPU资源消耗模型的具体方法为:根据组件的CPU资 源消耗率与组件在每个采样周期对CPU的占用时间的关系,确定W指数分布e(A)作为CPU资 源消耗模型,同时,Wl/(〇.4*1)作为A的值,M为CPU资源消耗最大值;其中A是一个参数,月良 从参数为A的指数分布e(A),指数分布e(A)的数学期望是1A。
[0018] 进一步的,所述步骤一中建立内存资源消耗模型的具体方法为:W正态分布N(y, O2)作为内存资源消耗模型,同时,WM V2作为平均值y的值,WM V6作为标准差O的值,其 中,M'为内存资源消耗的最大值。
[0019] 进一步的,所述步骤二中构建CPU资源模拟组件的方法为:对于CPU资源消耗率,月良 从指数分布,设定U为服从(0,1)上的均匀分布,则构建的模拟组件的执行逻辑为:x = -入* Iog(I-U)O
[0020] 进一步的,所述步骤二中构建内存资源模拟组件的方法为:服从正态分布,模拟组 件的构建需要首先生成两个随机数,随机数的平方和必须大于0小于1;然后利用运两个随 机数及随机数的平方和确定出正态分布中O2的系数,具体确定步骤如下:
[0021] 步骤 1:取U1 =随机数rand()/RAND_MAX; u2 =随机数rand()/RAND_MAX; rand()用 于产生一个系统随机数,RAND_MAX则是随机数的最大值;
[0022] 步骤2:取Vl =巧Ul-I,v2 =巧U2-1;
[0023] 步骤3:取s = ul*ul+u2*u2;
[0024] 步骤4:如果S〉= 1或者S = 0,继续步骤1,如果S < 1,进入步骤5;
[00剧步骤5:取
[0026] 步骤6:输出xl*〇2+y和x2*〇2+y作为内存资源消耗的模拟。
[0027] 有益效果:本发明与现有技术相比具有W下优点:
[0028] 1、本发明中资源消耗模型考虑了组件运行时资源消耗的客观特征,因此资源消耗 的模拟更为精准。
[0029] 2、本发明中的资源消模拟方法和特定平台无关,具有平台独立性,因此,有利于移 植及使用普适性、方便性;本发明的模拟过程简单易行。
【附图说明】
[0030] 图1为本发明的流程图;
[0031] 图2为实施例中组件1的CPU资源消耗图;
[0032] 图3为实施例中组件1的内存资源消耗图;
[0033] 图4为本发明方法应用于基于DDS的分布式系统所获取到的负载均衡指标值分布 图。
【具体实施方式】
[0034] 下面对本发明技术方案进行详细说明,但是本发明的保护范围不局限于所述实施 例。
[0035] 如图1所示,本发明的一种软件组件资源消耗模拟方法,具体包括如下步骤:
[0036] 步骤一:根据组件运行参数确定组件的CPU资源消耗率的数学分布和内存资源消 耗的数学分布,建立CPU资源消耗模型和内存资源消耗模型;
[0037] 步骤二:分别依据CPU资源消耗模型和内存资源消耗模型,构造 CPU资源模拟组件 和内存资源消耗模拟组件;
[0038] 步骤=:依据待评估软件体系结构的规模,部署并运行模拟组件,获取组件的实时 CPU资源消耗状态数据和内存资源消耗状态数据;
[0039] 步骤四:将实时资源消耗状态数据写入相应的评估数据库。
[0040] 上述步骤一中确定组件的CPU资源消耗率和内存资源消耗的数学分布和资源消耗 模型具体如下:
[0041 ] 1 )CPU资源消耗模型的构建方法为:对于组件运行时的CPU资源消耗模拟,设定CPU 的核数为core_num,采样周期为ST,在ST中消耗的CPU时间为cost_time,CPU消耗率用cpu_ usage表示,因此CPU消耗率的计算公式如下所示。
[0042]
[0043] 定义随机变量T表示组件在每个采样周期对CPU的消耗时间,组件在采样周期ST中 消耗CPU的时间Tl与其在随后的采样周期中对CPU的消耗时间T2是相互独立的,运意味着组 件在采样周期ST中的运行时间和其在下一个采样周期中的运行时间是不相关的,组件在每 个采样周期中的运行时间满足指数分布的无记忆性的特点,因此随机变量T满足指数分布 的特性,即T~e(A)。其中,T~e(A)表示在每个采样周期中,组件对CPU的资源消耗T满足指 数分布。由于随机变量T表示组件在每个采用周期对CPU的占用时间(即上述公式中的cost, time),那么CPU消耗率同样满足指数分布的特性。
[0044] 记组件的CPU占用率最大值为M,那么对于一个CPU消耗率最大值为M(0<M< 100) 的组件,其在运行的过程中基本不会满负荷地WM的占用率占用CPU资源,因此取其平均值 因子为曰,即在整个时间段内其占用CPU的平均值为a*M,根据期望公式知
。对于组 件,按照指数分布的累积分布函数,其CPU占用率小于t的概率如下:
[0045]
[0046] 在实际应用中,CPU资源消耗率会受很多因素的影响,对于实际的最大占用值为M, 其运行时的最大C P U消耗率是在一定的范围内,其W很大的概率小于M,即
,取t = 0.9M时,P >0.9,得到平均值因子a的 取值为0.4。因此当组件的CPU配额为M,可W生成符合
的模拟组件。
[0047] 2)内存资源消耗模型的构建方法为:对于组件运行时的内存资源消耗模拟,由于 组件所消耗的内存是动态变化的,内存消耗率会在一个范围内波动,并在极少数的情况下 达到峰值,而且因为部分代码需要常驻内存,所W组件的内存消耗都会大于某个值,组件的 内存消耗符合正态分布的特性。设组件的最大内存消耗为M',组件的实时内存消耗为随机 变量X,X~N(y,〇2),其中N(y,〇2)为正态分布,组件的实时内存消耗X满足均值为y方差为O 2的正态分布。其中,参数y决定了平均值,参数O决定了变化坡度,O越大则图像越缓,意味着P (y-o<x<ii+〇)的概率越大,采样值更偏离均值ii,说明内存的变化区间较大;而〇越小则意 味着内存变化区间较小,因此根据实际情况,将O的值设定大一些,如5左右,O的范围大概在 0-6。让内存可W在一个大的范围内浮动。内存占用的最小值设定为,其最大值为ii+3〇。 因此设定组件的最大内存消耗为M'且根据y+3〇=M'(其中y = M V2),通过生成符合参数条 件的正态分布的模拟组件,完成组件在运行中对内存资源消耗的估算。
[004引上述步骤二中构建相应模拟组件的方法具体如下:
[0049] 对于CPU资源消耗率,服从指数分布,设定U为服从(0,1)上的均匀分布,则构建的 模拟组件的执行逻辑为:X = -A* 1 Og (1-U)。
[0050] 对于内存资源消耗,服从正态分布N(y,02),下述步骤给出了生成符合正态分布N (y,o2)样本数据的算法。设Ul和u2都是服从U(0,1)的变量,模拟组件的构建需要首先生成 两个随机数Ul和u2,其平方和S必须大于0小于1,运样S也服从U(0,1),且与ul/u2相互独立; 那么,W此构建出来的Xl,X2是服从标准正态分布的相互独立的变量,其中满足P分布。其中 Xl,X2是构建出来的服从标准正态分布的变量,再W此,构建均值为U,方差为O2的正态分布 的样本数据,构建公式为:xl*〇2+y,X巧〇2+y,从而来模拟内存资源消耗。因为内存资源消耗 就是服从正态分布N(y,O2)。其次,利用Xl和X2构建符合均值为U,方差为O2的正态分布的样 本数据。具体确定步骤如下:
[0051 ]步骤 1:取U1 =随机数rand()/RAND_MAX; u2 =随机数rand()/RAND_MAX; rand()用 于产生一个系统随机数,RAND_MAX则是随机数的最大值;
[0化2]步骤2:取Vl =巧Ul-I,v2 =巧U2-1;
[0053] 步骤3:取s = ul*ul+u2*u2;
[0054] 步骤4:如果S〉= 1或者S = 0,继续步骤1,如果S < 1,进入步骤5;
[0化5] 步骤5:取
[0056] 步骤6:输出xl*〇2+y和x2*〇2+y作为内存资源消耗的模拟。
[0057] 上述步骤S中CPU资源消耗计算,对于组件的CPU资源消耗为M(0<M<100)的组件, 生成和CPU核数core_num同样多的线程,线程中将执行相应的代码,代码中主要循环运行内 存分配指令、线程睡眠指令和内存释放指令,通过运样的操作来模拟组件的CPU资源消耗。 设上述步骤中的方法生成的某个模拟组件的CPU资源占用率为tm(非百分比),则对某个模 拟组件,使线程睡眠操作的步骤如下:
[005引步骤(1):该组件的CPU资源消耗时间ktm,计算方法:ktm = tm/100*采样周期ST; [0化9] 步骤(2):计算该组件需要的睡眠时间sle邱time = ST-ktm;
[0060] 步骤(3):调用实验机器中操作系统提供的接口求出CPU的当前采样周期开始时间 lasttime;
[0061] 步骤(4):调用实验机器中操作系统提供的接口求出CPU当前时间currenttime;
[0062] 步骤(5):如果cu;rrenttime-lasttime<ktm,表示当前模拟组件运行时间不足,需 要继续运行,进入(4);当currenttime-lasttime = ktm,贝向下进入6);
[0063] 步骤(6):更新Iasttime为currentime;
[0064] 步骤(7):利用系统调用,使线程睡眠一段时间,运段时间的长度值与上述中的 sleeptime 值相等;
[0065] 按照上述步骤(1)至(7)对每个模拟组件反复执行上述步骤,直至完成当前待评
[0066] 估体系结构所指定的模拟组件部署数目。
[0067] 上述步骤中内存消耗计算,只需要创建一个线程,线程中执行相应的代码,代码通 过模拟组件W及通过系统调用使线程睡眠等操作,实现组件运行时的内存消耗模拟过程, 设上述获取到的符合正态分布的模拟组件为S,进行如下操作:
[0068] 步骤A:利用函数malloc申请内存大小为s'的内存;
[0069] 步骤B:利用系统调用sleep使线程睡眠500毫秒;
[0070] 步骤C:利用函数打ee释放内存。
[0071] 按照上述步骤A至C对每个模拟组件反复执行上述步骤,直至完成当前待评估体系 结构所指定的模拟组件部署数目。
[0072] 实施例:本发明中W基于DDS(数据分发服务)的分布式系统作为宿主系统来具体 说明本发明所提出的组件运行时资源消耗模拟方法的有效性。将获取到的运行得到的有关 于组件CPU消耗率和内存消耗数据,作为宿主系统体系结构测试的参数;进行宿主软件系统 体系结构的测试工作,对整个宿主系统体系结构进行性能评估。
[0073] 在一个基于DDS的分布式系统中,负载均衡程度是衡量系统设计是否合理的一个 重要指标。负载均衡程度越高,则各台位的负载消耗越平均。计算系统负载均衡程度时需要 获取到各台位CPU资源消耗率W及内存消耗率等因素。在系统没有完成之前,通过本发明方 法提供测试中所需的CPU资源消耗率W及内存消耗等参数。
[0074] 本发明中的基于DDS的分布式系统包括:水声观测模拟系统sysl和分散控制模拟 系统sys2,水声观测模拟系统sysl由200个组件组成,分别部署在5个台位上,系统总共包含 五个任务;分散控制模拟系统sys2由3个组件组成,分别部署在3个台位上,系统总共包含= 个任务。在测试过程中,通过本发明方法模拟组件运行时的资源消耗情况,并将数据发送给 指标评估程序进行计算。
[0075] 实验先通过水声观测模拟系统sysl的组件Componentl来演示资源消耗计算算法 的流程,最后对两套系统的负载均衡度进行测试。
[0076] 对于水声观测模拟系统sysl的组件Componentl,设定其CPU资源最大消耗率为 10%,内存资源最大消耗为100MB,在Windows平台上进行模拟运行,同时通过实验观察,获 取实时消耗数据绘制图表,观察CPU资源消耗率与内存消耗情况是否分别满足指数分布和 正态分布。
[0077] 实验步骤:
[0078] 步骤a:确定分布的参数,对于CPU资源消耗模拟,指数分布的参数A为0.25,内存资 源占用的数学分布参数为:
[00 巧]y=M/2 = 50000000byte,O = 50000000/3byte;
[0080] 步骤b:创建线程并执行资源消耗模拟。
[0081] CPU资源消耗图如图2所示,其中纵坐标为频率,即不同消耗率在整个实验中出现 的次数;横坐标为CPU消耗率,例如10.000即表示CPU占用率为10 %。观察图可知CPU资源占 用满足指数分布的特性;
[0082] 内存资源占用图如图3所示,其中纵坐标为频率,即不同消耗大小值在整个实验中 出现的次数;横坐标为内存资源消耗大小,例如40.000即表示内存消耗大小为40M。观察图 可知内存资源消耗满足正态分布的特性。
[0083] 步骤C:接收模拟数据,进行负载均衡度的计算。
[0084] 系统在采样周期开始时采集数据,包括各台位上所有组件发布主题与订阅主题的 总数等,同时读取利用本发明方法得到的模拟CPU和内存消耗数据,然后进行负载均衡度指 标值的计算。
[0085] 系统的负载均衡指标值如图4所示,可W明显看到两套系统的负载均衡指标值变 化都比较稳定,波动幅度较小;但由于水声观测模拟系统sysl的组件较多,交互比较复杂, 各台位的负载变化幅度较大,相比之下,组件较少、交互简单的分散控制模拟系统sys2的负 载均衡程度优于水声观测模拟系统sysl。利用资源占用模拟算法评估出的结果与实际情况 相符。
[0086] W上详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中 的具体细节,在本发明的技术构思范围内,可W对本发明的技术方案进行多种等同变换,运 些等同变换均属于本发明的保护范围。
【主权项】
1. 一种软件组件资源消耗模拟方法,其特征在于,包括如下步骤: 步骤一:根据组件运行参数确定组件的CPU资源消耗率的数学分布和内存资源消耗的 数学分布,建立CPU资源消耗模型和内存资源消耗模型; 步骤二:分别依据CPU资源消耗模型和内存资源消耗模型,构造 CPU资源模拟组件和内 存资源消耗模拟组件; 步骤三:依据待评估软件体系结构的规模,部署并运行模拟组件,获取组件的实时CPU 资源消耗状态数据和内存资源消耗状态数据; 步骤四:将实时资源消耗状态数据写入相应的评估数据库。2. 根据权利要求1所述的一种软件组件资源消耗模拟方法,其特征在于,所述步骤一中 CHJ资源消耗率的计算公式为,具中core_num为CPU的核数,ST为米样周期,cost_time为在ST中消耗的CPU时间,cpu_ usage为CPU消耗率。3. 根据权利要求2所述的一种软件组件资源消耗模拟方法,其特征在于,所述步骤一中 CPU资源消耗率的数学分布具体确定方法为:根据资源消耗率与组件在每个采样周期ST对 CPU的消耗时间c〇St_time的关系即CPU资源消耗率的计算公式得到CPU资源消耗率的数学 分布为指数分布。4. 根据权利要求1至3之一所述的一种软件组件资源消耗模拟方法,其特征在于,所述 步骤一中内存资源消耗的数学分布具体确定方法为:根据组件消耗内存的动态变化和内存 消耗率的变化关系得到内存资源消耗的数学分布为正态分布。5. 根据权利要求4所述的一种软件组件资源消耗模拟方法,其特征在于,所述步骤一中 建立CPU资源消耗模型的具体方法为:根据组件的CPU资源消耗率与组件在每个采样周期对 CPU的占用时间的关系,确定以指数分布e(A)作为CPU资源消耗模型,同时,以1/(0.4*M)作 为λ的值,M为CPU资源消耗最大值;其中λ是一个参数,服从参数为λ的指数分布 e(A),指数分 布e(A)的数学期望是1/λ。6. 根据权利要求4所述的一种软件组件资源消耗模拟方法,其特征在于,所述步骤一中 建立内存资源消耗模型的具体方法为:以正态分布Ν(μ,σ 2)作为内存资源消耗模型,同时, 以Μ'/2作为平均值μ的值,以Μ'/6作为标准差σ的值,其中,Μ'为内存资源消耗的最大值。7. 根据权利要求5所述的一种软件组件资源消耗模拟方法,其特征在于,所述步骤二中 构建CPU资源模拟组件的方法为:对于CPU资源消耗率,服从指数分布,设定U为服从(0,1)上 的均匀分布,则构建的模拟组件的执行逻辑为:x = _X*log( 1-U)。8. 根据权利要求1所述的一种软件组件资源消耗模拟方法,其特征在于,所述步骤二中 构建内存资源模拟组件的方法为:服从正态分布,模拟组件的构建需要首先生成两个随机 数,随机数的平方和必须大于0小于1;然后利用这两个随机数及随机数的平方和确定出正 态分布中〇 2的系数;具体确定步骤如下: 步骤 1:取u 1 =随机数rand()/RAND_MAX; u2 =随机数rand()/RAND_MAX; rand()用于产 生一个系统随机数,RAND_MAX则是随机数的最大值; 步骤2:取 vl = 2*ul-l,v2 = 2*u2-l; 步骤3:取s = ul*ul+u2*u2;步骤6:挪mXiYoili邪χζ*σ·^μτμ73 hH子资观泪耗tfJ恢似。 步骤4:加里心=1或者s = f).继绿朱3S1 .加里s<1 .讲入步骤5; 步骤5:
【文档编号】G06F9/50GK106020982SQ201610340680
【公开日】2016年10月12日
【申请日】2016年5月20日
【发明人】沈军, 高文, 姜峰, 万逸
【申请人】东南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1