技术领域
[0001] 本
发明属于
软件工程领域,具体为一种基于多变量控制的软件行为调节方法。
背景技术
[0002] 随着计算系统日益复杂,给应用程序开发人员带来了极大的负担。而现代系统的动态性使这种情况变得更恶劣,该种系统在软件运行中可能会经历突然和不可预测的变化;例如,应用程序工作负载
波动和系统组件故障。软件工程师对于管理这种复杂性并确保应用程序在动态环境中成功运行的压
力与日俱增。针对该状况,当前已经有提出使用自主或自适应技术来帮助工程师管理这种负担的方案。自适应系统通过调整系统自己的行为来维持控制目标的稳定,以此来响应不可预测的变化。虽然应用程序的功能方面(即语义正确性)的调整通常需要人为干预,但其非功能方面(例如可靠性,性能,
能量消耗和成本)代表了应用自适应技术的重要且具有挑战性的机会。例如,客户需要持续保证商定的性能和
质量水平。可以通过将它们映射到特定的配置参数来管理这些非功能性方面。可以测量这些属性并用于触发适应机制,即使面对不可预见的环境波动,也能保证满足要求。
[0003] 现有的自适应手段主要有两种:一种方法是利用程序设计中的逻辑语言,对于不同的环境状态自适应调整不同的软件行为;另一种方法是将小部分
软件代码作为自适应目标,对其设计
控制器以达到自适应调节的目的。随着软件自适应要求的提高,这两种方法都很难达到满意的效果。前一种方法本质上采用了模式切换的方式,只能在人为设想到的场景中使用,且控制量离散化,很难保证其控制
精度,而且对其模式的设计又会增加软件工程师的工作负担;后一种方法则只适用于小部分代码
块中,对于大型的软件系统,由于建模误差等问题,很难应用该思路进行软件自适应逻辑设计,而且仅针对一些单变量进行调节,不符合实际工程开发中多可调参数、多被控对象的实际需求。
发明内容
[0004] 本发明的目的在于提供一种基于多变量控制的软件行为调节方法。
[0005] 实现本发明目的的技术方案为:一种基于多变量控制的软件行为调节方法,包括以下步骤:
[0006] 步骤1、分析目标软件功能逻辑,确定目标软件工作中影响目标软件资源消耗的可调配置参数,并建立可调配置参数与软件行为间的数学模型,即传递函数矩阵;
[0007] 根据传递函数矩阵静态增益信息,判断软件行为是否受唯一可调参数影响,若是,将该软件行为与对应的可调参数直接组成控制回路,执行步骤3;
[0008] 步骤2、应用多变量控制理论,对传递函数矩阵进行解耦器与控制回路设计,对每一个需要动态调节的软件行为构建独立的调节回路;
[0009] 步骤3、将设计得到的解耦器与控制回路以异步执行的方式附着在原有的软件逻辑之上,并以设定的调节周期调节软件行为。
[0010] 优选地,建立多个可调配置参数与多种可量化软件行为间的传递函数矩阵的具体方法为:
[0011] 确定在代码运行期需要动态调整的软件行为,并对目标软件代码进行功能分析确定可以影响目标软件资源消耗的可调配置参数,并将可调配置参数作为控制量;
[0012] 将可调配置参数作为单一变量得到软件行为在稳态时关于可调配置参数的阶跃变化导致的变换曲线,并建立可调参数与软件行为间的数学模型,得到描述整个软件的传递函数矩阵;
[0013] 优选地,根据传递函数矩阵静态增益信息,判断软件行为是否受唯一可调参数影响的具体方法为:
[0014] 当软件行为与唯一一个参数间的静态增益不为0,与其他参数间的静态增益为0,则软件行为受唯一可调参数影响。
[0015] 优选地,对传递函数矩阵进行解耦器与控制回路设计的具体方法为:
[0016] 步骤2-1、根据获得的传递函数矩阵,计算每一个传递函数的归一化增益,得到归一化增益矩阵;
[0017] 步骤2-2、根据得到的归一化增益矩阵,计算得到归一化相对增益矩阵;
[0018] 步骤2-3、对于每个需要调节的软件行为,选取最大的归一化相对增益对应的可调参数作为需要调节的软件行为控制量,完成对目标软件的所有软件行为的控制量匹配;
[0019] 步骤2-4、设计动态解耦器,对任一匹配后的控制回路,弥补软件行为因其他非匹配可调参数变动导致的变化,设计的动态解耦器矩阵为:
[0020]
[0021] 其中,Gij(s)为第i个可调参数与第j个软件行为间的传递函数,lij为第i个可调参数与第j个软件行为间的传递函数时延项,relu函数可以滤除输入值的负数部分;
[0022] 步骤2-5、对每个控制回路设计单独的控制器。
[0023] 优选地,归一化增益的计算公式为:
[0024]
[0025] 其中,Kij为第i个可调参数与第j个软件行为间的静态增益,τ与θ为相应传递函数的惯性时间常数与纯延迟时间常数。
[0026] 优选地,归一化相对增益矩阵的计算公式为:
[0027]
[0028] 其中,KN为归一化增益矩阵,λij为第i个可调参数与第j个软件行为间的归一化相对增益。
[0029] 本发明与
现有技术相比,其显著优点为:1)本发明通过使用系统辨识、回路匹配与动态解耦器,对软件系统的可调参数和软件行为之间存在的复杂影响关系进行解耦,实现了在不影响其他软件行为的前提下,对
指定软件行为进行调节的目的;2)本发明通过对解耦得到的每个控制回路单独设计控制器,更好的保证了目标软件的每一个软件行为的调节
稳定性;3)本发明设计简单,方便应用于实际系统之中。
附图说明
[0031] 图2为
实施例中对软件行为调节线程的设计架构图。
[0032] 图3为实施例中对软件行为-CPU占用的调节误差示意图。
[0033] 图4为实施例中对软件行为-内存占用的调节误差示意图。
[0034] 图5为实施例中对软件行为-网络带宽占用的调节误差示意图。
具体实施方式
[0035] 一种基于多变量控制的软件行为调节方法,包括以下步骤:
[0036] 步骤1、分析目标软件功能逻辑,确定软件工作中可以影响目标软件资源消耗的可调配置参数,并通过实验法进行系统辨识,建立多个可调配置参数与多种可量化软件行为间的数学模型,即传递函数矩阵;由于可能存在某种软件行为仅受唯一的可调参数影响,因此根据传递函数矩阵静态增益信息,判断软件行为是否受唯一可调参数影响,若是,将该软件行为与对应的可调参数直接组成控制回路,执行步骤3;
[0037] 建立多个可调配置参数与多种可量化软件行为间的数学模型,即传递函数矩阵的具体方法为:
[0038] 首先确定在代码运行期需要动态调整的软件行为,并对目标软件代码进行功能分析确定可以影响目标软件资源消耗的可调配置参数,并将可调配置参数作为控制量;
[0039] 对于上一步中得到的软件中的可调配置参数与软件行为,由于可调参数与软件行为通常较多,因此将可调配置参数作为单一变量得到软件行为在稳态时关于可调配置参数的阶跃变化导致的变换曲线,进而建立可调参数与软件行为间的数学模型,最终得到可以描述整个软件的传递函数矩阵;
[0040] 根据传递函数矩阵静态增益信息,判断软件行为是否受唯一可调参数影响的具体方法为:
[0041] 当软件行为与其他的参数间的静态增益为0,仅与唯一一个参数间的静态增益不为0,则软件行为仅受唯一可调参数影响,对于仅受唯一可调参数影响的软件行为,将该软件行为及对应的可调参数直接组成控制回路,执行步骤3;
[0042] 步骤2、应用多变量控制理论,对传递函数矩阵进行解耦器与控制回路设计,对每一个需要动态调节的软件行为构建独立的调节回路,具体为:
[0043] 步骤2-1、根据获得的传递函数矩阵,对其中的每一个传递函数计算其归一化增益,进而得到归一化增益矩阵,归一化增益的计算公式为:
[0044]
[0045] 其中Kij为第i个可调参数与第j个软件行为间的静态增益,τ与θ为相应传递函数的惯性时间常数与纯延迟时间常数;
[0046] 步骤2-2、根据得到的归一化增益矩阵,计算得到归一化相对增益矩阵,公式为:
[0047]
[0048] 其中,KN为归一化增益矩阵,λij为第i个可调参数与第j个软件行为间的归一化相对增益;
[0049] 步骤2-3、对于每个需要调节的软件行为,选取最大的归一化相对增益对应的可调参数作为需要调节的软件行为控制量,进而完成对目标软件的所有软件行为的控制量匹配;
[0050] 步骤2-4、设计动态解耦器,对任一匹配后的控制回路,弥补软件行为因其他非匹配可调参数变动导致的变化,动态解耦器矩阵为:
[0051]
[0052] 其中,Gij(s)为第i个可调参数与第j个软件行为间的传递函数,lij为第i个可调参数与第j个软件行为间的传递函数时延项,relu函数可以滤除输入值的负数部分;
[0053] 步骤2-5、经过上述步骤,目标软件内的多输入多输出系统已经被解耦为多个单输入单输出系统,对于每个需要调节的软件行为,有其独立的控制回路,且互相之间由解耦器保证对于每个软件行为的调整之间互不影响,进而对每个控制回路设计单独的控制器;
[0054] 步骤3、将设计得到的解耦器与控制器以异步执行的方式附着在原有的软件逻辑之上,并以设定的调节周期调节软件行为,具体为:
[0055] 在原有软件代码外增加一条监控线程,以设定的周期,对于任一受监控的软件行为,根据期望值与当前值间的差别计算控制量,并将控制量作用至相应的可调参数,同时根据解耦器计算对其他软件行为的补偿量,作用在其他软件行为对应的可调参数,完成一次软件的行为调节。
[0056] 下面结合实施例对本发明作进一步详细的描述。
[0057] 实施例
[0058] 本实施例对巡检
机器人后台软件中的视频监控模块利用本发明的方法进行调节,具体步骤为:
[0059] 步骤1、选取被控量为该模块的3个软件行为:CPU占用率、内存占用率、网络带宽占用,通过对该部分软件代码分析,选取可调配置参数:
帧率、码率、
分辨率为控制量,通过系统辨识得到其传递函数静态增益矩阵为:
[0060] 网络带宽占用 CPU占用 内存占用
分辨率 1 0.75 3.25
帧率 -0.58 0.283 -0.005
码率 6.5 1 0.0025
[0061] 显然目标软件内存占用仅与分辨率存在明显的关联关系,故直接建立分辨率-内存占用的控制回路,对于其他可调参数与软件行为,进一步得到由多个数学模型构成的传递函数矩阵有:
[0062]
[0063] 步骤2、计算上述的传递函数矩阵的归一化相对增益矩阵有:
[0064]
[0065]
[0066] 根据归一化相对增益矩阵可建立码率-网络带宽占用、帧率-CPU占用两条控制回路,进一步设计解耦器有:
[0067]
[0068] 进一步设计独立回路的PID控制器:
[0069] 控制回路 Kp Ki分辨率-内存占用 7 0.1
码率-网络带宽占用 400 0.01
帧率-CPU占用 20 0.16
[0070] 步骤3、通过使用异步线程,对原有的软件系统进行软件行为调节,软件架构如图2所示,附加的异步线程不会对原有软件系统产生侵入式代码,易于维护。
[0071] 通过本发明,对三种软件行为的控制输出误差如图3、图4、图5所示。由图可知,基于多变量控制,目标软件具备了较好的自我行为调节能力,可以通过对可调参数合适的调整改变自身的资源占用情况。
[0072] 本发明针对实际工程中,需要进行在线调节的目标软件,将多个软件行为作为被控量以及多个可调参数作为控制量,通过使用系统辨识、回路匹配与动态解耦器,对软件系统的可调参数和软件行为之间存在的复杂影响关系进行解耦,实现了在不影响其他软件行为的前提下,对指定软件行为进行调节的目的。并通过对解耦得到的每个控制回路单独设计控制器,更好的保证了目标软件的每一个软件行为的调节稳定性。且本发明整体设计简单,方便应用于实际系统之中。