Page 324 - 《软件学报》2020年第12期
P. 324

3990                                Journal of Software  软件学报 Vol.31, No.12, December 2020

             10.        end if
             11.        if n.endTime≤s.endTime then
             12.           n←the next stage in n s ;

             13.           n ←the tuple of compressible resource of the stage n;
                       c

             14.           n ←the tuple of non-compressible resource of the stage n;
                       n
             15.        else
             16.          break;
             17.        end if
             18.     end while
             19. end for
             20. return true;
         2.4   自适应策略调节
             任务执行中的资源使用行为受多方面因素影响,因此,资源推测使用值与实际使用值之间存在不可避免的
         偏差.FGM 定义资源推测符合度来衡量服务器上某种资源推测使用量与实际使用量之间的偏差程度.
             定义 4(资源推测符合度).  假设 T 时间分为 n 段,第 i 段某种资源实际使用量为μ i ,资源推测使用量为α i ,阶段
         的持续时间为 t i ,则该资源推测符合度 F 以公式(16)计算:
                                     ⎧  n  ((μ  α −  ) ×  2  , μ  α >  and I <  Th N×
                                     ⎪∑
                                  F = ⎨ i= 1  i  i  i ) t  T                                 (16)
                                     ⎪
                                                                   ×
                                     ⎩ 0,                                 μ  α ≤   or I ≥  Th N
         其中,μ为实际资源使用量,α为推测资源使用量,I 为资源的空闲量,Th 为资源的空闲阈值,N 为该资源总量.μ,α和
         I 均按照公式(14)计算.
             根据该定义,仅当资源的空闲量小于一定阈值,且资源的实际使用量大于推测使用量时,资源推测符合度才
         可能不为 0.这样设计的原因在于:推测值趋于准确需要过程,在推测值大于等于实际值或者空闲资源量充足的
         情况下,并不会产生严重的运行时后果,此时应该允许推测机制自行迭代调整推测值.
             FGM 保存服务器各种资源最近几次资源推测符合度值,并在运行时根据服务器各资源的推测符合度以及
         服务器上运行中任务完成时间非正常增加程度等因素调整服务器调度策略,以减轻由资源需求推测偏差、资源
         压缩错估等引起的不当调度决策的影响.具体调度策略调整算法见算法 3.
             算法 3. Policy Adjustment.
             Input:S s :服务器集合;
             1.   for s in S s  do
             2.      if averageConformity(s)>Th sa  then
             3.         s.policy=stopAllocation;
             4.         if isDegradation(s) then
             5.            recycle the resource of s;
             6.         end if
             7.      else if averageConformity(s)>Th cg  then
             8.         s.policy=CoarseGrained;
             9.      else if averageConformity(s)>Th fg  then
             10.        s.policy=FineGrained;
             11.        s.compressible=false;
             12.     else
             13.        s.policy=FineGrained;
   319   320   321   322   323   324   325   326   327   328   329