You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hawq.apache.org by yj...@apache.org on 2015/11/12 07:05:05 UTC

incubator-hawq git commit: HAWQ-152. Pass validation test in resource manager for unexactly divisible memory core ratio

Repository: incubator-hawq
Updated Branches:
  refs/heads/master 7be514893 -> 0b0bad4dd


HAWQ-152. Pass validation test in resource manager for unexactly divisible memory core ratio


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

Branch: refs/heads/master
Commit: 0b0bad4ddaf3b8ea89e18144b5b1e1588b698c4c
Parents: 7be5148
Author: Yi Jin <yj...@pivotal.io>
Authored: Thu Nov 12 14:04:41 2015 +0800
Committer: Yi Jin <yj...@pivotal.io>
Committed: Thu Nov 12 14:04:41 2015 +0800

----------------------------------------------------------------------
 src/backend/resourcemanager/include/resourcepool.h | 4 ++++
 src/backend/resourcemanager/resourcepool.c         | 7 +++++--
 src/backend/resourcemanager/resqueuemanager.c      | 6 ++++--
 3 files changed, 13 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/0b0bad4d/src/backend/resourcemanager/include/resourcepool.h
----------------------------------------------------------------------
diff --git a/src/backend/resourcemanager/include/resourcepool.h b/src/backend/resourcemanager/include/resourcepool.h
index 7e93773..494e3e7 100644
--- a/src/backend/resourcemanager/include/resourcepool.h
+++ b/src/backend/resourcemanager/include/resourcepool.h
@@ -651,6 +651,10 @@ void add_segment_config_row(int32_t 	 id,
 
 #define SEGMENT_STATUS_UP   	'u'
 #define SEGMENT_STATUS_DOWN 	'd'
+
+#define VALIDATE_RATIO_BIAS 	0.005
+#define VALIDATE_RESOURCE_BIAS	0.0001
+
 void validateResourcePoolStatus(bool refquemgr);
 
 /*

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/0b0bad4d/src/backend/resourcemanager/resourcepool.c
----------------------------------------------------------------------
diff --git a/src/backend/resourcemanager/resourcepool.c b/src/backend/resourcemanager/resourcepool.c
index 47ba2ee..3c6bfee 100644
--- a/src/backend/resourcemanager/resourcepool.c
+++ b/src/backend/resourcemanager/resourcepool.c
@@ -3342,12 +3342,14 @@ void validateResourcePoolStatus(bool refquemgr)
 			}
 
 			/* Validation 2. The ratio should be correct. */
+			double r1 = alloccore == 0 ? 0 : allocmem/alloccore;
+			double r2 = availcore == 0 ? 0 : availmem/availcore;
 			if ( (allocmem == 0 && alloccore != 0) ||
 				 (allocmem != 0 && alloccore == 0) ||
 				 (availmem == 0 && availcore != 0) ||
 				 (availmem != 0 && availcore == 0) ||
 				 (alloccore != 0 && availcore != 0 &&
-				  trunc(allocmem/alloccore) != trunc(availmem/availcore)))
+				  2 * fabs(r1-r2) / (r1 + r2) > VALIDATE_RATIO_BIAS) )
 			{
 				elog(ERROR, "HAWQ RM Validation. Wrong resource counter ratio. "
 							"Host %s. "
@@ -3433,7 +3435,8 @@ void validateResourcePoolStatus(bool refquemgr)
 						PQUEMGR->RatioTrackers[0]->TotalAllocated.Core);
 		}
 
-		if ( totalavailmem > totalallocmem || totalavailcore > totalalloccore )
+		if ( totalavailmem > totalallocmem ||
+			 totalavailcore > totalalloccore * (1+VALIDATE_RESOURCE_BIAS) )
 		{
 				elog(ERROR, "HAWQ RM Validation. Wrong total allocated resource. "
 							"In resource pool available (%d MB, %lf CORE), "

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/0b0bad4d/src/backend/resourcemanager/resqueuemanager.c
----------------------------------------------------------------------
diff --git a/src/backend/resourcemanager/resqueuemanager.c b/src/backend/resourcemanager/resqueuemanager.c
index fc51a9a..c2da496 100644
--- a/src/backend/resourcemanager/resqueuemanager.c
+++ b/src/backend/resourcemanager/resqueuemanager.c
@@ -3085,8 +3085,10 @@ void dispatchResourceToQueries(void)
 						 track->TotalAllocated.Core,
 						 track->QueueInfo->Name);
 
-			Assert( track->TotalAllocated.MemoryMB >= track->TotalUsed.MemoryMB &&
-					track->TotalAllocated.Core     >= track->TotalUsed.Core) ;
+			double evalcore = track->TotalAllocated.Core == 0 ?
+							  VALIDATE_RESOURCE_BIAS :
+							  track->TotalAllocated.Core * (1+VALIDATE_RESOURCE_BIAS);
+			Assert(evalcore >= track->TotalUsed.Core);
 		DQUEUE_LOOP_END
 
 		/*