一种移动应用检测负载均衡算法中计算负载值的方法

文档序号:9765885阅读:500来源:国知局
一种移动应用检测负载均衡算法中计算负载值的方法
【技术领域】
[0001] 本发明属于信息安全领域,设及移动应用检测负载均衡的优化方法,具体是一种 移动应用检测负载均衡算法中计算负载值的方法。
【背景技术】
[0002] 由于移动应用检测任务具有特殊性,难W将其切分为更细粒度的子文件,更不可 能对单个移动应用检测任务进行简单粗暴的平均大小切分,导致单个移动应用检测任务内 的移动应用大小差别迴异,影响移动应用检测任务的执行效率。另外,影响移动应用检测任 务的执行效率的另一个因素是单个移动应用检测任务内的控制流复杂度。
[0003] 控制流复杂度是指由移动应用检测任务内部的执行流程和执行复杂度,由控制流 图中的边数和节点数体现;
[0004] 控制流图(CFG,Con化〇1 flow graph,即控制流程图),是一个过程或程序的抽象 表现。移动应用检测任务的控制流图,即移动应用中语句、语句块和过程的执行流抽象。控 制流图是一个有向图,包含N个节点node和M条边edge。
[0005] 现有技术中采用McCabe复杂度度量标准,将软件的流程图转化为有向图,控制流 图是Mc化be复杂度计算的基础,McCabe复杂度度量作为移动应用检测任务的环路复杂性度 量标准,一般用圈复杂度V(G)描述。实验证明,圈复杂度越大的移动应用,静态检测时间越 长。
[0006] 圈复杂度的计算方法如下:
[0007] V(G)=e-n+2
[000引其中e为移动应用检测任务中控制流图中边数,n为移动应用检测任务中控制流图 中的节点数。
[0009]负载均衡化oad Balancing)算法目的是为了提局任务执行效率,提局系统吞吐 量,利用分布式结构提高系统执行性能。通过平衡各检测节点的负载情况,加强了各检测节 点的数据处理能力、提高了可用性。各检测节点的负载包括:各检测节点上所有移动应用检 测任务的网络吞吐量、CPU负载率、内存使用率等;
[0010] 在传统负载均衡算法中,一般使用CPU使用率、内存占用率、硬盘使用情况、网络吞 吐量等作为服务器负载的衡量标准。
[0011] 但是,在海量移动应用检测任务的应用场景下,由于移动应用文件小,在检测过程 中,服务器硬盘的使用情况不会有很大的变化,硬盘使用量对移动应用的检测影响较小;而 由于移动应用的存储和检测都在局域网环境下完成,局域网内网络情况良好,小文件对网 络带宽要求不高,因此网络吞吐量对移动应用的检测效率也无明显影响。
[0012] 在海量移动应用检测任务的应用场景下,使用ActiveMQ将移动应用检测任务存储 在队列服务器上,通过ActiveMQ提供的API获取移动应用检测任务的队列大小,并配置队列 最大长度,而检测任务队列的大小是衡量一个检测任务需要等待的时间和预计返回时间的 最直接因素。
[0013] 综上,针对海量移动应用检测任务,传统负载均衡算法中,只考虑了影响负载均衡 的W下几类因素:1 )、检测节点的CPU负载,包括CPU核数、CPU频率、CPU使用百分比;2 )、检测 节点的内存负载,包括空闲内存百分比;3)、检测节点的任务队列负载,包括任务队列长度 和任务队列最大长度。
[0014] 如若不考虑控制流复杂度,将会使整个检测效率下降50% W上。在有多节点W及 海量应用需要检测的情况下,检测时间将会延迟超过1分钟,无法满足现阶段海量移动应用 检测的需求。

【发明内容】

