Created
March 11, 2021 09:53
-
-
Save minrk/45ce7c14f71227809b2178bf05fd1562 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
"""Measure the cost of _preload_content=True across kubernetes versions | |
This has grown over time, and is *super* expensive with kubernetes 12 | |
and lots of pods. | |
CSV output is produced on stdout, so call with e.g. | |
./measure-preload-content | tee measurements.csv | |
""" | |
import json | |
import os | |
import sys | |
import time | |
import timeit | |
from functools import lru_cache, partial | |
from subprocess import run | |
from tempfile import TemporaryDirectory | |
kube_ctx = "prod" | |
kube_ns = "prod" | |
@lru_cache() | |
def kube_api(): | |
"""Cached function to return a single kube API client""" | |
import kubernetes.client | |
import kubernetes.config | |
kubernetes.config.load_kube_config(context=kube_ctx) | |
return kubernetes.client.CoreV1Api() | |
def list_pods(_preload_content, label_selector): | |
"""List pods, return the number of pods returned""" | |
kube = kube_api() | |
r = kube.list_namespaced_pod( | |
kube_ns, | |
label_selector=label_selector, | |
_preload_content=_preload_content, | |
) | |
if _preload_content: | |
return len(r.items) | |
else: | |
return len(json.loads(r.read())["items"]) | |
def list_user_pods(preload): | |
"""List user pods in a jupyterhub deployment (lots)""" | |
return list_pods( | |
_preload_content=preload, | |
label_selector="app=jupyterhub,component=singleuser-server", | |
) | |
def list_placeholder_pods(preload): | |
"""List placeholder pods in a jupyterhub deployment (several, fewer than users)""" | |
return list_pods( | |
_preload_content=preload, | |
label_selector="app=jupyterhub,component=user-placeholder", | |
) | |
def list_build_pods(preload): | |
"""List build pods in a binderhub deployment (a few)""" | |
return list_pods( | |
_preload_content=preload, | |
label_selector="component=binderhub-build", | |
) | |
def list_hub_pods(preload): | |
"""List hub pods in a jupyterhub deployment (always 1)""" | |
return list_pods( | |
_preload_content=preload, | |
label_selector="app=jupyterhub,component=hub", | |
) | |
def measure(f, repeat=7): | |
"""Measure how long it takes to call f() | |
- collects `repeat` data points | |
- For each data point, run f enough times | |
that each measurement takes at least 200ms, | |
but at least twice. | |
(lifted from IPython's %timeit) | |
Returns: | |
(number, times, counts): | |
number of calls per measurement | |
list of times (in seconds) per f() call): (measured time / number) | |
and number of pods returned for each call | |
""" | |
tic = time.perf_counter() | |
f() | |
toc = time.perf_counter() | |
# always run it at least 2 times | |
number = 2 | |
t = toc - tic | |
# make sure we take at least 200ms | |
# lifted from IPython's %timeit | |
while t * number < 0.2: | |
number *= 10 | |
times = [] | |
counts = [] | |
print(f"Measuring {f} with r={repeat},n={number}", file=sys.stderr) | |
for i in range(repeat): | |
tic = time.perf_counter() | |
count = 0 | |
for j in range(number): | |
count = max(f(), count) | |
toc = time.perf_counter() | |
times.append((toc - tic) / number) | |
counts.append(count) | |
return number, times, counts | |
def run_one(): | |
"""Run one collection of data | |
This function is called within the test environment | |
""" | |
import kubernetes | |
# ensure cached kube client is created | |
kube = kube_api() | |
for list_f in [list_user_pods, list_placeholder_pods, list_hub_pods]: | |
for preload in (True, False): | |
number, times, counts = measure(partial(list_f, preload)) | |
for t, c in zip(times, counts): | |
print( | |
f"{list_f.__name__},{preload},{kubernetes.__version__},{number},{t},{c}" | |
) | |
def setup_env(kube_version, td): | |
"""Set up a virtual environment in which to run a test""" | |
env_dir = os.path.join(td, f"kube-{kube_version}") | |
run([sys.executable, "-m", "venv", env_dir], stdout=sys.stderr) | |
run( | |
[ | |
os.path.join(env_dir, "bin", "python3"), | |
"-mpip", | |
"install", | |
f"kubernetes=={kube_version}.*", | |
], | |
stdout=sys.stderr, | |
) | |
return env_dir | |
def run_all(): | |
"""Run all the data collection | |
- create a test environment for each major kubernetes version | |
- run `run_one()` in that env | |
""" | |
with TemporaryDirectory() as td: | |
print("fname,preload,kube_version,number,per_call,pods") | |
for kube_version in [7, 8, 9, 10, 11, 12]: | |
env = setup_env(kube_version, td) | |
run([os.path.join(env, "bin", "python3"), "-u", __file__, "one"]) | |
if __name__ == "__main__": | |
import argparse | |
parser = argparse.ArgumentParser() | |
parser.add_argument( | |
"command", | |
help="command to run", | |
choices=["one", "all"], | |
default="all", | |
nargs="?", | |
) | |
opts = parser.parse_args() | |
if opts.command == "all": | |
run_all() | |
elif opts.command == "one": | |
run_one() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fname | preload | kube_version | number | per_call | pods | |
---|---|---|---|---|---|---|
list_user_pods | True | 7.0.1 | 2 | 2.9281939895 | 609 | |
list_user_pods | True | 7.0.1 | 2 | 2.315616512000001 | 612 | |
list_user_pods | True | 7.0.1 | 2 | 2.0714346074999987 | 613 | |
list_user_pods | True | 7.0.1 | 2 | 2.0372694179999993 | 613 | |
list_user_pods | True | 7.0.1 | 2 | 1.9461733540000008 | 603 | |
list_user_pods | True | 7.0.1 | 2 | 2.356966524999999 | 602 | |
list_user_pods | True | 7.0.1 | 2 | 2.255201481500002 | 596 | |
list_user_pods | False | 7.0.1 | 2 | 0.5660382505000001 | 598 | |
list_user_pods | False | 7.0.1 | 2 | 0.5181754585 | 599 | |
list_user_pods | False | 7.0.1 | 2 | 0.5563345820000016 | 600 | |
list_user_pods | False | 7.0.1 | 2 | 0.6250853525000011 | 600 | |
list_user_pods | False | 7.0.1 | 2 | 0.5234939044999969 | 601 | |
list_user_pods | False | 7.0.1 | 2 | 0.5567624169999981 | 604 | |
list_user_pods | False | 7.0.1 | 2 | 0.5525619589999984 | 604 | |
list_placeholder_pods | True | 7.0.1 | 2 | 0.30065865050000085 | 75 | |
list_placeholder_pods | True | 7.0.1 | 2 | 0.27420454900000024 | 75 | |
list_placeholder_pods | True | 7.0.1 | 2 | 0.44985104750000104 | 75 | |
list_placeholder_pods | True | 7.0.1 | 2 | 0.3812616755000029 | 75 | |
list_placeholder_pods | True | 7.0.1 | 2 | 0.3096765055000006 | 75 | |
list_placeholder_pods | True | 7.0.1 | 2 | 0.6677113319999997 | 75 | |
list_placeholder_pods | True | 7.0.1 | 2 | 0.2857590839999986 | 75 | |
list_placeholder_pods | False | 7.0.1 | 2 | 0.21407958749999878 | 75 | |
list_placeholder_pods | False | 7.0.1 | 2 | 0.29173731950000104 | 75 | |
list_placeholder_pods | False | 7.0.1 | 2 | 0.21913255999999848 | 75 | |
list_placeholder_pods | False | 7.0.1 | 2 | 0.19270956949999984 | 75 | |
list_placeholder_pods | False | 7.0.1 | 2 | 0.18226485649999802 | 75 | |
list_placeholder_pods | False | 7.0.1 | 2 | 0.21358396900000187 | 75 | |
list_placeholder_pods | False | 7.0.1 | 2 | 0.2170765760000002 | 75 | |
list_hub_pods | True | 7.0.1 | 2 | 0.20381828449999873 | 1 | |
list_hub_pods | True | 7.0.1 | 2 | 0.2025866150000013 | 1 | |
list_hub_pods | True | 7.0.1 | 2 | 0.2052724519999991 | 1 | |
list_hub_pods | True | 7.0.1 | 2 | 0.3078311454999998 | 1 | |
list_hub_pods | True | 7.0.1 | 2 | 0.2040010979999991 | 1 | |
list_hub_pods | True | 7.0.1 | 2 | 0.20420077749999876 | 1 | |
list_hub_pods | True | 7.0.1 | 2 | 0.20473953099999775 | 1 | |
list_hub_pods | False | 7.0.1 | 2 | 0.20554468999999997 | 1 | |
list_hub_pods | False | 7.0.1 | 2 | 0.20585724800000094 | 1 | |
list_hub_pods | False | 7.0.1 | 2 | 0.20036112100000025 | 1 | |
list_hub_pods | False | 7.0.1 | 2 | 0.22113530100000034 | 1 | |
list_hub_pods | False | 7.0.1 | 2 | 0.1955112469999989 | 1 | |
list_hub_pods | False | 7.0.1 | 2 | 0.20018960899999882 | 1 | |
list_hub_pods | False | 7.0.1 | 2 | 0.20645871900000046 | 1 | |
list_user_pods | True | 8.0.2 | 2 | 1.7679836664999997 | 617 | |
list_user_pods | True | 8.0.2 | 2 | 1.8249567505000002 | 616 | |
list_user_pods | True | 8.0.2 | 2 | 1.9689307805 | 615 | |
list_user_pods | True | 8.0.2 | 2 | 1.6847051664999997 | 616 | |
list_user_pods | True | 8.0.2 | 2 | 1.7637256700000012 | 617 | |
list_user_pods | True | 8.0.2 | 2 | 1.8290379569999988 | 619 | |
list_user_pods | True | 8.0.2 | 2 | 1.8103391369999997 | 622 | |
list_user_pods | False | 8.0.2 | 2 | 0.583657263000001 | 621 | |
list_user_pods | False | 8.0.2 | 2 | 0.5963919305000012 | 624 | |
list_user_pods | False | 8.0.2 | 2 | 0.7379159180000023 | 624 | |
list_user_pods | False | 8.0.2 | 2 | 0.7517552555000009 | 624 | |
list_user_pods | False | 8.0.2 | 2 | 0.7281056554999985 | 625 | |
list_user_pods | False | 8.0.2 | 2 | 0.563855221499999 | 626 | |
list_user_pods | False | 8.0.2 | 2 | 0.6548937529999996 | 627 | |
list_placeholder_pods | True | 8.0.2 | 2 | 0.3741333789999999 | 75 | |
list_placeholder_pods | True | 8.0.2 | 2 | 0.3144640315000018 | 75 | |
list_placeholder_pods | True | 8.0.2 | 2 | 0.3090009430000009 | 75 | |
list_placeholder_pods | True | 8.0.2 | 2 | 0.3634348514999992 | 75 | |
list_placeholder_pods | True | 8.0.2 | 2 | 0.3091736119999986 | 75 | |
list_placeholder_pods | True | 8.0.2 | 2 | 0.2950449070000012 | 75 | |
list_placeholder_pods | True | 8.0.2 | 2 | 0.28874817250000007 | 75 | |
list_placeholder_pods | False | 8.0.2 | 2 | 0.20377486599999983 | 75 | |
list_placeholder_pods | False | 8.0.2 | 2 | 0.21071785000000176 | 75 | |
list_placeholder_pods | False | 8.0.2 | 2 | 0.25311327549999874 | 75 | |
list_placeholder_pods | False | 8.0.2 | 2 | 0.22060176549999966 | 75 | |
list_placeholder_pods | False | 8.0.2 | 2 | 0.21102411650000263 | 75 | |
list_placeholder_pods | False | 8.0.2 | 2 | 0.19066929950000144 | 75 | |
list_placeholder_pods | False | 8.0.2 | 2 | 0.18965004000000008 | 75 | |
list_hub_pods | True | 8.0.2 | 2 | 0.19667674949999991 | 1 | |
list_hub_pods | True | 8.0.2 | 2 | 0.20997296899999895 | 1 | |
list_hub_pods | True | 8.0.2 | 2 | 0.20400278749999856 | 1 | |
list_hub_pods | True | 8.0.2 | 2 | 0.19463998499999846 | 1 | |
list_hub_pods | True | 8.0.2 | 2 | 0.1832771039999983 | 1 | |
list_hub_pods | True | 8.0.2 | 2 | 0.1898032210000018 | 1 | |
list_hub_pods | True | 8.0.2 | 2 | 0.20568523450000242 | 1 | |
list_hub_pods | False | 8.0.2 | 2 | 0.2670698499999986 | 1 | |
list_hub_pods | False | 8.0.2 | 2 | 0.17201485600000055 | 1 | |
list_hub_pods | False | 8.0.2 | 2 | 0.19448062800000088 | 1 | |
list_hub_pods | False | 8.0.2 | 2 | 0.17949278100000043 | 1 | |
list_hub_pods | False | 8.0.2 | 2 | 0.20636777100000003 | 1 | |
list_hub_pods | False | 8.0.2 | 2 | 0.23886712299999857 | 1 | |
list_hub_pods | False | 8.0.2 | 2 | 0.25515286650000135 | 1 | |
list_user_pods | True | 9.0.1 | 2 | 1.9886384034999995 | 629 | |
list_user_pods | True | 9.0.1 | 2 | 2.0164976599999997 | 627 | |
list_user_pods | True | 9.0.1 | 2 | 2.4013781729999994 | 629 | |
list_user_pods | True | 9.0.1 | 2 | 2.523709780999999 | 629 | |
list_user_pods | True | 9.0.1 | 2 | 2.422242928500001 | 629 | |
list_user_pods | True | 9.0.1 | 2 | 2.1655502534999993 | 629 | |
list_user_pods | True | 9.0.1 | 2 | 2.190657473 | 629 | |
list_user_pods | False | 9.0.1 | 2 | 0.5614010354999976 | 627 | |
list_user_pods | False | 9.0.1 | 2 | 0.668990249500002 | 627 | |
list_user_pods | False | 9.0.1 | 2 | 0.5359714790000005 | 626 | |
list_user_pods | False | 9.0.1 | 2 | 0.541440893499999 | 626 | |
list_user_pods | False | 9.0.1 | 2 | 0.717704239499998 | 626 | |
list_user_pods | False | 9.0.1 | 2 | 0.5676269330000032 | 628 | |
list_user_pods | False | 9.0.1 | 2 | 0.5867882794999986 | 628 | |
list_placeholder_pods | True | 9.0.1 | 2 | 0.40393615500000024 | 75 | |
list_placeholder_pods | True | 9.0.1 | 2 | 0.3018978109999999 | 75 | |
list_placeholder_pods | True | 9.0.1 | 2 | 0.3174388195000013 | 75 | |
list_placeholder_pods | True | 9.0.1 | 2 | 0.31976264750000283 | 75 | |
list_placeholder_pods | True | 9.0.1 | 2 | 0.3554860249999976 | 75 | |
list_placeholder_pods | True | 9.0.1 | 2 | 0.28607634249999947 | 75 | |
list_placeholder_pods | True | 9.0.1 | 2 | 0.3836781660000028 | 75 | |
list_placeholder_pods | False | 9.0.1 | 2 | 0.33906556399999843 | 75 | |
list_placeholder_pods | False | 9.0.1 | 2 | 0.2193349540000007 | 75 | |
list_placeholder_pods | False | 9.0.1 | 2 | 0.20490837599999878 | 75 | |
list_placeholder_pods | False | 9.0.1 | 2 | 0.2203888169999999 | 75 | |
list_placeholder_pods | False | 9.0.1 | 2 | 0.1959388544999996 | 75 | |
list_placeholder_pods | False | 9.0.1 | 2 | 0.19704970700000146 | 75 | |
list_placeholder_pods | False | 9.0.1 | 2 | 0.20734941299999932 | 75 | |
list_hub_pods | True | 9.0.1 | 2 | 0.26947708949999694 | 1 | |
list_hub_pods | True | 9.0.1 | 2 | 0.19553568850000147 | 1 | |
list_hub_pods | True | 9.0.1 | 2 | 0.19495532150000017 | 1 | |
list_hub_pods | True | 9.0.1 | 2 | 0.20155420500000076 | 1 | |
list_hub_pods | True | 9.0.1 | 2 | 0.21514406350000215 | 1 | |
list_hub_pods | True | 9.0.1 | 2 | 0.23095290850000083 | 1 | |
list_hub_pods | True | 9.0.1 | 2 | 0.2262131200000006 | 1 | |
list_hub_pods | False | 9.0.1 | 2 | 0.22663710449999996 | 1 | |
list_hub_pods | False | 9.0.1 | 2 | 0.18644341049999724 | 1 | |
list_hub_pods | False | 9.0.1 | 2 | 0.20147711950000158 | 1 | |
list_hub_pods | False | 9.0.1 | 2 | 0.19551678799999905 | 1 | |
list_hub_pods | False | 9.0.1 | 2 | 0.20254800349999869 | 1 | |
list_hub_pods | False | 9.0.1 | 2 | 0.1988409295000011 | 1 | |
list_hub_pods | False | 9.0.1 | 2 | 0.19769516699999912 | 1 | |
list_user_pods | True | 10.1.0 | 2 | 4.138999248499999 | 629 | |
list_user_pods | True | 10.1.0 | 2 | 2.3659873759999996 | 630 | |
list_user_pods | True | 10.1.0 | 2 | 1.8992802824999995 | 631 | |
list_user_pods | True | 10.1.0 | 2 | 2.5617476564999997 | 629 | |
list_user_pods | True | 10.1.0 | 2 | 2.5007337300000003 | 626 | |
list_user_pods | True | 10.1.0 | 2 | 1.795952830500001 | 626 | |
list_user_pods | True | 10.1.0 | 2 | 2.168823310999997 | 623 | |
list_user_pods | False | 10.1.0 | 2 | 0.5738492915000002 | 626 | |
list_user_pods | False | 10.1.0 | 2 | 0.4988702775 | 626 | |
list_user_pods | False | 10.1.0 | 2 | 0.5414176055000013 | 626 | |
list_user_pods | False | 10.1.0 | 2 | 0.537905913000003 | 626 | |
list_user_pods | False | 10.1.0 | 2 | 0.5788137410000012 | 626 | |
list_user_pods | False | 10.1.0 | 2 | 0.6017006824999989 | 627 | |
list_user_pods | False | 10.1.0 | 2 | 0.5290839354999974 | 625 | |
list_placeholder_pods | True | 10.1.0 | 2 | 0.3148544649999998 | 75 | |
list_placeholder_pods | True | 10.1.0 | 2 | 0.3354153879999977 | 75 | |
list_placeholder_pods | True | 10.1.0 | 2 | 0.27434660750000006 | 75 | |
list_placeholder_pods | True | 10.1.0 | 2 | 0.2888217300000022 | 75 | |
list_placeholder_pods | True | 10.1.0 | 2 | 0.37002422000000124 | 75 | |
list_placeholder_pods | True | 10.1.0 | 2 | 0.36651240750000014 | 75 | |
list_placeholder_pods | True | 10.1.0 | 2 | 0.3743973005000001 | 75 | |
list_placeholder_pods | False | 10.1.0 | 2 | 0.20008069049999833 | 75 | |
list_placeholder_pods | False | 10.1.0 | 2 | 0.20601001949999898 | 75 | |
list_placeholder_pods | False | 10.1.0 | 2 | 0.2311735679999991 | 75 | |
list_placeholder_pods | False | 10.1.0 | 2 | 0.2158789084999988 | 75 | |
list_placeholder_pods | False | 10.1.0 | 2 | 0.28312686949999843 | 75 | |
list_placeholder_pods | False | 10.1.0 | 2 | 0.19513664100000128 | 75 | |
list_placeholder_pods | False | 10.1.0 | 2 | 0.2085949135000007 | 75 | |
list_hub_pods | True | 10.1.0 | 2 | 0.1802443860000018 | 1 | |
list_hub_pods | True | 10.1.0 | 2 | 0.20521912149999721 | 1 | |
list_hub_pods | True | 10.1.0 | 2 | 0.21430423350000183 | 1 | |
list_hub_pods | True | 10.1.0 | 2 | 0.2903187384999981 | 1 | |
list_hub_pods | True | 10.1.0 | 2 | 0.18338546599999717 | 1 | |
list_hub_pods | True | 10.1.0 | 2 | 0.1932628584999989 | 1 | |
list_hub_pods | True | 10.1.0 | 2 | 0.20418062499999934 | 1 | |
list_hub_pods | False | 10.1.0 | 2 | 0.21423108950000014 | 1 | |
list_hub_pods | False | 10.1.0 | 2 | 0.21133510949999845 | 1 | |
list_hub_pods | False | 10.1.0 | 2 | 0.23459994499999937 | 1 | |
list_hub_pods | False | 10.1.0 | 2 | 0.18630023499999737 | 1 | |
list_hub_pods | False | 10.1.0 | 2 | 0.2166232920000013 | 1 | |
list_hub_pods | False | 10.1.0 | 2 | 0.18538184899999877 | 1 | |
list_hub_pods | False | 10.1.0 | 2 | 0.1981034835000024 | 1 | |
list_user_pods | True | 11.0.0 | 2 | 2.4072391185 | 623 | |
list_user_pods | True | 11.0.0 | 2 | 2.6388823345 | 624 | |
list_user_pods | True | 11.0.0 | 2 | 2.0410394215000007 | 622 | |
list_user_pods | True | 11.0.0 | 2 | 1.7569386224999999 | 620 | |
list_user_pods | True | 11.0.0 | 2 | 1.9425787440000004 | 620 | |
list_user_pods | True | 11.0.0 | 2 | 2.4777308589999993 | 621 | |
list_user_pods | True | 11.0.0 | 2 | 1.882728857 | 618 | |
list_user_pods | False | 11.0.0 | 2 | 0.5066222350000018 | 616 | |
list_user_pods | False | 11.0.0 | 2 | 0.5843361945000005 | 616 | |
list_user_pods | False | 11.0.0 | 2 | 0.5914965589999994 | 616 | |
list_user_pods | False | 11.0.0 | 2 | 0.6439111445000023 | 617 | |
list_user_pods | False | 11.0.0 | 2 | 0.6576294300000001 | 619 | |
list_user_pods | False | 11.0.0 | 2 | 0.5270436614999987 | 620 | |
list_user_pods | False | 11.0.0 | 2 | 0.5026139709999988 | 620 | |
list_placeholder_pods | True | 11.0.0 | 2 | 0.341356461500002 | 75 | |
list_placeholder_pods | True | 11.0.0 | 2 | 0.3014716015000012 | 75 | |
list_placeholder_pods | True | 11.0.0 | 2 | 0.40161969349999893 | 75 | |
list_placeholder_pods | True | 11.0.0 | 2 | 0.4658679649999975 | 75 | |
list_placeholder_pods | True | 11.0.0 | 2 | 0.43342966049999987 | 75 | |
list_placeholder_pods | True | 11.0.0 | 2 | 0.4332465610000007 | 75 | |
list_placeholder_pods | True | 11.0.0 | 2 | 0.34223859649999966 | 75 | |
list_placeholder_pods | False | 11.0.0 | 2 | 0.21763544299999893 | 75 | |
list_placeholder_pods | False | 11.0.0 | 2 | 0.20690713649999992 | 75 | |
list_placeholder_pods | False | 11.0.0 | 2 | 0.3055963900000016 | 75 | |
list_placeholder_pods | False | 11.0.0 | 2 | 0.20196344500000052 | 75 | |
list_placeholder_pods | False | 11.0.0 | 2 | 0.21065338849999904 | 75 | |
list_placeholder_pods | False | 11.0.0 | 2 | 0.21719450499999837 | 75 | |
list_placeholder_pods | False | 11.0.0 | 2 | 0.2403865164999992 | 75 | |
list_hub_pods | True | 11.0.0 | 2 | 0.20446753050000055 | 1 | |
list_hub_pods | True | 11.0.0 | 2 | 0.24607453349999986 | 1 | |
list_hub_pods | True | 11.0.0 | 2 | 0.2131592189999978 | 1 | |
list_hub_pods | True | 11.0.0 | 2 | 0.18681870499999675 | 1 | |
list_hub_pods | True | 11.0.0 | 2 | 0.19816803550000017 | 1 | |
list_hub_pods | True | 11.0.0 | 2 | 0.19007636650000137 | 1 | |
list_hub_pods | True | 11.0.0 | 2 | 0.1995402239999997 | 1 | |
list_hub_pods | False | 11.0.0 | 2 | 0.2501185039999996 | 1 | |
list_hub_pods | False | 11.0.0 | 2 | 0.19746809899999818 | 1 | |
list_hub_pods | False | 11.0.0 | 2 | 0.19938087799999948 | 1 | |
list_hub_pods | False | 11.0.0 | 2 | 0.18255185399999974 | 1 | |
list_hub_pods | False | 11.0.0 | 2 | 0.19607260149999917 | 1 | |
list_hub_pods | False | 11.0.0 | 2 | 0.1882215115000001 | 1 | |
list_hub_pods | False | 11.0.0 | 2 | 0.2035696924999968 | 1 | |
list_user_pods | True | 12.0.1 | 2 | 6.636533157000001 | 615 | |
list_user_pods | True | 12.0.1 | 2 | 5.683028385500002 | 614 | |
list_user_pods | True | 12.0.1 | 2 | 4.811378537500001 | 616 | |
list_user_pods | True | 12.0.1 | 2 | 6.214444411500001 | 616 | |
list_user_pods | True | 12.0.1 | 2 | 6.217237324000003 | 612 | |
list_user_pods | True | 12.0.1 | 2 | 4.847866332499997 | 615 | |
list_user_pods | True | 12.0.1 | 2 | 6.348836381000005 | 618 | |
list_user_pods | False | 12.0.1 | 2 | 0.5706708439999986 | 619 | |
list_user_pods | False | 12.0.1 | 2 | 0.5194660135000007 | 618 | |
list_user_pods | False | 12.0.1 | 2 | 0.6051191725000038 | 618 | |
list_user_pods | False | 12.0.1 | 2 | 0.589876236000002 | 618 | |
list_user_pods | False | 12.0.1 | 2 | 0.6855215844999947 | 617 | |
list_user_pods | False | 12.0.1 | 2 | 0.6092106615000006 | 617 | |
list_user_pods | False | 12.0.1 | 2 | 0.5497697935000048 | 617 | |
list_placeholder_pods | True | 12.0.1 | 2 | 0.49898719600000163 | 75 | |
list_placeholder_pods | True | 12.0.1 | 2 | 0.4333112595000017 | 75 | |
list_placeholder_pods | True | 12.0.1 | 2 | 0.4142677379999995 | 75 | |
list_placeholder_pods | True | 12.0.1 | 2 | 0.4151980119999976 | 75 | |
list_placeholder_pods | True | 12.0.1 | 2 | 0.4616726369999995 | 75 | |
list_placeholder_pods | True | 12.0.1 | 2 | 0.3407637044999987 | 75 | |
list_placeholder_pods | True | 12.0.1 | 2 | 0.3735264729999983 | 75 | |
list_placeholder_pods | False | 12.0.1 | 2 | 0.2075982544999988 | 75 | |
list_placeholder_pods | False | 12.0.1 | 2 | 0.2026971570000029 | 75 | |
list_placeholder_pods | False | 12.0.1 | 2 | 0.2046601695000021 | 75 | |
list_placeholder_pods | False | 12.0.1 | 2 | 0.3073322119999986 | 75 | |
list_placeholder_pods | False | 12.0.1 | 2 | 0.1953501254999992 | 75 | |
list_placeholder_pods | False | 12.0.1 | 2 | 0.19084775150000155 | 75 | |
list_placeholder_pods | False | 12.0.1 | 2 | 0.22774040300000564 | 75 | |
list_hub_pods | True | 12.0.1 | 2 | 0.19580701250000487 | 1 | |
list_hub_pods | True | 12.0.1 | 2 | 0.19765379049999865 | 1 | |
list_hub_pods | True | 12.0.1 | 2 | 0.20790823149999937 | 1 | |
list_hub_pods | True | 12.0.1 | 2 | 0.2587011789999991 | 1 | |
list_hub_pods | True | 12.0.1 | 2 | 0.2048131909999995 | 1 | |
list_hub_pods | True | 12.0.1 | 2 | 0.19633855150000556 | 1 | |
list_hub_pods | True | 12.0.1 | 2 | 0.26033642850000405 | 1 | |
list_hub_pods | False | 12.0.1 | 2 | 0.2058970574999961 | 1 | |
list_hub_pods | False | 12.0.1 | 2 | 0.2045729829999985 | 1 | |
list_hub_pods | False | 12.0.1 | 2 | 0.2561360060000055 | 1 | |
list_hub_pods | False | 12.0.1 | 2 | 0.2042208664999947 | 1 | |
list_hub_pods | False | 12.0.1 | 2 | 0.1889860284999969 | 1 | |
list_hub_pods | False | 12.0.1 | 2 | 0.1872986945000008 | 1 | |
list_hub_pods | False | 12.0.1 | 2 | 0.18762709749999829 | 1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"id": "phantom-optics", | |
"metadata": {}, | |
"source": [ | |
"# Measuring the perfomance cost of _preload_content\n", | |
"\n", | |
"Collected results for measuring `list_namespaced_pod` with and without `_preload_content=False`,\n", | |
"run for several versions of the kubernetes Python client.\n", | |
"\n", | |
"This cost seems to have risen for large numbers of resources in recent versions of kubernetes, particularly 12.0.\n", | |
"\n", | |
"To produce this data, a few queries are run against mybinder.org-prod, which has ~75 placholder pods and ~600 user pods.\n", | |
"See [`measure-preload-content`](./measure-preload-content) for data generation." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"id": "environmental-brass", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import altair as alt\n", | |
"import pandas as pd" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"id": "complicated-system", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>fname</th>\n", | |
" <th>preload</th>\n", | |
" <th>kube_version</th>\n", | |
" <th>number</th>\n", | |
" <th>per_call</th>\n", | |
" <th>pods</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>list_user_pods</td>\n", | |
" <td>True</td>\n", | |
" <td>7.0.1</td>\n", | |
" <td>2</td>\n", | |
" <td>2.928194</td>\n", | |
" <td>609</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>list_user_pods</td>\n", | |
" <td>True</td>\n", | |
" <td>7.0.1</td>\n", | |
" <td>2</td>\n", | |
" <td>2.315617</td>\n", | |
" <td>612</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>list_user_pods</td>\n", | |
" <td>True</td>\n", | |
" <td>7.0.1</td>\n", | |
" <td>2</td>\n", | |
" <td>2.071435</td>\n", | |
" <td>613</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>list_user_pods</td>\n", | |
" <td>True</td>\n", | |
" <td>7.0.1</td>\n", | |
" <td>2</td>\n", | |
" <td>2.037269</td>\n", | |
" <td>613</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>list_user_pods</td>\n", | |
" <td>True</td>\n", | |
" <td>7.0.1</td>\n", | |
" <td>2</td>\n", | |
" <td>1.946173</td>\n", | |
" <td>603</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>...</th>\n", | |
" <td>...</td>\n", | |
" <td>...</td>\n", | |
" <td>...</td>\n", | |
" <td>...</td>\n", | |
" <td>...</td>\n", | |
" <td>...</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>247</th>\n", | |
" <td>list_hub_pods</td>\n", | |
" <td>False</td>\n", | |
" <td>12.0.1</td>\n", | |
" <td>2</td>\n", | |
" <td>0.256136</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>248</th>\n", | |
" <td>list_hub_pods</td>\n", | |
" <td>False</td>\n", | |
" <td>12.0.1</td>\n", | |
" <td>2</td>\n", | |
" <td>0.204221</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>249</th>\n", | |
" <td>list_hub_pods</td>\n", | |
" <td>False</td>\n", | |
" <td>12.0.1</td>\n", | |
" <td>2</td>\n", | |
" <td>0.188986</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>250</th>\n", | |
" <td>list_hub_pods</td>\n", | |
" <td>False</td>\n", | |
" <td>12.0.1</td>\n", | |
" <td>2</td>\n", | |
" <td>0.187299</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>251</th>\n", | |
" <td>list_hub_pods</td>\n", | |
" <td>False</td>\n", | |
" <td>12.0.1</td>\n", | |
" <td>2</td>\n", | |
" <td>0.187627</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"<p>252 rows × 6 columns</p>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" fname preload kube_version number per_call pods\n", | |
"0 list_user_pods True 7.0.1 2 2.928194 609\n", | |
"1 list_user_pods True 7.0.1 2 2.315617 612\n", | |
"2 list_user_pods True 7.0.1 2 2.071435 613\n", | |
"3 list_user_pods True 7.0.1 2 2.037269 613\n", | |
"4 list_user_pods True 7.0.1 2 1.946173 603\n", | |
".. ... ... ... ... ... ...\n", | |
"247 list_hub_pods False 12.0.1 2 0.256136 1\n", | |
"248 list_hub_pods False 12.0.1 2 0.204221 1\n", | |
"249 list_hub_pods False 12.0.1 2 0.188986 1\n", | |
"250 list_hub_pods False 12.0.1 2 0.187299 1\n", | |
"251 list_hub_pods False 12.0.1 2 0.187627 1\n", | |
"\n", | |
"[252 rows x 6 columns]" | |
] | |
}, | |
"execution_count": 2, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df = pd.read_csv(\"measurements.csv\")\n", | |
"df" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"id": "apparent-working", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"\n", | |
"<div id=\"altair-viz-01354eb889064a43b7eca2182e6bb77f\"></div>\n", | |
"<script type=\"text/javascript\">\n", | |
" (function(spec, embedOpt){\n", | |
" let outputDiv = document.currentScript.previousElementSibling;\n", | |
" if (outputDiv.id !== \"altair-viz-01354eb889064a43b7eca2182e6bb77f\") {\n", | |
" outputDiv = document.getElementById(\"altair-viz-01354eb889064a43b7eca2182e6bb77f\");\n", | |
" }\n", | |
" const paths = {\n", | |
" \"vega\": \"https://cdn.jsdelivr.net/npm//vega@5?noext\",\n", | |
" \"vega-lib\": \"https://cdn.jsdelivr.net/npm//vega-lib?noext\",\n", | |
" \"vega-lite\": \"https://cdn.jsdelivr.net/npm//vega-lite@4.8.1?noext\",\n", | |
" \"vega-embed\": \"https://cdn.jsdelivr.net/npm//vega-embed@6?noext\",\n", | |
" };\n", | |
"\n", | |
" function loadScript(lib) {\n", | |
" return new Promise(function(resolve, reject) {\n", | |
" var s = document.createElement('script');\n", | |
" s.src = paths[lib];\n", | |
" s.async = true;\n", | |
" s.onload = () => resolve(paths[lib]);\n", | |
" s.onerror = () => reject(`Error loading script: ${paths[lib]}`);\n", | |
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n", | |
" });\n", | |
" }\n", | |
"\n", | |
" function showError(err) {\n", | |
" outputDiv.innerHTML = `<div class=\"error\" style=\"color:red;\">${err}</div>`;\n", | |
" throw err;\n", | |
" }\n", | |
"\n", | |
" function displayChart(vegaEmbed) {\n", | |
" vegaEmbed(outputDiv, spec, embedOpt)\n", | |
" .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));\n", | |
" }\n", | |
"\n", | |
" if(typeof define === \"function\" && define.amd) {\n", | |
" requirejs.config({paths});\n", | |
" require([\"vega-embed\"], displayChart, err => showError(`Error loading script: ${err.message}`));\n", | |
" } else if (typeof vegaEmbed === \"function\") {\n", | |
" displayChart(vegaEmbed);\n", | |
" } else {\n", | |
" loadScript(\"vega\")\n", | |
" .then(() => loadScript(\"vega-lite\"))\n", | |
" .then(() => loadScript(\"vega-embed\"))\n", | |
" .catch(showError)\n", | |
" .then(() => displayChart(vegaEmbed));\n", | |
" }\n", | |
" })({\"config\": {\"view\": {\"continuousWidth\": 400, \"continuousHeight\": 300}}, \"hconcat\": [{\"data\": {\"name\": \"data-8eb66ff73e43f254e76750b1092a9d43\"}, \"mark\": \"boxplot\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"preload\"}, \"x\": {\"type\": \"ordinal\", \"field\": \"kube_version\", \"sort\": [\"7.0.1\", \"8.0.2\", \"9.0.1\", \"10.1.0\", \"11.0.0\", \"12.0.1\"]}, \"y\": {\"type\": \"quantitative\", \"field\": \"per_call\", \"scale\": {\"domain\": [0, 1]}, \"title\": \"seconds per call\"}}, \"title\": \"list_hub_pods (1 pod)\"}, {\"data\": {\"name\": \"data-788a13be3d7b618c1e4a9d777faeae7c\"}, \"mark\": \"boxplot\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"preload\"}, \"x\": {\"type\": \"ordinal\", \"field\": \"kube_version\", \"sort\": [\"7.0.1\", \"8.0.2\", \"9.0.1\", \"10.1.0\", \"11.0.0\", \"12.0.1\"]}, \"y\": {\"type\": \"quantitative\", \"field\": \"per_call\", \"scale\": {\"domain\": [0, 1]}, \"title\": \"seconds per call\"}}, \"title\": \"list_placeholder_pods (75 pods)\"}, {\"data\": {\"name\": \"data-2fdc7bbf4eb8a6eca8cad29d3d2f5581\"}, \"mark\": \"boxplot\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"preload\"}, \"x\": {\"type\": \"ordinal\", \"field\": \"kube_version\", \"sort\": [\"7.0.1\", \"8.0.2\", \"9.0.1\", \"10.1.0\", \"11.0.0\", \"12.0.1\"]}, \"y\": {\"type\": \"quantitative\", \"field\": \"per_call\", \"scale\": {}, \"title\": \"seconds per call\"}}, \"title\": \"list_user_pods (~619 pods)\"}], \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.8.1.json\", \"datasets\": {\"data-8eb66ff73e43f254e76750b1092a9d43\": [{\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.2038182844999987, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.2025866150000013, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.2052724519999991, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.3078311454999998, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.2040010979999991, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.2042007774999987, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.2047395309999977, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.2055446899999999, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.2058572480000009, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.2003611210000002, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.2211353010000003, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.1955112469999989, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.2001896089999988, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.2064587190000004, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.1966767494999999, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.2099729689999989, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.2040027874999985, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.1946399849999984, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.1832771039999983, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.1898032210000018, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.2056852345000024, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.2670698499999986, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.1720148560000005, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.1944806280000008, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.1794927810000004, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.206367771, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.2388671229999985, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.2551528665000013, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.2694770894999969, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.1955356885000014, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.1949553215000001, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.2015542050000007, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.2151440635000021, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.2309529085000008, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.2262131200000006, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.2266371044999999, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.1864434104999972, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.2014771195000015, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.195516787999999, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.2025480034999986, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.1988409295000011, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.1976951669999991, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.1802443860000018, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.2052191214999972, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.2143042335000018, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.2903187384999981, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.1833854659999971, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.1932628584999989, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.2041806249999993, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.2142310895000001, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.2113351094999984, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.2345999449999993, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.1863002349999973, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.2166232920000013, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.1853818489999987, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.1981034835000024, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.2044675305000005, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.2460745334999998, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.2131592189999978, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.1868187049999967, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.1981680355000001, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.1900763665000013, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.1995402239999997, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.2501185039999996, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.1974680989999981, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.1993808779999994, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.1825518539999997, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.1960726014999991, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.1882215115000001, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.2035696924999968, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.1958070125000048, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.1976537904999986, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.2079082314999993, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.2587011789999991, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.2048131909999995, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.1963385515000055, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": true, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.260336428500004, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.2058970574999961, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.2045729829999985, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.2561360060000055, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.2042208664999947, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.1889860284999969, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.1872986945000008, \"pods\": 1}, {\"fname\": \"list_hub_pods\", \"preload\": false, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.1876270974999982, \"pods\": 1}], \"data-788a13be3d7b618c1e4a9d777faeae7c\": [{\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.3006586505000008, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.2742045490000002, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.449851047500001, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.3812616755000029, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.3096765055000006, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.6677113319999997, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.2857590839999986, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.2140795874999987, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.291737319500001, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.2191325599999984, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.1927095694999998, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.182264856499998, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.2135839690000018, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.2170765760000002, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.3741333789999999, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.3144640315000018, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.3090009430000009, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.3634348514999992, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.3091736119999986, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.2950449070000012, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.2887481725, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.2037748659999998, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.2107178500000017, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.2531132754999987, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.2206017654999996, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.2110241165000026, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.1906692995000014, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.18965004, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.4039361550000002, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.3018978109999999, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.3174388195000013, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.3197626475000028, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.3554860249999976, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.2860763424999994, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.3836781660000028, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.3390655639999984, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.2193349540000007, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.2049083759999987, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.2203888169999999, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.1959388544999996, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.1970497070000014, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.2073494129999993, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.3148544649999998, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.3354153879999977, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.2743466075, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.2888217300000022, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.3700242200000012, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.3665124075000001, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.3743973005000001, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.2000806904999983, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.2060100194999989, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.2311735679999991, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.2158789084999988, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.2831268694999984, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.1951366410000012, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.2085949135000007, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.341356461500002, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.3014716015000012, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.4016196934999989, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.4658679649999975, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.4334296604999998, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.4332465610000007, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.3422385964999996, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.2176354429999989, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.2069071364999999, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.3055963900000016, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.2019634450000005, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.210653388499999, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.2171945049999983, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.2403865164999992, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.4989871960000016, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.4333112595000017, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.4142677379999995, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.4151980119999976, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.4616726369999995, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.3407637044999987, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": true, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.3735264729999983, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.2075982544999988, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.2026971570000029, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.2046601695000021, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.3073322119999986, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.1953501254999992, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.1908477515000015, \"pods\": 75}, {\"fname\": \"list_placeholder_pods\", \"preload\": false, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.2277404030000056, \"pods\": 75}], \"data-2fdc7bbf4eb8a6eca8cad29d3d2f5581\": [{\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 2.9281939895, \"pods\": 609}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 2.315616512000001, \"pods\": 612}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 2.0714346074999987, \"pods\": 613}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 2.0372694179999997, \"pods\": 613}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 1.9461733540000008, \"pods\": 603}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 2.356966524999999, \"pods\": 602}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 2.255201481500002, \"pods\": 596}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.5660382505000001, \"pods\": 598}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.5181754585, \"pods\": 599}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.5563345820000016, \"pods\": 600}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.6250853525000011, \"pods\": 600}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.5234939044999969, \"pods\": 601}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.5567624169999981, \"pods\": 604}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"7.0.1\", \"number\": 2, \"per_call\": 0.5525619589999984, \"pods\": 604}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 1.7679836664999995, \"pods\": 617}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 1.8249567505, \"pods\": 616}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 1.9689307805, \"pods\": 615}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 1.6847051664999997, \"pods\": 616}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 1.7637256700000012, \"pods\": 617}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 1.8290379569999988, \"pods\": 619}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 1.810339137, \"pods\": 622}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.583657263000001, \"pods\": 621}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.5963919305000012, \"pods\": 624}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.7379159180000023, \"pods\": 624}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.7517552555000009, \"pods\": 624}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.7281056554999985, \"pods\": 625}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.563855221499999, \"pods\": 626}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"8.0.2\", \"number\": 2, \"per_call\": 0.6548937529999996, \"pods\": 627}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 1.9886384034999995, \"pods\": 629}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 2.01649766, \"pods\": 627}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 2.4013781729999994, \"pods\": 629}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 2.523709780999999, \"pods\": 629}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 2.422242928500001, \"pods\": 629}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 2.1655502534999997, \"pods\": 629}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 2.190657473, \"pods\": 629}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.5614010354999976, \"pods\": 627}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.668990249500002, \"pods\": 627}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.5359714790000005, \"pods\": 626}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.541440893499999, \"pods\": 626}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.717704239499998, \"pods\": 626}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.5676269330000032, \"pods\": 628}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"9.0.1\", \"number\": 2, \"per_call\": 0.5867882794999986, \"pods\": 628}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 4.138999248499999, \"pods\": 629}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 2.365987376, \"pods\": 630}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 1.8992802824999997, \"pods\": 631}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 2.5617476565, \"pods\": 629}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 2.5007337300000003, \"pods\": 626}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 1.795952830500001, \"pods\": 626}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 2.168823310999997, \"pods\": 623}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.5738492915000002, \"pods\": 626}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.4988702775, \"pods\": 626}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.5414176055000013, \"pods\": 626}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.537905913000003, \"pods\": 626}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.5788137410000012, \"pods\": 626}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.6017006824999989, \"pods\": 627}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"10.1.0\", \"number\": 2, \"per_call\": 0.5290839354999974, \"pods\": 625}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 2.4072391185, \"pods\": 623}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 2.6388823345, \"pods\": 624}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 2.0410394215000007, \"pods\": 622}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 1.7569386225, \"pods\": 620}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 1.9425787440000004, \"pods\": 620}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 2.477730859, \"pods\": 621}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 1.882728857, \"pods\": 618}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.5066222350000018, \"pods\": 616}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.5843361945000005, \"pods\": 616}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.5914965589999994, \"pods\": 616}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.6439111445000023, \"pods\": 617}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.6576294300000001, \"pods\": 619}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.5270436614999987, \"pods\": 620}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"11.0.0\", \"number\": 2, \"per_call\": 0.5026139709999988, \"pods\": 620}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 6.636533157000001, \"pods\": 615}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 5.683028385500002, \"pods\": 614}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 4.811378537500001, \"pods\": 616}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 6.214444411500001, \"pods\": 616}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 6.217237324000003, \"pods\": 612}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 4.847866332499997, \"pods\": 615}, {\"fname\": \"list_user_pods\", \"preload\": true, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 6.348836381000005, \"pods\": 618}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.5706708439999986, \"pods\": 619}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.5194660135000007, \"pods\": 618}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.6051191725000038, \"pods\": 618}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.589876236000002, \"pods\": 618}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.6855215844999947, \"pods\": 617}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.6092106615000006, \"pods\": 617}, {\"fname\": \"list_user_pods\", \"preload\": false, \"kube_version\": \"12.0.1\", \"number\": 2, \"per_call\": 0.5497697935000048, \"pods\": 617}]}}, {\"mode\": \"vega-lite\"});\n", | |
"</script>" | |
], | |
"text/plain": [ | |
"alt.HConcatChart(...)" | |
] | |
}, | |
"execution_count": 3, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"charts = []\n", | |
"# sort by version numbers\n", | |
"versions = sorted(df.kube_version.unique(), key=lambda vs: [int(i) for i in vs.split(\".\")])\n", | |
"\n", | |
"# create a chart for each metric\n", | |
"# box plot for each combination of kube_version and preload=true|false\n", | |
"for fname, group in df.groupby(\"fname\").groups.items():\n", | |
" group_df = df.filter(group, axis=0)\n", | |
" n_pods = int(group_df.pods.mean())\n", | |
" approx = len(group_df.pods.unique()) > 1\n", | |
" title = f\"{fname} ({'~' * approx}{n_pods} pod{'s' * (n_pods > 1)})\"\n", | |
" if group_df.per_call.max() < 1:\n", | |
" scale = alt.Scale(domain=[0, 1])\n", | |
" else:\n", | |
" scale = alt.Scale()\n", | |
" charts.append(\n", | |
" alt.Chart(df.filter(group, axis=0), title=title)\n", | |
" .mark_boxplot()\n", | |
" .encode(\n", | |
" color=\"preload\",\n", | |
" x=alt.X(\"kube_version:O\", sort=versions),\n", | |
" y=alt.Y(\"per_call\", scale=scale, title=\"seconds per call\"),\n", | |
" )\n", | |
" )\n", | |
"alt.hconcat(*charts) # .resolve_scale(y='shared')" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.8.8" | |
}, | |
"widgets": { | |
"application/vnd.jupyter.widget-state+json": { | |
"state": {}, | |
"version_major": 2, | |
"version_minor": 0 | |
} | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 5 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment