Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions manifests/autotune/layers/container-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"apiVersion": "recommender.com/v1",
"kind": "KruizeLayer",
"metadata": {
"name": "container"
},
"layer_name": "container",
"layer_level": 0,
"details": "generic container tunables",
"layer_presence": {
"presence": "always"
},
"tunables": [
{
"name": "memoryRequest",
"value_type": "double",
"lower_bound": "512 Mi",
"upper_bound": "2048 Mi",
"step": 1
},
{
"name": "cpuRequest",
"value_type": "double",
"lower_bound": "1.0",
"upper_bound": "3.0",
"step": 0.01
}
]
}

22 changes: 22 additions & 0 deletions manifests/autotune/layers/container-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
apiVersion: "recommender.com/v1"
kind: "KruizeLayer"
metadata:
name: "container"
layer_name: container
layer_level: 0
details: generic container tunables
layer_presence:
# This layer is assumed to be available by default for all applications.
presence: always
tunables:
- name: memoryRequest
value_type: double
upper_bound: '2048 Mi'
lower_bound: '512 Mi'
step: 1

- name: cpuRequest
value_type: double
upper_bound: '3.0'
lower_bound: '1.0'
step: 0.01
67 changes: 67 additions & 0 deletions manifests/autotune/layers/hotspot-micrometer-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
{
"apiVersion": "recommender.com/v1",
"kind": "KruizeLayer",
"metadata": {
"name": "hotspot"
},
"layer_name": "hotspot",
"layer_level": 1,
"details": "hotspot tunables",
"layer_presence": {
"queries": [
{
"datasource": "prometheus",
"query": "jvm_memory_used_bytes{area=\"heap\",id=~\".+Eden.+\"}",
"key": "pod"
},
{
"datasource": "prometheus",
"query": "jvm_memory_used_bytes{area=\"heap\",id=~\".+Tenured.+\"}",
"key": "pod"
},
{
"datasource": "prometheus",
"query": "jvm_memory_used_bytes{area=\"heap\",id=~\".+Old.+\"}",
"key": "pod"
},
{
"datasource": "prometheus",
"query": "jvm_memory_used_bytes{area=\"heap\",id=~\"Eden.+\"}",
"key": "pod"
},
{
"datasource": "prometheus",
"query": "jvm_memory_used_bytes{area=\"heap\",id=~\"Tenured.+\"}",
"key": "pod"
},
{
"datasource": "prometheus",
"query": "jvm_memory_used_bytes{area=\"heap\",id=~\"Old.+\"}",
"key": "pod"
}
]
},
"tunables": [
{
"name": "GCPolicy",
"description": "Garbage collection policy",
"value_type": "categorical",
"choices": [
"G1GC",
"ParallelGC",
"SerialGC",
"ShenandoahGC",
"ZGC"
]
},
{
"name": "MaxRAMPercentage",
"description": "Maximum RAM percentage to allocate",
"value_type": "integer",
"lower_bound": "25",
"upper_bound": "90",
"step": 1
}
]
}

46 changes: 46 additions & 0 deletions manifests/autotune/layers/hotspot-micrometer-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
apiVersion: "recommender.com/v1"
kind: "KruizeLayer"
metadata:
name: "hotspot"
layer_name: hotspot
layer_level: 1
details: hotspot tunables
layer_presence:
queries:
- datasource: 'prometheus'
query: 'jvm_memory_used_bytes{area="heap",id=~".+Eden.+"}'
key: pod
- datasource: 'prometheus'
query: 'jvm_memory_used_bytes{area="heap",id=~".+Tenured.+"}'
key: pod
- datasource: 'prometheus'
query: 'jvm_memory_used_bytes{area="heap",id=~".+Old.+"}'
key: pod
- datasource: 'prometheus'
query: 'jvm_memory_used_bytes{area="heap",id=~"Eden.+"}'
key: pod
- datasource: 'prometheus'
query: 'jvm_memory_used_bytes{area="heap",id=~"Tenured.+"}'
key: pod
- datasource: 'prometheus'
query: 'jvm_memory_used_bytes{area="heap",id=~"Old.+"}'
key: pod
tunables:
# Enable zGC if Java >=17
- name: GCPolicy
description: 'Garbage collection policy'
value_type: categorical
choices:
- 'G1GC'
- 'ParallelGC'
- 'SerialGC'
- 'ShenandoahGC'
- 'ZGC'

- name: MaxRAMPercentage
description: 'Maximum RAM percentage to allocate'
value_type: integer
lower_bound: '25'
upper_bound: '90'
step: 1