[0015] 本发明针对海量移动应用检测任务的处理请求,为了提高多线程并行处理效率, 结合现有的负载均衡计算方法,引入控制流复杂度作为检测节点的负载信息,提出了一种 移动应用检测负载均衡算法中计算负载值的方法,能短时检测大量移动应用。
[0016] 具体步骤如下:
[0017] 步骤一、针对每个检测节点,分别计算该检测节点上每个移动应用检测任务的控 制流复杂度Complexity;
[0018] 采用Mc化be复杂度度量标准,获取每个移动应用检测任务的控制流图,从而获取 该控制流图的边数和节点数,计算控制流复杂度Comp 1 exi ty;
[0019] Complexityj = ej-rij+2
[0020] Complexityj为第j个移动应用检测任务的控制流复杂度;j为待检测的移动应用 检测任务的序号,j为整数;ej为第j个移动应用检测任务的控制流图的边数,nj为第j个移动 应用检测任务的控制流图的节点数。
[0021] 步骤二、计算每个检测节点上的所有移动应用检测任务的CPU加权负载,内存加权 负载,队列加权负载和控制流复杂度加权负载值之和LoadGrade:
[0022] LoadGrade i = Cw+Mw+Qw+Co 丽
[00剖其中,LoadGrade功检测节点i的加权负载值之和;功检测节点的序号,i为整数; Cw为检测节点i的CPU加权负载值:Cw = Wcpu*CPUGradei;Wcpu是CPU加权负载值的权重; CPUGrade功检测节点i的CPU负载值:
[0025] CPUCoresi为检测节点i的CPU核数,单位为个;CPUG化i为检测节点i的CPU主频,单 位为GHz; CPUUsedPerci为检测节点i的CPU使用百分比,单位为%。
[002引 Mw为检测节点i的内存加权负载值:Mw = Wmemory*Mem0IrGradei ;Wmemory是内存加权 负载值的权重,MemoryGrade功检测节点i的内存负载值:
[002引FreeMemoryi为检测节点i的当前空闲内存,单位为%。
[0029] Qw为检测节点i的队列加权负载值:Qw=Wqueue*QueueGradei;Wqueue是队列加权负载 值的权重,如eueGradei为检测节点i的任务队列负载值:
[0031 ]如eueCapacityi为检测节点i的任务队列容量即检测节点i的任务队列最大长度, 单位为个;如eueNumi为检测节点i的任务队列当前任务数量即队列大小,单位为个。
[0032] Comw为检测节点i的控制流复杂度加权负载值:
[0033] Comw=Wc〇mpiexii;y*Comp 1 ex i tyGradei
[0034] WGumpiexi巧为移动应用检测节点的控制流复杂度的权重,ComplexityGradei为移动 应用检测节点i的控制流复杂度负载值:
[0036] Complexitymaxi为时隙T内检测节点i的任务队列中等待检测任务的Complexity之 和的最大值;Comp 1 e X i t y average i为时隙T内检测节点i的任务队列中等待检测任务的 Complexity平均值:I
[0037] X TComplexityj表示在时隙T内检测节点i的等待在任务队列上所有检测任务的 Complexity之和,n表示时隙T内的n个移动应用。
[003 引检测节点i的各类加权值满足:Wcpu+Wmem。ry+Wqueue+WC。mplexity=100
[0039] Wcpu ,Wmemory ,Wqueue ,WComplexity^ [0 , 100]
[0040] 步骤S、将每个检测节点的加权负载值之和LoadGrade的信息包裹在节点屯、跳中;
[0041] 步骤四、节点屯、跳每隔时隙T发送一次给负载调度器,负载调度器计算各个检测节 点,将下一个移动应用检测任务分配给LoadGrade最小的检测节点。
[0042] 本发明的优点在于:
[0043] 1)、一种移动应用检测负载均衡算法中计算负载值的方法,极大提高了海量移动 应用检测任务的执行效率,能满足现今海量应用快速检测的需求。
[0044] 2)、一种移动应用检测负载均衡算法中计算负载值的方法,用更加合理有效的方 式向节点分配任务,保证了节点的充分运作的同时又防止其负荷超载,有利于维护节点寿 命。
【附图说明】
[0045] 图1是本发明移动应用控制流复杂度与静态检测时间的关系图;
[0046] 图2是本发明一种移动应用检测负载均衡算法中计算负载值的方法流程图;
[0047] 图3是本发明与轮询调度法,传统的移动应用检测任务负载均衡算法的时间统计 与比较图。
【具体实施方式】
[0048] 下面将结合附图对本发明作进一步的详细说明。
[0049] 如图1所示,随着移动应用控制流复杂度的增加,移动应用的静态检测时间也逐渐 增长,移动应用检测效率逐渐降低,因此,可W将移动应用的控制流复杂度作为负载均衡算 法的一个参数,让每个检测节点的任务队列上所等待任务的控制流复杂度之和趋于平衡, 提高批量执行移动应用检测时的检测性能。
[0050] 本发明一种移动应用检测负载均衡算法中计算负载值的方法,在海量移动应用检 测任务的场景中引入动态反馈负载均衡算法,考虑服务器的实时负载和响应情况,不断调 整节点间处理任务数的比例,来避免任务节点在超载时依然收到大量请求,均衡分布式系 统中任务节点的负载情况,从而提高整个系统的吞吐率和任务执行效率。
[0051] 该方法基于由客户端、中屯、管理节点模块和检测子节点组成的实验平台实现;
[0052] 检测节点的屯、固饱括:当前检测节点i的CP切日权负载值,内存加权负载值,队列加 权负载值和控制流复杂度加权负载值;
[0053] 中屯、管理节点模块接受移动应用检测任务和检测子节点的屯、跳;通过实时接收各 检测节点的屯、跳得到当前各检测节点的负载情况,并通过负载调度器选择出其中最优的检 测节点下发移动应用检测任务,然后重新计算各检测节点的负载分数,更新记录的负载信 息。
[0054] 中屯、管理节点模块分为屯、跳接收引擎、负载值计算引擎和检测子节点资源队列= 部分。屯、跳接受引擎接收到检测子节点发来的屯、跳信息后,将其中的负载信息取出传递给 负载值计算引擎;负载值计算引擎根据节点负载信息计算出节点的实时负载值后,根据负 载值的大小重排检测子节点资源队列。负载调度器接收到移动应用检测任务后,可W直接 分配到负载分数最大,负载最低节的检测子节点;
[0055] 负载调度器作用是监视和收集各个服务器的负载信息,根据多个负载信息算出一 个综合负载值。当综合负载值表示服务器比较忙时,该检测节点的优先级较
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1