Repository: incubator-hawq
Updated Branches:
  refs/heads/master f08b5e6c6 -> 454d66803


HAWQ-382. Adjust combined workload index in resource pool in different 
situations


Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/454d6680
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/454d6680
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/454d6680

Branch: refs/heads/master
Commit: 454d668037d18f1a7aa9c13ddb36e0dd802bf00a
Parents: f08b5e6
Author: YI JIN <y...@pivotal.io>
Authored: Wed Feb 3 10:15:39 2016 +1100
Committer: YI JIN <y...@pivotal.io>
Committed: Wed Feb 3 10:15:39 2016 +1100

----------------------------------------------------------------------
 .../resourcemanager/include/resourcepool.h      |  1 -
 src/backend/resourcemanager/resourcepool.c      | 43 +++++++-------------
 2 files changed, 14 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/454d6680/src/backend/resourcemanager/include/resourcepool.h
----------------------------------------------------------------------
diff --git a/src/backend/resourcemanager/include/resourcepool.h 
b/src/backend/resourcemanager/include/resourcepool.h
index b7b25a1..01c97aa 100644
--- a/src/backend/resourcemanager/include/resourcepool.h
+++ b/src/backend/resourcemanager/include/resourcepool.h
@@ -546,7 +546,6 @@ SegResource getSegResource(int32_t id);
 int  addGRMContainerToToBeAccepted(GRMContainer ctn);
 void GRMContainerToAccepted(GRMContainer ctn);
 void addGRMContainerToResPool(GRMContainer ctn);
-void dropGRMContainerFromResPool(GRMContainer ctn);
 
 void addGRMContainerToToBeKicked(GRMContainer ctn);
 void addGRMContainerToKicked(GRMContainer ctn);

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/454d6680/src/backend/resourcemanager/resourcepool.c
----------------------------------------------------------------------
diff --git a/src/backend/resourcemanager/resourcepool.c 
b/src/backend/resourcemanager/resourcepool.c
index 8d39e67..cb43342 100644
--- a/src/backend/resourcemanager/resourcepool.c
+++ b/src/backend/resourcemanager/resourcepool.c
@@ -1494,6 +1494,7 @@ int setSegResHAWQAvailability( SegResource segres, 
uint8_t newstatus)
                reorderSegResourceAvailIndex(segres, ratio);
                reorderSegResourceAllocIndex(segres, ratio);
        }
+       reorderSegResourceCombinedWorkloadIndex(segres);
 
        elog(LOG, "Host %s is set availability %d. Cluster currently has %d 
available nodes.",
                          GET_SEGRESOURCE_HOSTNAME(segres),
@@ -1771,6 +1772,7 @@ void addGRMContainerToResPool(GRMContainer container)
 
        reorderSegResourceAvailIndex(segresource, ratio);
        reorderSegResourceAllocIndex(segresource, ratio);
+       reorderSegResourceCombinedWorkloadIndex(segresource);
 
        elog(LOG, "Resource manager added resource container into resource pool 
"
                          "(%d MB, %d CORE) at %s (%d:%.*s)",
@@ -1782,35 +1784,6 @@ void addGRMContainerToResPool(GRMContainer container)
                          GET_SEGRESOURCE_HOSTNAME(segresource));
 }
 
