Nirmal Fernando created STRATOS-645:
---------------------------------------

             Summary: Allowing users to configure an upper and a lower limit of 
threshold values
                 Key: STRATOS-645
                 URL: https://issues.apache.org/jira/browse/STRATOS-645
             Project: Stratos
          Issue Type: Improvement
          Components: Autoscaler
    Affects Versions: 4.0.0
            Reporter: Nirmal Fernando
            Assignee: Nirmal Fernando
             Fix For: 4.1.0


Current auto-scaler takes only the 'average' threshold value from a user's 
auto-scaling policy. Then inside the scaling related drools rules it calculates 
an upper bound and a lower bound by multiplying the average threshold value by 
two non-configurable constants.

scaleUp : Boolean() from ((rifReset && (rifPredictedValue > rifAverageLimit * 
0.8)) || (mcReset && (mcPredictedValue > mcAverageLimit * 0.8)) || (laReset && 
(laPredictedValue > laAverageLimit * 0.8)))
        scaleDown : Boolean() from ((rifReset && (rifPredictedValue < 
rifAverageLimit * 0.1)) && (mcReset && (mcPredictedValue < mcAverageLimit * 
0.1)) && (laReset && (laPredictedValue < laAverageLimit * 0.1)))

IMO this is a limitation and we could make these constants configurable via 
auto-scaling policy.

So, I propose following format to the auto-scaling policy:

{
  "id": "autoscale-policy-1",
  "loadThresholds": {
    "requestsInFlight": {
      "upperLimit": 30,
      "lowerLimit": 5
    },
    "memoryConsumption": {
      "upperLimit": 80,
      "lowerLimit": 50
    },
    "loadAverage": {
      "upperLimit": 100,
      "lowerLimit": 20
    }
  }
}

Then, we can modify the rule to consider user-defined threshold values when 
taking the scaling decision.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to