Page 284 - 《软件学报》2021年第8期
P. 284

2566                                   Journal of Software  软件学报 Vol.32, No.8,  August 2021

                    步骤 3:根据资源约束、通信成本、RR 与 CPU 优先级,确定非关键线程的分配情况.
                    步骤 4:根据资源约束模型与最优线程重分配模型,确定集群内数据的迁移情况.
                    步骤 5:根据节能策略计算集群的路径成本与总能耗.

                 3.1   资源约束算法
                    为确定集群内工作节点的资源约束,采用资源约束算法,其中需要考虑工作节点 CPU、内存与网络带宽的
                 资源占用率.该算法保证集群关键节点在满足资源约束的条件下进行数据迁移.此外,当关键节点的一类资源占
                 用率达到极限时,则将该节点设置为极限节点,表示无法再将数据迁入该节点,因此需要重新选择关键节点.具
                 体的算法描述在算法 1 中体现.
                    算法 1.  资源约束算法.
                    输入:关键节点的极限资源 r ←          (r r M ,r B ) ,关键节点的初始资源 o ←   (o C  ,o M  ,o B  ) ,关键节点迁入数据后
                                                C
                                                 ,
                                           i n  i n  i n  i n             i n  i n  i n  i n
                 增加的资源 r′ ←   (r C′  ,r M ′  ,r B′  ) .
                           i n  i n  i n  i n
                    输出:允许关键节点迁入数据表示 tr.
                                   ′′
                    初始化: N′′ ()C ← { , ,...,n n′′ 2  n′′ m }.  /*极限节点集合*/
                                   1
                                                 B
                    1.   if  o ≥  C  r C  or o ≥  M  r M  or o ≥  B  r   then
                            i n  i n  i n  i n  i n  i n
                    2.   N″(C)←n i ;
                    3.   else
                    4.      while n i =tr do
                               C′
                                       C
                                   C
                    5.         if   r +  o ≤  r   then
                               i n  i n  i n
                    6.            n i .put (r C′ i n  ,"CPU") ;
                    7.         else
                    8.              n i ≠tr;
                    9.         end if
                                   M
                                       M
                    10.        if  r M ′    + o ≤ r   then
                                        i n
                               i n
                                   i n
                    11.            n i .put (r M ′ ,"DRAM") ;
                                    i n
                    12.        else
                    13.           n i ≠tr;
                    14.        end if
                    15.        if  r +  o ≤ r   then
                               B′
                                       B
                                   B
                               i n  i n  i n
                    16.           n  .put (r B′ ," Network Bandwidt ")h  ;
                              i     i n
                    17.        else
                    18.           n i ≠tr;
                    19.        end if
                    20.   end while
                    21. end if
                    算法 1 的输入参数为关键节点的极限资源、关键节点的初始资源与关键节点迁入数据后增加的资源;输出
                 参数为允许关键节点迁入数据;初始化为极限节点集合.算法的第 1 行、第 2 行表示对关键节点 n i 是否为极限
                 节点进行判断:若为极限节点,则该节点不能被迁入数据;否则,需要判断工作节点数据迁入是否满足 3 条原则.
                 算法的第 5 行~第 9 行表示对关键节点是否满足 CPU 资源临界原则进行判断:若满足,则判断之后的两条原则;
                 否则,节点数据迁入不满足 tr.算法的第 10 行~第 14 行表示在满足 CPU 资源临界原则后,对关键节点是否满足
                 内存资源临界原则进行判断:若满足内存资源临界原则,进入下一环节;否则,节点数据迁入不满足 tr.算法的第
   279   280   281   282   283   284   285   286   287   288   289