30
IBM Research © 2016 IBM Corporation ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes Tatsuhiro Chiba, Rina Nakazawa, Hiroshi Horii Sahil Suneja and Seethalami Seelam IBM Research IBM T.J. Watson Research Center

ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

Tatsuhiro Chiba, Rina Nakazawa, Hiroshi HoriiSahil Suneja and Seethalami Seelam

IBM ResearchIBM T.J. Watson Research Center

Page 2: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

Agenda

§Motivation, Problems and Challenges

§Design & Implementation

§ Evaluation

§ Summary

2 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

Page 3: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

Performance Related Configs for Software§ What kind of configs?

– the configs which can change software behavior• heap size, algorithm, # threads, enabling/disabling futures...

§ How many configs can we tune?– Increasing tunable configs year by year [Xu+, FSE '15]– Apache HTTP Server: 550+– MySQL: 460+– OpenJDK (JVM): 700+

3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

(ref) Hey, You Have Given Me Too Many Knobs!, Xu et al, ESEC/FSE 2015

$> java -XX:+PrintFlagsFinal[Global flags]

uintx AdaptiveSizeDecrementScaleFactor = 4 {product}uintx AdaptiveSizeMajorGCDecayTimeScale = 10 {product}uintx AdaptiveSizePausePolicy = 0 {product}uintx AdaptiveSizePolicyCollectionCostMargin = 50 {product}uintx AdaptiveSizePolicyInitializingSteps = 20 {product}

...

$> java -XX:+rPintFlagsFinal | wc723 3758 72844

Page 4: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

Misconfig makes big performance impact

§ What is the result after config tuning?– success: performance improvement– failure: performance drawback– config influences each other in complex manner

§ system anomalies due to misconfig– up to 31% of cloud outage are caused by misconfiguration [Yin+, SOSP'11]

– misconfig is a top reason of hadoop system outage [Ariel+, IEEE Software '13]

4 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

(Ref.) How Hadoop Clusters Break, IEEE Software, Vol.30, No.4

Page 5: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

Example of Configs ‒ Liberty and Nginx § Can change those configs, but ...

– Not easy task to set proper config manually

– Need to know app role detail

§ What about automation?– Ansible or Kubernetes Operatorcan fix wrong operational processes automatically

– PerfOps cycle still remains out of the automation loop..

5 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

<server description="new server"><featureManager><feature>microProfile-2.0</feature>

</featureManager><!-- optimal thread size depends on workload --><executor coreThreads="1" maxThreads="10"/>

</server>

worker_processes 100; # depends on envevents {worker_connections 1024; # depends on env

}http {sendfile off; # better to set ontcp_nopush off; # better to set onkeepalive_timeout 60; # depends on role

}

Liberty (server.xml)

Nginx (nginx.conf)

Page 6: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

Why config tuning is difficult?§ Everyone cannot always make best config tuning, because

– exists too many knobs– require deep knowledge about the system and apps– application programmer != config tuning specialist

§ Need to know what happens in the apps from various logs/metrics– Java Apps à GC, JIT, Method profiling, lock contention..– MongoDB à query stats, perf counter, i/o monitoring, index...

6 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

set Parameterset XXX=10

Run App/run

Stop App/stop

Evaluationeval response time

Which parameter should we change?Feedback

metrics / logsHow we can read/understand it?Config Tuning Steps

What is the next value?

Page 7: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

Config Tuning Difficulties in Container/Kubernetes (1/3)

7 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

build/pull imagedocker pull mongo

deploy servicekubectl run

running Pods/mongod

Pods Performance

Pods Health

Container & Deployment Life Cycle

Misconfig resides in image

§ Anyone can publish container images– pre-tuned config image– default config image– misconfig image

§ Official images have few preset cfg– still remains enough tuning space

Page 8: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

Config Tuning Difficulties in Container/Kubernetes (2/3)

8 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

build/pull imagedocker pull mongo

deploy servicekubectl run

running Pods/mongod

Pods Performance

Pods Health

Container & Deployment Life Cycle

§ Config Violation at Deployment Timing– Resource Quota (requests, limits)– Service mesh policies (load balancing, network capacity)– Storages (Persistent Volume or temporal space)

misconfig resides indeployment yaml

Misconfig resides in image

spec:containers:- image: cassandra:3.11.2resources:limits:memory: 1Gicpu: 2

Page 9: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

Config Tuning Difficulties in Container/Kubernetes (3/3)

9 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

build/pull imagedocker pull mongo

deploy servicekubectl run

running Pods/mongod

Runtime

Perf. Tuning

Container & Deployment Life Cycle

§ Dynamic config tuning after running for a while– Based on app usage characteristics or workloads• Read heavy vs. Write heavy• Response Time vs. Throughput

– Detecting failed request, etc. – Horizontal pod scaling vs. vertical pod scaling

misconfig resides indeployment yaml

Misconfig resides in image

DB Pod80% read

20% update

improve perf by proper config

Page 10: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

Related Works

IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes10

Name Approach Target System Limitation dedicated k8s

Ansible Rule base OS, init setup static Need Python/SSH -

Dr.Erephant [1]Starfish [2]

Rule base HadoopSpark

static Heuristics -

OtterTune [3] Model base MySQLPostgreSQL

static model update -

CherryPick [4]BOAT [5]

Search base(Bayesian Opt.)

Hive, Spark, JVMVM Instance type

dynamic Samplingconvergence

-

Our Framework Hybrid Various Apps staticdynamic

-

[2] Startfish, CIDR '11

[1] Dr. Erephant, Spark Summit '16 [3] OtterTune, SIGMOD '17

[4] CherryPick, NSDI '17 [5] BOAT, WWW '17

- No generalized framework to make a config advice statically or dynamically- No hybrid approach to use rule based and ML based tuning- No continuous PerfOps config tuning system to support image, container, and Kubernetes

Page 11: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

Challenges and Contributions§ Challenges

– Achieve static/dynamic config tuning for various types of resources on k8s– Apply an optimized config continuously, aligned with cloud native app lifecycle– Support not only one specific app but many apps– Give a reasonable advice why my container is slow, relying on my container's config and metrics

§ Contributions– Building a config tuning framework, ConfAdvisor, on Kubernetes– Extendable/customizable plugin system which can include tuning logic as a code– Case study:config tuning for Cassandra/ Liberty / MongoDB

IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes11

Page 12: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

Agenda

§Motivation, Problems and Challenges

§Design & Implementation

§ Evaluation

§ Summary

12 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

Page 13: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

Config tuning opportunities in cloud-native app lifecycle

13 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

time

app throughput

beforedeploy

afterdeploy

w/ default config

w/ ideal config

(1)(2)

(3)

Image Runtimedeployment

Page 14: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

ConfAdvisor ‒ Definition of Advice Levels

14 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

All advices are personalized result, which is based on its config or metrics that system can observe

General Advice

Optimized Advicew/ App Metrics

Improve Confidence

&Accuracy

BeforeDeployment

(image)

AfterDeployment(Container)

AfterDeploymentfor a while(Container)

§ Level 1. Advice based on app internal default config– Liberty: jvm.options, server.xml, persistent.xml– mongodb: mongod.conf

§ Level 2. Advice based on app env config such as k8s quota or architecture

– Liberty: heap size, app threads size– Spark: executor heap size, executor threads

§ Level 3. Advice based on observed app runtime metrics– Liberty: lock contention, optimal heap size, optimal GC algorithm– mongodb: throughput aware settings / latency aware settings

Page 15: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

ConfAdvisor ‒ System Overview

15 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

ConfAdvisor CLI

Container

Image

ConfAdvisor Service

captured automatically

MongoPlugin

LibertyPlugin

RedisPlugin

ConfAdvisor Framework (API / Functions / ML)

Config Metrics

send advice request

advice result

Add Plugins and Rules- simple customizable what-if rule- python and jinja2 template- config/metrics are available

Advisor Service- provides queryableinterface by user/system- provides detail of rules- provides a proper config

§ provides a service which gives perf-sensitive conf advice– continuous automated PerfOps pipeline by user or system

§ pluggable/programable/declarative rule framework– customize/extend advice rule by perf engineers– install plugin if we need

Page 16: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

Implementation: Capturing config and metrics

16 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

Container Config

Pod

Exporter

Docker Daemon Crawler

k8s node

collect metrics

§ Metrics collector– deploy app exporter as a side car– periodically captured by prometheus

§ Container config collector– periodically captured by crawler(*) daemonset– crawls config immediately by detecting container creation event

§ Image config collector– crawls config inside of image immediately when finding a new image in registry

(*) https://github.com/cloudviz/agentless-system-crawlerImage Registry

ImageImagepush image

collect configs

collect configs

Page 17: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

Implementation: Storing configs and metrics

17 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

コンテナ

(*2) http://augeas.net/

コンフィグコンフィグConfig

Collect

Crawler Augeas(parser)

Elastic Search

Prometheus

Normalize Store

StoreCollect/Normalize

ExporterExporterExporterコンテナContainer

§ Metrics storage– stores all metrics into Prometheus

§ Config storage– Data normalization by using Augeas (*)– Store them into ElasticSearch

Page 18: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

Implementation: Advisor Framework

18 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

Elastic Search

Prometheus

Plugin

AdvisorEngine

Liberty プラグイン

JVM Option テンプレート

Server.xml テンプレート

Liberty Plugin

JVM Option Template

Server.xml Template

Request Result

Load

.jinja2

.py

.py

Declarative Rule

Util Method

UDF

§ Plugin– Written in Python– Implemented logic and rules per each config

• Liberty, MongoDB, K8S, Cassandra, etc..– can use predefined functions by framework– can access various data from API

§ Advisor Service & Framework– handle advice request for an app– load a specified plugin– calc. optimized config for the app– give back the result

API

Page 19: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

Implementation : Declarative Rules (1/2)§ Declarative Config Template

– apply it when what-if rule is matched

– current is a placeholder to access the current value

– advice will be generated from a formula in advice

§ Customizable– append any rules for a specified config if you want

19 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

"jvm.options": [{"name": "mx","what-if": "current.mx > current.limits_memory","advice": "current.limits_memory * 0.75","order": 0,"message": "should keep mx less than memory limits"

},{"name": "ms","what-if": "current.ms != advice.mx","advice": "current.limits_memory * 0.75","order": 1,"message": "should keep ms same as mx"

}]

Page 20: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

Implementation : Declarative Rules (2/2)§ Extendable plugins

– can write any tuning logic as a code in a plugin

– prepare it as an UDF function (e.g. rate_cpu_usage)

– the function is automatically available inside of declarative rule

§ Framework API supports– exposing time-series data as a pandas dataframe

– utilizing prebuilt ML model

20 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

"server.xml": [{"key": "maxThreads","what-if": "current.maxThreads < (current.cpu * 5)","advice" : "current.cpu * 5","order": 0,"message": "should start with 5 * vcpu"

}], "k8s": [{"key": "scale_pod","what-if": "rate_cpu_usage(vars.interval) > 0.8""advice": "current.replica += 1","order": 0,"message": "check average cpu usage in last interval"

}]

Page 21: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

Agenda

§Motivation, Problems and Challenges

§Design & Implementation

§ Evaluation

§ Summary

21 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

Page 22: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

Example of Implemented Declarative Rules

§ Implemented advisor plugin for apps– Liberty, Httpd, Nginx, Node.js, Redis, MongoDB, Cassandra

§ Advisor source coming from,– Official Tuning Guide (RedBook, official site)– JIRA, Github Issue, Quora, etc.– manually ported from those docs

22 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

App Config what-if rule AdviceLiberty server.xml maxPoolSize != coreThreads maxPoolSize = coreThreads

Redis redis.conf maxmemory == None maxmemory = mem_limit * 0.8

Node.js k8s yaml spec rate_cpu_usage(30m) > 0.9 replica++

MongoDB mongod.conf cacheSizeGB > mem_limit cacheSizeGB = mem_limit / 2

Cassandra jvm.options -XX:MaxHeapSize > 16GB -XX:+UseG1GC

Cassandra jvm.options jdk_version < 1.8.0_192-b01 -XX:+UseCGroupMemoryLimitForHeap

Page 23: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

Runtime Overhead ‒ querying performance

§ Evaluated end-to-end ConfAdvisor performance

– L1/L2: simple rule and advice processing

– L3: including data loading from Prometheus

– Make it scale by putting ConfAdvisor replicas more

23 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

EnvironmentMachine Xeon E5 2683 v3 (Xen), SMT2

VM 8 vCPU, 16GB RAM, Ubuntu 16.04

Instance 4Kubernetes 1.11.1

Docker 18.06.1-cePrometheus 2.3.1

Page 24: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

Runtime Overhead ‒ crawling performance

§ Evaluated config crawling overhead

– depends on number of containers on each node

– not so big overhead

§ Evaluated metrics crawling overhead

– depends on the number of metrics and frequency

– seems to be low

24 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

0

0.1

0.2

0.3

0.4

0.5

0 100 200 300 400 500 600 700

cpu

usag

e (%

)

elapsed time (min)

redis elasticsearch mongo nginx node

0

20

40

60

80

0 2 4 6 8 10 12 14 16 18

cpu

usag

e (%

)

elapsed time (min)

crawler (node 1)crawler (node 2)crawler (node 3)crawler (node 4)

Page 25: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

Case Study: Cassandra + YCSB benchmark (1/2)

25 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

§ particular OpenJDK do not take cgroup limit into consideration – -XX:+UseCGroupMemoryLimitForHeap

– what-if: version > 1.8.0_192-b01: no need to set– what-if: version < 1.8.0_192-b01: must set the option explicitly

§ recommends to append the option– w/o advice: can not finish workload (KILLED by the system)– w/ advice: keep smaller heap than 1GB limitation

spec:containers:- image: cassandra:3.11.2resources:limits:memory: 1Gicpu: 2 time

memory usage

1GB

why?

Page 26: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

Case Study: Cassandra + YCSB benchmark (2/2)

26 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

0

1,0002,000

3,0004,0005,000

6,000

LIMIT(Xmx256m)

LIMIT+RAM(Xmx1g)

LIMIT(Xmx256m)

LIMIT+RAM(Xmx1g)

workload A (read: 50% update:50%) workload B (read: 95% update:5%)

elap

sed

tim

e (s

ec.)

LOAD RUN

§ recommends to append one more JVM option– LIMIT: -XX:+UseCGroupMemoryLimitForHeap (-Xmx256m)

– LIMIT+RAM: -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=1 (-Xmx1g)§ By fixing the JVM option misconfig

– successfully run workload– achieved 1.7x or 2.5x improvement

spec:containers:- image: cassandra:3.11.2resources:limits:memory: 1Gicpu: 2

Page 27: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

Case Study: memory sizing§ Liberty + DayTrader

– Nursery heap/tenured heap size optimization

§ MongoDB + YCSB– WiredTiger cache size optimization

IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

0

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

default tuned default tuned default tuned

DayTrader YCSB workload A YCSB workload B

Liberty MongoDB

rela

tive

thro

ughp

ut

gain

DayTrader- duration : 1800 sec- ramp up : 300 sec- # client thread : 60

YCSB- data size : 1KB- record : 1M- dist. : Uniform- # client thread : 8- workload A: read/update = 50/50- workload B: read/update = 95/5

10%

high

er b

ette

r

45%20%

27

Page 28: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

0

10

2030

40

50

6070

80

90

0

500

1,000

1,500

2,000

2,500

3,000

3,500

448 432 416 400 384 320 256 192 128 96 92 88 80 64

64 80 96 112 128 192 256 320 384 416 420 424 432 448

512 512 512 512 512 512 512 512 512 512 512 512 512 512

glob

al G

C in

terv

al (

sec)

thro

ughp

ut (

req/

sec)

throughput (req/sec)

global gc interval (sec)

default

nursery

tenured

Global GC happens frequently

throughput isgoing down

total

Memory Sizing: Liberty + DayTrader

§ Heap size ratio affects performance

– Large nursery heap improves throughput

– Too small tenured heap causes long gc pause time

§ What kind of advice can we make?– what-if: 3 * current GC interval < latest GC interval

– advice: nursery heap ++

28 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

default opt: -Xmx:512m –Xms:128m

Page 29: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

0

5,000

10,000

15,000

20,000

25,000

256MB 512MB 768MB 1GB 7.5GB(default)

Thro

ughp

ut (

ops/

sec)

WiredTiger Cache

workload A workload Bpeak performance

almost same

Memory Sizing: MongoDB + YCSB

§ Mongo does not consider memory limit

– tries to reserve half of system memory as a cache..!

§ In-memory cache size affects performance

– workload A: 1.45x improvement– workload B: 1.20x improvement

§ What kind of advice can we make?– what-if: read/write ratio ≒ 1.0

– advice: cache = total memory / 2

29 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes

spec:containers:- image: mongo:4.1.4resources:limits:memory: 1Gicpu: 1

Page 30: ConfAdvisor: A Performance-centric Configuration Tuning ... · 3 IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes (ref) Hey,

IBM Research

© 2016 IBM Corporation

Summary

§ Summary– Built a sustainable config tuning framework on Kubernetes – Provided extendable/programmable plugin system – confirmed perf improvement for the apps on Kubernetes

§ Future– Imports various expert knowledge (build a ecosystem)– Prepares Bayesian Optimization feature– Imports various ML model

IC2E 2019 / ConfAdvisor: A Performance-centric Configuration Tuning Framework for Containers on Kubernetes30