3、基于效益函数的测试调度算法
上节介绍的任务调度算法,并不能够完全解决任务调度所碰到的问题。最突出的就是现有的任务调度算法所处理的任务对象以及资源对象都是基于小数量的,而对于数量大的任务,现有算法并不能够较好的完成工作。如果将现有的任务调度算法直接应用到测试平台中,虽然能够完成测试任务的分配,但是由于其低下的效率,最终将导致测试平台中存在着大量的测试任务等待执行而造成测试任务的拥堵,而在测试任务执行端也会有大量的空闲资源未能够加以利用,从而使得测试任务的进度过慢。
因此,针对本平台中的任务调度的特点,需要有针对性地设计一种新的任务调度算法来解决上述问题。
3.1 引入三种效益函数
通过对上节介绍的任务调度算法进行研究,发现在min-min算法的基础上引入效益函数,可有效地对任务调度过程进行调节,使测试任务执行的效率得到较大提高。为此,引入了三种类型的效益函数:
3.1.1 硬性级效益函数
time_utilityhard(m,n)=ì
(1)
此效益函数的含义是:
如果测试任务Tm无法在测试任务所规定的截止时间之前完成,那么将不会获得任何效益,如果能够成功完成,则其效益值为1。
其中,TCm,n指的是测试任务Tm在测试客户端资源Rn上的期待完成时间,TDm指的是测试任务Tm截止执行的时间。
3.1.2 软性级效益函数
time_utilitysoft(m,n)=ì
(2)
此效益函数的含义是:
如果测试任务Tm无法在测试任务所规定的截止时间之前完成,使得执行时间超过了规定时间,那么其获得的效益值是按照一定的方式进行计算之后而获得的,并不是为0;而在测试任务能够成功的在其规定时间之内完成时,则其效益值为1。
其中函数中的TCm,n指的是测试任务Tm在测试客户端资源Rn上的期待完成时间,TDm指的是测试任务Tm的截止执行时间。λc是一个常数,满足λc>0。
3.1.3 尽力级效益函数
time_utilitybest_effort(m,n)=e-λb*TCm,n
(3)
此效益函数的含义是:
如果测试任务Tm需要在一个很长的时间内才能够完成,那么测试任务会给资源带来一定的效益,但是并不会很多,但是假设测试任务能够在一个很短的时间内就可以完成,那么资源就会得到更大的效益。
其中的TCm,n指的是测试任务Tm在测试客户端资源Rn上的期待完成时间,λb是一个常数,满足条件λb>λc(λc是软性级效益函数中的常数)。