HAWQ-570. YARN queue report should be a relative percentage value instead of an 
absolute value


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

Branch: refs/heads/HAWQ-546
Commit: c40a6b1a3bee40eabd8c32e052fd06791a396c6f
Parents: 7549897
Author: YI JIN <y...@pivotal.io>
Authored: Wed Mar 23 13:14:04 2016 +1100
Committer: Oleksandr Diachenko <odiache...@pivotal.io>
Committed: Wed Mar 30 17:23:26 2016 -0700

----------------------------------------------------------------------
 src/backend/resourcemanager/resourcemanager.c |  6 ++---
 src/backend/resourcemanager/resqueuemanager.c | 26 ++++++++++++----------
 2 files changed, 17 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/c40a6b1a/src/backend/resourcemanager/resourcemanager.c
----------------------------------------------------------------------
diff --git a/src/backend/resourcemanager/resourcemanager.c 
b/src/backend/resourcemanager/resourcemanager.c
index c7215be..eb2663c 100644
--- a/src/backend/resourcemanager/resourcemanager.c
+++ b/src/backend/resourcemanager/resourcemanager.c
@@ -645,11 +645,11 @@ int MainHandlerLoop(void)
                         PRESPOOL->AddPendingContainerCount == 0 &&
                         PRESPOOL->RetPendingContainerCount == 0 &&
                         PQUEMGR->ForcedReturnGRMContainerCount == 0 &&
-                        (PQUEMGR->GRMQueueCurCapacity > 
PQUEMGR->GRMQueueCapacity ||
-                         PQUEMGR->GRMQueueResourceTight) )
+                        PQUEMGR->GRMQueueCurCapacity > 1 &&
+                        PQUEMGR->GRMQueueResourceTight )
                {
                        elog(LOG, "Resource manager decides to breathe out 
resource. "
-                                         "Current GRM queue capacity %lf, "
+                                         "Current relative GRM queue capacity 
%lf, "
                                          "Expect GRM queue capacity %lf, "
                                          "Estimae GRM queue %s",
                                          PQUEMGR->GRMQueueCurCapacity,

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/c40a6b1a/src/backend/resourcemanager/resqueuemanager.c
----------------------------------------------------------------------
diff --git a/src/backend/resourcemanager/resqueuemanager.c 
b/src/backend/resourcemanager/resqueuemanager.c
index 538c2ad..b5072dc 100644
--- a/src/backend/resourcemanager/resqueuemanager.c
+++ b/src/backend/resourcemanager/resqueuemanager.c
@@ -5229,9 +5229,9 @@ void setForcedReturnGRMContainerCount(void)
 
                if ( quetrack->DLDetector.LockedTotal.MemoryMB > 0 )
                {
-                       elog(LOG, "Queue %s has potential resource deadlock, 
skip breathe.",
+                       elog(LOG, "Queue %s has potential resource deadlock, 
cancel breathe.",
                                          quetrack->QueueInfo->Name);
-                       PQUEMGR->GRMQueueCurCapacity   = 
PQUEMGR->GRMQueueCapacity;
+                       PQUEMGR->GRMQueueCurCapacity   = 1.0;
                        PQUEMGR->GRMQueueResourceTight = false;
                        return;
                }
@@ -5240,20 +5240,22 @@ void setForcedReturnGRMContainerCount(void)
        /* Get current GRM container size. */
        int clusterctnsize = getClusterGRMContainerSize();
        int toretctnsize = 0;
-       if ( PQUEMGR->GRMQueueCurCapacity > PQUEMGR->GRMQueueCapacity )
+       double curabscapacity = PQUEMGR->GRMQueueCurCapacity *
+                                                       
PQUEMGR->GRMQueueCapacity;
+
+       if ( curabscapacity > PQUEMGR->GRMQueueCapacity )
        {
                /*
                 * We would like to return as many containers as possible to 
make queue
                 * usage lower than expected capacity.
                 */
-               double r = (PQUEMGR->GRMQueueCurCapacity - 
PQUEMGR->GRMQueueCapacity) /
-                                  PQUEMGR->GRMQueueCurCapacity;
-               elog(DEBUG3, "GRM queue cur capacity %lf is larger than 
capacity %lf. "
-                                        "ratio %lf, curent GRM container size 
%d",
-                                        PQUEMGR->GRMQueueCurCapacity,
-                                        PQUEMGR->GRMQueueCapacity,
-                                        r,
-                                        clusterctnsize);
+               double r = (curabscapacity - PQUEMGR->GRMQueueCapacity) / 
curabscapacity;
+               elog(LOG, "GRM queue is over-using, cur capacity %lf*%lf, "
+                                 "ratio %lf, curent GRM container size %d",
+                                 PQUEMGR->GRMQueueCurCapacity,
+                                 PQUEMGR->GRMQueueCapacity,
+                                 r,
+                                 clusterctnsize);
                toretctnsize = ceil(r * clusterctnsize);
 
                if ( rm_return_percentage_on_overcommit > 0 )
@@ -5272,7 +5274,7 @@ void setForcedReturnGRMContainerCount(void)
 
        /* Restore queue report to avoid force return again. */
        PQUEMGR->ForcedReturnGRMContainerCount = toretctnsize;
-       PQUEMGR->GRMQueueCurCapacity               = PQUEMGR->GRMQueueCapacity;
+       PQUEMGR->GRMQueueCurCapacity               = 1.0;
        PQUEMGR->GRMQueueResourceTight             = false;
 }
 

Reply via email to