kruize / autotune

Autonomous Performance Tuning for Kubernetes!
Apache License 2.0
164 stars 54 forks source link

Adding new autotuneconfig object for container layer doesn't update the same layer info #171

Open shruacha1234 opened 3 years ago

shruacha1234 commented 3 years ago

Adding new autotuneconfig object for the container layer doesn't update the same layer info instead it is displayed separately

Steps to reproduce

yaml

apiVersion: "recommender.com/v1"
kind: "AutotuneConfig"
metadata:
  name: "tunable-memorylimit"
layer_name: container
layer_level: 0
details: generic container tunables
layerPresence:
  # This layer is assumed to be available by default for all applications.
  presence: always
tunables:
  - name: memoryRequest
    value_type: double
    upper_bound: '250M'
    lower_bound: '100M'
    queries:
      datasource:
        - name: 'prometheus'
          query: 'container_memory_working_set_bytes{$CONTAINER_LABEL$="", $POD_LABEL$="$POD$"}'
    sla_class:
      - response_time
      - throughput
      - resource_usage

  - name: memoryLimit
    value_type: double
    upper_bound: '350M'
    lower_bound: '150M'
    queries:
      datasource:
        - name: 'prometheus'
          query: 'container_memory_working_set_bytes{$CONTAINER_LABEL$="", $POD_LABEL$="$POD$"}'
    sla_class:
      - response_time
      - throughput
      - resource_usage

  - name: cpuRequest
    value_type: double
    upper_bound: '3.0'
    lower_bound: '1.0'
    queries:
      datasource:
        - name: 'prometheus'
          query: '(container_cpu_usage_seconds_total{$CONTAINER_LABEL$!="POD", $POD_LABEL$="$POD$"}[1m])'
    sla_class:
      - response_time
      - throughput
      - resource_usage

Actual result

[
    {
        "layer_level": 0,
        "tunables": [
            {
                "value_type": "double",
                "lower_bound": "150M",
                "name": "memoryRequest",
                "upper_bound": "300M"
            },
            {
                "value_type": "double",
                "lower_bound": "1.0",
                "name": "cpuRequest",
                "upper_bound": "3.0"
            }
        ],
        "layer_name": "container",
        "layer_details": "generic container tunables"
    },
    {
        "layer_level": 0,
        "tunables": [
            {
                "value_type": "double",
                "lower_bound": "100M",
                "name": "memoryRequest",
                "upper_bound": "250M"
            },
            {
                "value_type": "double",
                "lower_bound": "150M",
                "name": "memoryLimit",
                "upper_bound": "350M"
            },
            {
                "value_type": "double",
                "lower_bound": "1.0",
                "name": "cpuRequest",
                "upper_bound": "3.0"
            }
        ],
        "layer_name": "container",
        "layer_details": "generic container tunables"
    }
        ],
        "layer_name": "quarkus",
        "layer_details": "quarkus tunables"
    }
]

Expeted result

[{
    "layer_level": 0,
    "tunables": [
        {
            "value_type": "double",
            "lower_bound": "100M",
            "name": "memoryRequest",
            "upper_bound": "250M"
        },
        {
            "value_type": "double",
            "lower_bound": "150M",
            "name": "memoryLimit",
            "upper_bound": "350M"
        },
        {
            "value_type": "double",
            "lower_bound": "1.0",
            "name": "cpuRequest",
            "upper_bound": "3.0"
        }
    ]
}]
chandrams commented 3 years ago

Note - this is actually a regression from autotune:0.0.1-rc2, with rc2 build it works fine.

shruacha1234 commented 3 years ago

Facing the same issue even with kruize/autotune:test