You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by la...@apache.org on 2014/12/22 09:13:36 UTC

[2/2] stratos git commit: Applying same # of instance calculation as load average, for memory consumption

Applying same # of instance calculation as load average, for memory consumption


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

Branch: refs/heads/master
Commit: f635804fe7209b8fe40188a9cfcc7f4bb171b8d7
Parents: 119fd51
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Mon Dec 22 13:02:46 2014 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Mon Dec 22 13:45:53 2014 +0530

----------------------------------------------------------------------
 .../autoscaler/rule/RuleTasksDelegator.java     | 25 +++++---------------
 .../src/main/conf/drools/scaling.drl            |  2 +-
 2 files changed, 7 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/f635804f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
index c77cc5f..0a410a3 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
@@ -83,28 +83,15 @@ public class RuleTasksDelegator {
         return (int) Math.ceil(numberOfInstances);
     }
 
-    public int getNumberOfInstancesRequiredBasedOnMemoryConsumption(float threshold, double predictedValue,
-                                                                    int max, int min) {
-        double numberOfAdditionalInstancesRequired = 0;
-        if(predictedValue != threshold) {
+    public int getNumberOfInstancesRequiredBasedOnMemoryConsumption(float threshold, double predictedValue, int min) {
 
-            float scalingRange = 100 - threshold;
-            int instanceRange = max - min;
-
-            if(instanceRange != 0){
-
-                float gradient = scalingRange / instanceRange;
-                numberOfAdditionalInstancesRequired = (predictedValue - threshold) / gradient;
-            } else {
+        double numberOfInstances;
+        if(threshold != 0) {
 
-                if(predictedValue > threshold) {
-                    return max + 1;
-                } else {
-                    return min - 1;
-                }
-            }
+            numberOfInstances = (min * predictedValue) / threshold;
+            return (int) Math.ceil(numberOfInstances);
         }
-        return (int) Math.ceil(min + numberOfAdditionalInstancesRequired);
+        return min;
     }
 
     public int getNumberOfInstancesRequiredBasedOnLoadAverage(float threshold, double predictedValue, int min) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/f635804f/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl b/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl
index 7ed05f4..9f8b9cc 100644
--- a/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl
+++ b/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl
@@ -92,7 +92,7 @@ dialect "mvel"
         averageRequestsServedPerInstance : Float() from  clusterInstanceContext.getAverageRequestsServedPerInstance()
 
         numberOfInstancesReuquiredBasedOnRif : Integer() from delegator.getNumberOfInstancesRequiredBasedOnRif(rifPredictedValue, requestsServedPerInstance, averageRequestsServedPerInstance, arspiReset)
-        numberOfInstancesReuquiredBasedOnMemoryConsumption : Integer() from delegator.getNumberOfInstancesRequiredBasedOnMemoryConsumption(mcUpperLimit, mcPredictedValue, clusterInstanceContext.getMaxInstanceCount(), clusterInstanceContext.getMinInstanceCount())
+        numberOfInstancesReuquiredBasedOnMemoryConsumption : Integer() from delegator.getNumberOfInstancesRequiredBasedOnMemoryConsumption(mcUpperLimit, mcPredictedValue, clusterInstanceContext.getMinInstanceCount())
         numberOfInstancesReuquiredBasedOnLoadAverage : Integer() from delegator.getNumberOfInstancesRequiredBasedOnLoadAverage(laUpperLimit, laPredictedValue, clusterInstanceContext.getMinInstanceCount())
 
         numberOfRequiredInstances : Integer() from delegator.getMaxNumberOfInstancesRequired(numberOfInstancesReuquiredBasedOnRif, numberOfInstancesReuquiredBasedOnMemoryConsumption ,mcReset ,numberOfInstancesReuquiredBasedOnLoadAverage, laReset)