32 changes: 32 additions & 0 deletions manifests/autotune/layers/layer-config.yaml_template
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
apiVersion: "recommender.com/v1"
kind: "AutotuneConfig"
metadata:
name: "xyz"
layer_name: xyz
# layer_level 0 = container, 1 = runtime (eg: openj9, hotspot, nodejs)
# 2 = framework (eg: quarkus, liberty, springboot), 3 = app
layer_level: 2
details: xyz tunables
# layer_presence tells autotune how to detect this layer in a pod
layer_presence:
# Uncomment one of the following
# This layer is assumed to be available by default for all applications.
#presence: always
# This layer is present if the following prometheus query returns non null
#queries:
#- datasource: 'prometheus'
# query: jvm_memory_used_bytes{area="heap",id="Tenured Gen",}
# key: pod
# This layer is present if the following pod label is present
#label:
#- name: app.kubernetes.io/layer
# value: quarkus
# This section describes the tunables associated with this layer and is an array
tunables:
- name: quarkus.thread-pool.core-threads
description: 'The core thread pool size. This number of threads will always be kept alive.'
# value_type: currently one of double or integer
value_type: integer
upper_bound: '10'
lower_bound: '1'
step: 1
62 changes: 62 additions & 0 deletions manifests/autotune/layers/openj9-actuator-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
{
"apiVersion": "recommender.com/v1",
"kind": "KruizeLayer",
"metadata": {
"name": "openj9"
},
"layer_name": "openj9",
"layer_level": 1,
"details": "openj9 tunables",
"layer_presence": {
"queries": [
{
"datasource": "prometheus",
"query": "jvm_memory_used_bytes{area=\"heap\",id=~\"nursery-.+\"}",
"key": "pod"
},
{
"datasource": "prometheus",
"query": "jvm_memory_used_bytes{area=\"heap\",id=~\"tenured-.+\"}",
"key": "pod"
},
{
"datasource": "prometheus",
"query": "jvm_memory_used_bytes{area=\"heap\",id=~\"tenured\"}",
"key": "pod"
},
{
"datasource": "prometheus",
"query": "jvm_memory_used_bytes{area=\"heap\",id=~\"balanced.+\"}",
"key": "pod"
},
{
"datasource": "prometheus",
"query": "jvm_memory_used_bytes{area=\"heap\",id=~\"JavaHeap\"}",
"key": "pod"
}
]
},
"tunables": [
{
"name": "GCPolicy",
"description": "Garbage collection policy",
"value_type": "categorical",
"choices": [
"gencon",
"balanced",
"optavgpause",
"optthruput",
"metronome"
]
},
{
"name": "MaxRAMPercentage",
"description": "Maximum RAM percentage to allocate",
"value_type": "integer",
"lower_bound": "25",
"upper_bound": "90",
"step": 1
}
]
}

43 changes: 43 additions & 0 deletions manifests/autotune/layers/openj9-actuator-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
apiVersion: "recommender.com/v1"
kind: "KruizeLayer"
metadata:
name: "openj9"
layer_name: openj9
layer_level: 1
details: openj9 tunables
layer_presence:
queries:
- datasource: 'prometheus'
query: 'jvm_memory_used_bytes{area="heap",id=~"nursery-.+"}'
key: pod
- datasource: 'prometheus'
query: 'jvm_memory_used_bytes{area="heap",id=~"tenured-.+"}'
key: pod
- datasource: 'prometheus'
query: 'jvm_memory_used_bytes{area="heap",id=~"tenured"}'
key: pod
- datasource: 'prometheus'
query: 'jvm_memory_used_bytes{area="heap",id=~"balanced.+"}'
key: pod
- datasource: 'prometheus'
query: 'jvm_memory_used_bytes{area="heap",id=~"JavaHeap"}'
key: pod

tunables:
- name: GCPolicy
description: 'Garbage collection policy'
value_type: categorical
choices:
- 'gencon'
- 'balanced'
- 'optavgpause'
- 'optthruput'
- 'metronome'

- name: MaxRAMPercentage
description: 'Maximum RAM percentage to allocate'
value_type: integer
lower_bound: '25'
upper_bound: '90'
step: 1

29 changes: 29 additions & 0 deletions manifests/autotune/layers/quarkus-micrometer-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"apiVersion": "recommender.com/v1",
"kind": "KruizeLayer",
"metadata": {
"name": "quarkus"
},
"layer_name": "quarkus",
"layer_level": 2,
"details": "quarkus tunables",
"layer_presence": {
"label": [
{
"name": "app.kubernetes.io/layer",
"value": "quarkus"
}
]
},
"tunables": [
{
"name": "quarkus.thread-pool.core-threads",
"description": "The core thread pool size. This number of threads will always be kept alive.",
"value_type": "integer",
"lower_bound": "1",
"upper_bound": "10",
"step": 1
}
]
}

20 changes: 20 additions & 0 deletions manifests/autotune/layers/quarkus-micrometer-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
apiVersion: "recommender.com/v1"
kind: "KruizeLayer"
metadata:
name: "quarkus"
layer_name: quarkus
layer_level: 2
details: quarkus tunables
layer_presence:
label:
- name: app.kubernetes.io/layer
value: quarkus
tunables:
# upper_bound is set to 8 times of cpu.
- name: quarkus.thread-pool.core-threads
description: 'The core thread pool size. This number of threads will always be kept alive.'
value_type: integer
upper_bound: '10'
lower_bound: '1'
step: 1