-void dropGRMContainerFromResPool(GRMContainer ctn)
-{
-       minusResourceBundleData(&(ctn->Resource->Allocated), ctn->MemoryMB, 
ctn->Core);
-       minusResourceBundleData(&(ctn->Resource->Available), ctn->MemoryMB, 
ctn->Core);
-
-       Assert( ctn->Resource->Allocated.MemoryMB >= 0 );
-       Assert( ctn->Resource->Allocated.Core >= 0     );
-       Assert( ctn->Resource->Available.MemoryMB >= 0 );
-       Assert( ctn->Resource->Available.Core >= 0     );
-
-       Assert( ctn->Resource->Allocated.MemoryMB >= 0 );
-       Assert( ctn->Resource->Allocated.Core >= 0     );
-       Assert( ctn->Resource->Available.MemoryMB >= 0 );
-       Assert( ctn->Resource->Available.Core >= 0     );
-
-       uint32_t ratio = trunc(ctn->MemoryMB / ctn->Core);
-       reorderSegResourceAllocIndex(ctn->Resource, ratio);
-       reorderSegResourceAvailIndex(ctn->Resource, ratio);
-
-       elog(LOG, "Resource manager dropped resource container from resource 
pool "
-                         "(%d MB, %d CORE) at %s (%d:%.*s)",
-                         ctn->MemoryMB,
-                         ctn->Core,
-                         ctn->HostName,
-                         ctn->Resource->Stat->ID,
-                         ctn->Resource->Stat->Info.HostNameLen,
-                         GET_SEGRESOURCE_HOSTNAME(ctn->Resource));
-}
-
 void addGRMContainerToToBeKicked(GRMContainer ctn)
 {
        uint32_t                                hostnamelen             = 0;
@@ -2991,6 +2964,7 @@ void returnAllGRMResourceFromSegment(SegResource segres)
                reorderSegResourceAllocIndex(segres, 
PQUEMGR->RatioReverseIndex[i]);
                reorderSegResourceAvailIndex(segres, 
PQUEMGR->RatioReverseIndex[i]);
        }
+       reorderSegResourceCombinedWorkloadIndex(segres);
 
        Assert(segres->Allocated.MemoryMB == 0);
        Assert(segres->Allocated.Core == 0.0);
@@ -3078,6 +3052,7 @@ void dropAllGRMContainersFromSegment(SegResource segres)
                reorderSegResourceAllocIndex(segres, 
PQUEMGR->RatioReverseIndex[i]);
                reorderSegResourceAvailIndex(segres, 
PQUEMGR->RatioReverseIndex[i]);
        }
+       reorderSegResourceCombinedWorkloadIndex(segres);
 
        elog(LOG, "Resource manager cleared %u containers, old in-use resource "
                                  "is set (%d MB, %lf CORE)",
@@ -3443,6 +3418,7 @@ void timeoutIdleGRMResourceToRBByRatio(int                
 ratioindex,
 
                        reorderSegResourceAllocIndex(resource, ratio);
                        reorderSegResourceAvailIndex(resource, ratio);
+                       reorderSegResourceCombinedWorkloadIndex(resource);
 
                        addGRMContainerToToBeKicked(retcont);
                        (*realretcontnum)++;
@@ -3548,6 +3524,7 @@ bool setSegResRUAlivePending( SegResource segres, bool 
pending)
                reorderSegResourceAllocIndex(segres, ratio);
                reorderSegResourceAvailIndex(segres, ratio);
        }
+       reorderSegResourceCombinedWorkloadIndex(segres);
        return res;
 }
 
@@ -3605,6 +3582,7 @@ void checkGRMContainerStatus(RB_GRMContainerStat 
ctnstats, int size)
        {
                SegResource segres = getSegResource(i);
                Assert(segres != NULL);
+               bool segreschanged = false;
 
                for( int ridx = 0 ; ridx < PQUEMGR->RatioCount ; ++ridx )
                {
@@ -3671,6 +3649,9 @@ void checkGRMContainerStatus(RB_GRMContainerStat 
ctnstats, int size)
                                                                  "it is not 
treated active in YARN");
 
                                        
minusResourceFromReourceManager(ctn->MemoryMB, ctn->Core);
+
+                                       segreschanged = true;
+
                                        validateResourcePoolStatus(true);
                                }
                                else
@@ -3688,6 +3669,10 @@ void checkGRMContainerStatus(RB_GRMContainerStat 
ctnstats, int size)
                                }
                        }
                }
+               if ( segreschanged )
+               {
+                       reorderSegResourceCombinedWorkloadIndex(segres);
+               }
        }
        MEMORY_CONTEXT_SWITCH_BACK
 

Reply via email to