Skip to content

Instantly share code, notes, and snippets.

@minrk
Last active July 23, 2020 22:49
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save minrk/55116017ef202843de01906c18541471 to your computer and use it in GitHub Desktop.
Save minrk/55116017ef202843de01906c18541471 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {},
"cell_type": "markdown",
"source": "# stats on `kubectl top pod`\n\nNeed to reimplement part of `kubectl top pod` because the Python client\ndoesn't support the metrics endpoint.\n\nExploring current resource metrics of mybinder.org,\nand drawing some resource planning conclusions based on the results."
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Set kubernetes context and namespace"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "context = 'prod'\nnamespace = 'prod'\n%matplotlib inline",
"execution_count": 1,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Connect to kubernetes"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "import kubernetes.config\nimport kubernetes.client\nkubernetes.config.load_kube_config(context=context)\nkube = kubernetes.client.CoreV1Api()",
"execution_count": 2,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Get the current pods as a dict:"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "pods = kube.list_namespaced_pod(\n namespace,\n label_selector=\"app=jupyterhub,component=singleuser-server\").items\n# make it a dict by name\npods = {pod.metadata.name: pod for pod in pods}",
"execution_count": 3,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Make the API request to get pod metrics"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "import json\napi_client = kubernetes.client.ApiClient()\n# kube client doesn't support metrics yet\n# from https://github.com/kubernetes-client/python/issues/528\nresp, status, headers = api_client.call_api(\n f'/apis/metrics.k8s.io/v1beta1/namespaces/{namespace}/pods',\n 'GET',\n auth_settings=['BearerToken'],\n response_type='json',\n _preload_content=False)\nmetrics = json.loads(resp.read().decode('utf8'))",
"execution_count": 4,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Parse the metrics into a pandas data frame"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "import re\n\nimport pandas as pd\n\n\ndef parse_memory(mem_s):\n \"\"\"returns memory in MB\"\"\"\n num_s, suffix = re.match(r'(\\d+)([^\\d]+)', mem_s).groups()\n num = int(num_s)\n if suffix == 'Ki':\n num = int(num * 1e-3)\n elif suffix == 'Mi':\n pass\n elif suffix == 'Gi':\n num = int(num * 1e3)\n else:\n raise ValueError(\"unsupported memory suffix: %r\" % suffix)\n return num\n\ndef parse_cpu(cpu_s):\n \"\"\"Returns CPU as a float\"\"\"\n num_s, suffix = re.match(r'(\\d+)([^\\d]*)', cpu_s).groups()\n num = int(num_s)\n if suffix == 'm':\n num = num * 1e-3\n elif suffix:\n raise ValueError(\"unsupported cpu suffix: %r\" % suffix)\n return num\n\ndata = []\nfor metric in metrics['items']:\n pod_name = metric['metadata']['name']\n if pod_name not in pods:\n continue\n pod = pods[pod_name]\n\n\n mem = 0\n cpu = 0\n for container in metric['containers']:\n mem += parse_memory(container['usage']['memory'])\n cpu += parse_cpu(container['usage']['cpu'])\n image = pod_name.split('-', 1)[1].rsplit('-', 1)[0].replace('-2d', '-')\n data.append([\n pod_name, image, mem, cpu\n ])\n\ndf = pd.DataFrame(data, columns=['pod', 'image', 'mem', 'cpu'])\ndf = df.sort_values('mem')\ndf",
"execution_count": 5,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 5,
"data": {
"text/plain": " pod \\\n50 jupyter-binder-2dexamples-2dr-2daezilgbm \n55 jupyter-rceatpitt-2ddata-2d-2dics-2dsummer-2d2... \n157 jupyter-quantstack-2dxeus-2dcling-2dis1vzteh \n192 jupyter-binder-2dexamples-2dr-2dczjbj4eh \n144 jupyter-gap-2dsystem-2dgap-2ddocker-2dbinder-2... \n216 jupyter-jupyterlab-2djupyterlab-2ddemo-2d6ltpksmq \n161 jupyter-bokeh-2dbokeh-2dnotebooks-2dlofg2p6t \n35 jupyter-tobyhodges-2ditpp-2dmo4vzylv \n65 jupyter-ipython-2dipython-2din-2ddepth-2d6mmep52k \n147 jupyter-ipython-2dipython-2din-2ddepth-2dqi9sbwrs \n24 jupyter-bokeh-2dbokeh-2dnotebooks-2dvscholq7 \n148 jupyter-bokeh-2dbokeh-2dnotebooks-2dc3lr5w04 \n84 jupyter-bokeh-2dbokeh-2dnotebooks-2d1xctxtux \n173 jupyter-jupyterlab-2djupyterlab-2ddemo-2detwer7c0 \n226 jupyter-jupyterlab-2djupyterlab-2ddemo-2dx2vstrdq \n101 jupyter-ipython-2dipython-2din-2ddepth-2dh8yooduj \n10 jupyter-jupyterlab-2djupyterlab-2ddemo-2df54tenot \n92 jupyter-ipython-2dipython-2din-2ddepth-2dh13j4kew \n94 jupyter-quantstack-2dxeus-2dcling-2dfo112hyt \n182 jupyter-jupyterlab-2djupyterlab-2ddemo-2dxvjwsw4t \n224 jupyter-jupyterlab-2djupyterlab-2ddemo-2dvdrq9wyi \n49 jupyter-jupyterlab-2djupyterlab-2ddemo-2d7rxvwopd \n63 jupyter-rceatpitt-2ddata-2d-2dics-2dsummer-2d2... \n82 jupyter-jupyterlab-2djupyterlab-2ddemo-2dnwks54yk \n118 jupyter-jupyterlab-2djupyterlab-2ddemo-2dm9h2bfqr \n96 jupyter-jupyterlab-2djupyterlab-2ddemo-2dpxl6rf47 \n58 jupyter-jupyterlab-2djupyterlab-2ddemo-2dg4cbibz4 \n88 jupyter-jupyterlab-2djupyterlab-2ddemo-2ddyg9a6se \n62 jupyter-jupyterlab-2djupyterlab-2ddemo-2dxat60biv \n89 jupyter-jupyterlab-2djupyterlab-2ddemo-2dwouzbm9f \n.. ... \n42 jupyter-quantstack-2dxeus-2dcling-2dcuwn5h8y \n172 jupyter-jupyterlab-2djupyterlab-2ddemo-2dwtq9skqe \n8 jupyter-marvinf95-2dvtna-5ffrontend-2dalwjmk3p \n77 jupyter-marvinf95-2dvtna-5ffrontend-2dawr1isub \n47 jupyter-ipython-2dipython-2din-2ddepth-2d9xpax4cw \n179 jupyter-jupyterlab-2djupyterlab-2ddemo-2dbnkqj4uz \n233 jupyter-ipython-2dipython-2din-2ddepth-2djeh0uin7 \n156 jupyter-jupyterlab-2djupyterlab-2ddemo-2dp4z2wsol \n83 jupyter-geoscixyz-2dem-2dapps-2d4122t7cz \n139 jupyter-jupyterlab-2djupyterlab-2ddemo-2dgipsebhd \n59 jupyter-rasahq-2drasa-5fcore-2dh4luhbhi \n136 jupyter-jupyterlab-2djupyterlab-2ddemo-2doydlrvqv \n18 jupyter-kelvin1020-2dorbit-2dj4j8hn62 \n221 jupyter-ines-2dspacy-2dio-2dbinder-2duuf1m6gc \n199 jupyter-ines-2dspacy-2dio-2dbinder-2duhl1o33g \n152 jupyter-ines-2dspacy-2dio-2dbinder-2d0hgzwktu \n17 jupyter-geoscixyz-2dem-2dapps-2dcjcu5swq \n115 jupyter-ines-2dspacy-2dio-2dbinder-2drtf2t9zx \n31 jupyter-ines-2dspacy-2dio-2dbinder-2dt43ge31h \n196 jupyter-ipython-2dipython-2din-2ddepth-2dhus1b7hn \n87 jupyter-ines-2dspacy-2dio-2dbinder-2diz93tzma \n186 jupyter-ipython-2dipython-2din-2ddepth-2dz34g2z1i \n129 jupyter-ines-2dspacy-2dio-2dbinder-2d848kbxcs \n33 jupyter-jupyterlab-2djupyterlab-2ddemo-2dzz7lx2nk \n29 jupyter-ines-2dspacy-2dio-2dbinder-2dcs5dufd0 \n22 jupyter-spencerpark-2dijava-2dbinder-2dn7eoo4yg \n60 jupyter-jupyterlab-2djupyterlab-2ddemo-2dsqcso5wh \n109 jupyter-jupyterlab-2djupyterlab-2ddemo-2d59ayfypm \n200 jupyter-ipython-2dipython-2din-2ddepth-2dkpa8bja2 \n51 jupyter-ipython-2dipython-2din-2ddepth-2divz6bgqb \n\n image mem cpu \n50 binder-examples-r 47 0.000 \n55 rceatpitt-data--ics-summer-2018 47 0.000 \n157 quantstack-xeus-cling 47 0.000 \n192 binder-examples-r 47 0.000 \n144 gap-system-gap-docker-binder 48 0.000 \n216 jupyterlab-jupyterlab-demo 48 0.000 \n161 bokeh-bokeh-notebooks 48 0.000 \n35 tobyhodges-itpp 49 0.000 \n65 ipython-ipython-in-depth 49 0.000 \n147 ipython-ipython-in-depth 49 0.000 \n24 bokeh-bokeh-notebooks 49 0.000 \n148 bokeh-bokeh-notebooks 49 0.000 \n84 bokeh-bokeh-notebooks 49 0.000 \n173 jupyterlab-jupyterlab-demo 49 0.000 \n226 jupyterlab-jupyterlab-demo 49 0.000 \n101 ipython-ipython-in-depth 49 0.000 \n10 jupyterlab-jupyterlab-demo 49 0.000 \n92 ipython-ipython-in-depth 49 0.000 \n94 quantstack-xeus-cling 49 0.000 \n182 jupyterlab-jupyterlab-demo 49 0.000 \n224 jupyterlab-jupyterlab-demo 50 0.000 \n49 jupyterlab-jupyterlab-demo 50 0.000 \n63 rceatpitt-data--ics-summer-2018 50 0.000 \n82 jupyterlab-jupyterlab-demo 50 0.000 \n118 jupyterlab-jupyterlab-demo 50 0.000 \n96 jupyterlab-jupyterlab-demo 50 0.001 \n58 jupyterlab-jupyterlab-demo 50 0.000 \n88 jupyterlab-jupyterlab-demo 50 0.000 \n62 jupyterlab-jupyterlab-demo 50 0.000 \n89 jupyterlab-jupyterlab-demo 50 0.000 \n.. ... ... ... \n42 quantstack-xeus-cling 164 0.000 \n172 jupyterlab-jupyterlab-demo 167 0.005 \n8 marvinf95-vtna-5ffrontend 170 0.000 \n77 marvinf95-vtna-5ffrontend 170 0.000 \n47 ipython-ipython-in-depth 179 0.986 \n179 jupyterlab-jupyterlab-demo 183 0.007 \n233 ipython-ipython-in-depth 189 0.020 \n156 jupyterlab-jupyterlab-demo 202 0.002 \n83 geoscixyz-em-apps 210 0.000 \n139 jupyterlab-jupyterlab-demo 217 0.002 \n59 rasahq-rasa-5fcore 227 0.038 \n136 jupyterlab-jupyterlab-demo 239 0.020 \n18 kelvin1020-orbit 256 0.000 \n221 ines-spacy-io-binder 259 0.000 \n199 ines-spacy-io-binder 260 0.000 \n152 ines-spacy-io-binder 260 0.096 \n17 geoscixyz-em-apps 261 0.000 \n115 ines-spacy-io-binder 262 0.000 \n31 ines-spacy-io-binder 263 0.000 \n196 ipython-ipython-in-depth 264 0.001 \n87 ines-spacy-io-binder 264 0.000 \n186 ipython-ipython-in-depth 300 0.006 \n129 ines-spacy-io-binder 340 0.000 \n33 jupyterlab-jupyterlab-demo 385 0.002 \n29 ines-spacy-io-binder 487 0.000 \n22 spencerpark-ijava-binder 559 0.008 \n60 jupyterlab-jupyterlab-demo 583 0.000 \n109 jupyterlab-jupyterlab-demo 627 0.001 \n200 ipython-ipython-in-depth 969 1.006 \n51 ipython-ipython-in-depth 978 0.060 \n\n[239 rows x 4 columns]",
"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>pod</th>\n <th>image</th>\n <th>mem</th>\n <th>cpu</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>50</th>\n <td>jupyter-binder-2dexamples-2dr-2daezilgbm</td>\n <td>binder-examples-r</td>\n <td>47</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>55</th>\n <td>jupyter-rceatpitt-2ddata-2d-2dics-2dsummer-2d2...</td>\n <td>rceatpitt-data--ics-summer-2018</td>\n <td>47</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>157</th>\n <td>jupyter-quantstack-2dxeus-2dcling-2dis1vzteh</td>\n <td>quantstack-xeus-cling</td>\n <td>47</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>192</th>\n <td>jupyter-binder-2dexamples-2dr-2dczjbj4eh</td>\n <td>binder-examples-r</td>\n <td>47</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>144</th>\n <td>jupyter-gap-2dsystem-2dgap-2ddocker-2dbinder-2...</td>\n <td>gap-system-gap-docker-binder</td>\n <td>48</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>216</th>\n <td>jupyter-jupyterlab-2djupyterlab-2ddemo-2d6ltpksmq</td>\n <td>jupyterlab-jupyterlab-demo</td>\n <td>48</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>161</th>\n <td>jupyter-bokeh-2dbokeh-2dnotebooks-2dlofg2p6t</td>\n <td>bokeh-bokeh-notebooks</td>\n <td>48</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>35</th>\n <td>jupyter-tobyhodges-2ditpp-2dmo4vzylv</td>\n <td>tobyhodges-itpp</td>\n <td>49</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>65</th>\n <td>jupyter-ipython-2dipython-2din-2ddepth-2d6mmep52k</td>\n <td>ipython-ipython-in-depth</td>\n <td>49</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>147</th>\n <td>jupyter-ipython-2dipython-2din-2ddepth-2dqi9sbwrs</td>\n <td>ipython-ipython-in-depth</td>\n <td>49</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>24</th>\n <td>jupyter-bokeh-2dbokeh-2dnotebooks-2dvscholq7</td>\n <td>bokeh-bokeh-notebooks</td>\n <td>49</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>148</th>\n <td>jupyter-bokeh-2dbokeh-2dnotebooks-2dc3lr5w04</td>\n <td>bokeh-bokeh-notebooks</td>\n <td>49</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>84</th>\n <td>jupyter-bokeh-2dbokeh-2dnotebooks-2d1xctxtux</td>\n <td>bokeh-bokeh-notebooks</td>\n <td>49</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>173</th>\n <td>jupyter-jupyterlab-2djupyterlab-2ddemo-2detwer7c0</td>\n <td>jupyterlab-jupyterlab-demo</td>\n <td>49</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>226</th>\n <td>jupyter-jupyterlab-2djupyterlab-2ddemo-2dx2vstrdq</td>\n <td>jupyterlab-jupyterlab-demo</td>\n <td>49</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>101</th>\n <td>jupyter-ipython-2dipython-2din-2ddepth-2dh8yooduj</td>\n <td>ipython-ipython-in-depth</td>\n <td>49</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>10</th>\n <td>jupyter-jupyterlab-2djupyterlab-2ddemo-2df54tenot</td>\n <td>jupyterlab-jupyterlab-demo</td>\n <td>49</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>92</th>\n <td>jupyter-ipython-2dipython-2din-2ddepth-2dh13j4kew</td>\n <td>ipython-ipython-in-depth</td>\n <td>49</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>94</th>\n <td>jupyter-quantstack-2dxeus-2dcling-2dfo112hyt</td>\n <td>quantstack-xeus-cling</td>\n <td>49</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>182</th>\n <td>jupyter-jupyterlab-2djupyterlab-2ddemo-2dxvjwsw4t</td>\n <td>jupyterlab-jupyterlab-demo</td>\n <td>49</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>224</th>\n <td>jupyter-jupyterlab-2djupyterlab-2ddemo-2dvdrq9wyi</td>\n <td>jupyterlab-jupyterlab-demo</td>\n <td>50</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>49</th>\n <td>jupyter-jupyterlab-2djupyterlab-2ddemo-2d7rxvwopd</td>\n <td>jupyterlab-jupyterlab-demo</td>\n <td>50</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>63</th>\n <td>jupyter-rceatpitt-2ddata-2d-2dics-2dsummer-2d2...</td>\n <td>rceatpitt-data--ics-summer-2018</td>\n <td>50</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>82</th>\n <td>jupyter-jupyterlab-2djupyterlab-2ddemo-2dnwks54yk</td>\n <td>jupyterlab-jupyterlab-demo</td>\n <td>50</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>118</th>\n <td>jupyter-jupyterlab-2djupyterlab-2ddemo-2dm9h2bfqr</td>\n <td>jupyterlab-jupyterlab-demo</td>\n <td>50</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>96</th>\n <td>jupyter-jupyterlab-2djupyterlab-2ddemo-2dpxl6rf47</td>\n <td>jupyterlab-jupyterlab-demo</td>\n <td>50</td>\n <td>0.001</td>\n </tr>\n <tr>\n <th>58</th>\n <td>jupyter-jupyterlab-2djupyterlab-2ddemo-2dg4cbibz4</td>\n <td>jupyterlab-jupyterlab-demo</td>\n <td>50</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>88</th>\n <td>jupyter-jupyterlab-2djupyterlab-2ddemo-2ddyg9a6se</td>\n <td>jupyterlab-jupyterlab-demo</td>\n <td>50</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>62</th>\n <td>jupyter-jupyterlab-2djupyterlab-2ddemo-2dxat60biv</td>\n <td>jupyterlab-jupyterlab-demo</td>\n <td>50</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>89</th>\n <td>jupyter-jupyterlab-2djupyterlab-2ddemo-2dwouzbm9f</td>\n <td>jupyterlab-jupyterlab-demo</td>\n <td>50</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>42</th>\n <td>jupyter-quantstack-2dxeus-2dcling-2dcuwn5h8y</td>\n <td>quantstack-xeus-cling</td>\n <td>164</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>172</th>\n <td>jupyter-jupyterlab-2djupyterlab-2ddemo-2dwtq9skqe</td>\n <td>jupyterlab-jupyterlab-demo</td>\n <td>167</td>\n <td>0.005</td>\n </tr>\n <tr>\n <th>8</th>\n <td>jupyter-marvinf95-2dvtna-5ffrontend-2dalwjmk3p</td>\n <td>marvinf95-vtna-5ffrontend</td>\n <td>170</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>77</th>\n <td>jupyter-marvinf95-2dvtna-5ffrontend-2dawr1isub</td>\n <td>marvinf95-vtna-5ffrontend</td>\n <td>170</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>47</th>\n <td>jupyter-ipython-2dipython-2din-2ddepth-2d9xpax4cw</td>\n <td>ipython-ipython-in-depth</td>\n <td>179</td>\n <td>0.986</td>\n </tr>\n <tr>\n <th>179</th>\n <td>jupyter-jupyterlab-2djupyterlab-2ddemo-2dbnkqj4uz</td>\n <td>jupyterlab-jupyterlab-demo</td>\n <td>183</td>\n <td>0.007</td>\n </tr>\n <tr>\n <th>233</th>\n <td>jupyter-ipython-2dipython-2din-2ddepth-2djeh0uin7</td>\n <td>ipython-ipython-in-depth</td>\n <td>189</td>\n <td>0.020</td>\n </tr>\n <tr>\n <th>156</th>\n <td>jupyter-jupyterlab-2djupyterlab-2ddemo-2dp4z2wsol</td>\n <td>jupyterlab-jupyterlab-demo</td>\n <td>202</td>\n <td>0.002</td>\n </tr>\n <tr>\n <th>83</th>\n <td>jupyter-geoscixyz-2dem-2dapps-2d4122t7cz</td>\n <td>geoscixyz-em-apps</td>\n <td>210</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>139</th>\n <td>jupyter-jupyterlab-2djupyterlab-2ddemo-2dgipsebhd</td>\n <td>jupyterlab-jupyterlab-demo</td>\n <td>217</td>\n <td>0.002</td>\n </tr>\n <tr>\n <th>59</th>\n <td>jupyter-rasahq-2drasa-5fcore-2dh4luhbhi</td>\n <td>rasahq-rasa-5fcore</td>\n <td>227</td>\n <td>0.038</td>\n </tr>\n <tr>\n <th>136</th>\n <td>jupyter-jupyterlab-2djupyterlab-2ddemo-2doydlrvqv</td>\n <td>jupyterlab-jupyterlab-demo</td>\n <td>239</td>\n <td>0.020</td>\n </tr>\n <tr>\n <th>18</th>\n <td>jupyter-kelvin1020-2dorbit-2dj4j8hn62</td>\n <td>kelvin1020-orbit</td>\n <td>256</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>221</th>\n <td>jupyter-ines-2dspacy-2dio-2dbinder-2duuf1m6gc</td>\n <td>ines-spacy-io-binder</td>\n <td>259</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>199</th>\n <td>jupyter-ines-2dspacy-2dio-2dbinder-2duhl1o33g</td>\n <td>ines-spacy-io-binder</td>\n <td>260</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>152</th>\n <td>jupyter-ines-2dspacy-2dio-2dbinder-2d0hgzwktu</td>\n <td>ines-spacy-io-binder</td>\n <td>260</td>\n <td>0.096</td>\n </tr>\n <tr>\n <th>17</th>\n <td>jupyter-geoscixyz-2dem-2dapps-2dcjcu5swq</td>\n <td>geoscixyz-em-apps</td>\n <td>261</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>115</th>\n <td>jupyter-ines-2dspacy-2dio-2dbinder-2drtf2t9zx</td>\n <td>ines-spacy-io-binder</td>\n <td>262</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>31</th>\n <td>jupyter-ines-2dspacy-2dio-2dbinder-2dt43ge31h</td>\n <td>ines-spacy-io-binder</td>\n <td>263</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>196</th>\n <td>jupyter-ipython-2dipython-2din-2ddepth-2dhus1b7hn</td>\n <td>ipython-ipython-in-depth</td>\n <td>264</td>\n <td>0.001</td>\n </tr>\n <tr>\n <th>87</th>\n <td>jupyter-ines-2dspacy-2dio-2dbinder-2diz93tzma</td>\n <td>ines-spacy-io-binder</td>\n <td>264</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>186</th>\n <td>jupyter-ipython-2dipython-2din-2ddepth-2dz34g2z1i</td>\n <td>ipython-ipython-in-depth</td>\n <td>300</td>\n <td>0.006</td>\n </tr>\n <tr>\n <th>129</th>\n <td>jupyter-ines-2dspacy-2dio-2dbinder-2d848kbxcs</td>\n <td>ines-spacy-io-binder</td>\n <td>340</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>33</th>\n <td>jupyter-jupyterlab-2djupyterlab-2ddemo-2dzz7lx2nk</td>\n <td>jupyterlab-jupyterlab-demo</td>\n <td>385</td>\n <td>0.002</td>\n </tr>\n <tr>\n <th>29</th>\n <td>jupyter-ines-2dspacy-2dio-2dbinder-2dcs5dufd0</td>\n <td>ines-spacy-io-binder</td>\n <td>487</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>22</th>\n <td>jupyter-spencerpark-2dijava-2dbinder-2dn7eoo4yg</td>\n <td>spencerpark-ijava-binder</td>\n <td>559</td>\n <td>0.008</td>\n </tr>\n <tr>\n <th>60</th>\n <td>jupyter-jupyterlab-2djupyterlab-2ddemo-2dsqcso5wh</td>\n <td>jupyterlab-jupyterlab-demo</td>\n <td>583</td>\n <td>0.000</td>\n </tr>\n <tr>\n <th>109</th>\n <td>jupyter-jupyterlab-2djupyterlab-2ddemo-2d59ayfypm</td>\n <td>jupyterlab-jupyterlab-demo</td>\n <td>627</td>\n <td>0.001</td>\n </tr>\n <tr>\n <th>200</th>\n <td>jupyter-ipython-2dipython-2din-2ddepth-2dkpa8bja2</td>\n <td>ipython-ipython-in-depth</td>\n <td>969</td>\n <td>1.006</td>\n </tr>\n <tr>\n <th>51</th>\n <td>jupyter-ipython-2dipython-2din-2ddepth-2divz6bgqb</td>\n <td>ipython-ipython-in-depth</td>\n <td>978</td>\n <td>0.060</td>\n </tr>\n </tbody>\n</table>\n<p>239 rows × 4 columns</p>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Memory\n\nPlot the pod memory distribution, both as a histogram and cumulative density function,\nso that we can see where the most pods are,\nand what fraction of pods would fit under a given limit."
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "nbins = 100\nax = df.mem.hist(bins=nbins)\n\ncounts = pd.cut(df.mem, nbins).value_counts().sort_index()\nleft = counts.index.categories.left\n\ncolor = next(ax._get_lines.prop_cycler)['color']\nax_right = ax.twinx()\nax.set_xlabel(\"pod memory (MB)\")\nax.set_ylabel(\"pods\")\nax.set_xlim(0, None)\n\nax.set_title(\"Memory distribution\")\nax_right.set_ylabel(\"cumulative pod fraction\")\nax_right.plot(left, np.cumsum(counts) / len(df), c=color, label=\"cumulative\")\nax_right.grid(False)\n",
"execution_count": 6,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 720x444.984 with 2 Axes>",
"image/png": "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\n"
},
"metadata": {
"image/png": {
"width": 643,
"height": 401
}
}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "for threshold in [1000, 800, 512, 256]:\n print(f\"users over {threshold} MB: {(df['mem'] > threshold).sum()}\")\n\nprint(f\"users under 100MB: {(df['mem'] <= 100).sum()}\")\n",
"execution_count": 7,
"outputs": [
{
"output_type": "stream",
"text": "users over 1000 MB: 0\nusers over 800 MB: 2\nusers over 512 MB: 5\nusers over 256 MB: 17\nusers under 100MB: 171\n",
"name": "stdout"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Same data again as quantiles. This shows directly what limit would be required to fit a given fraction of pods."
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "from IPython.display import display\n\n\nmem_quant = df.mem.quantile([0.5, 0.75, 0.9, 0.95, 0.98, 0.99, 1])\ndisplay(mem_quant)\nmem_quant.plot(kind='bar')\nprint(f\"90% of pods use less than {int(mem_quant[0.9])}MB\")\nprint(f\"Only 5% of pods would be affected if the limit were {int(mem_quant[0.95])}MB\")",
"execution_count": 8,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "0.50 87.00\n0.75 113.00\n0.90 184.20\n0.95 262.10\n0.98 504.28\n0.99 610.28\n1.00 978.00\nName: mem, dtype: float64"
},
"metadata": {}
},
{
"output_type": "stream",
"text": "90% of pods use less than 184MB\nOnly 5% of pods would be affected if the limit were 262MB\n",
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 720x444.984 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {
"image/png": {
"width": 600,
"height": 375
}
}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## CPU\n\nSimilar plots again for CPU show that ~all pods are idle."
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "ax = df.cpu.hist(bins=50)\nax.set_title(\"CPU\")\nax.set_xlabel(\"pod CPU load\")\nax.set_ylabel(\"# pods\")\nax.set_xlim(0, None);",
"execution_count": 9,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 720x444.984 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {
"image/png": {
"width": 612,
"height": 401
}
}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "cpu_quant = df.cpu.quantile([0.5, 0.75, 0.9, 0.95, 0.98, 0.99, 1])\ndisplay(cpu_quant)\nprint(f\"only {(df.cpu > 0.1).sum()}/{len(df)} pods are using more than 10% CPU\")\ncpu_quant.plot(kind='bar')",
"execution_count": 10,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "0.50 0.00000\n0.75 0.00150\n0.90 0.00420\n0.95 0.02000\n0.98 0.06864\n0.99 0.96884\n1.00 1.00600\nName: cpu, dtype: float64"
},
"metadata": {}
},
{
"output_type": "stream",
"text": "only 4/239 pods are using more than 10% CPU\n",
"name": "stdout"
},
{
"output_type": "execute_result",
"execution_count": 10,
"data": {
"text/plain": "<matplotlib.axes._subplots.AxesSubplot at 0x10b982da0>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 720x444.984 with 1 Axes>",
"image/png": "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fl/Ra629LsnPJfnYoviUJOm9fzbzr+RdNHBGAAAAAEY0NEA9keTFJGdOub5w/rEp109I8p1JvjLl+leSfO+SpwMAAABgdIMCVO/9lSSfT3LulI+ck+TR3vtTU67vSfKtzP8veftySqZ/wTkAAAAAq8DQHVBJclOSc1prb198srW2Mcm7JtcXzm1orS18L1R67y8m+VSSK1prG15z/08k+ZEkvz+DGQEAAAAYydAvIU/vfVtrbVuSba21a5PsTnJqkk1JdiW5MUlaa+sz/yreM0lOW/SIX57c82Br7fokjyc5K8l7k3yy937b0BkBAAAAGM8sdkAl818Ufl2SS5N8Msl7ktye5Pze+8uTz7yS5MkkX1184+T1vLdl/lW+D0zub0muyfwOKgAAAABWscE7oJJkEpmumfyZ9pmXkpw+5drjSf7dLGYBAAAAYGWZ1Q4oAAAAANgnAQoAAACAUgIUAAAAAKUEKAAAAABKCVAAAAAAlBKgAAAAACglQAEAAABQSoACAAAAoJQABQAAAEApAQoAAACAUgIUAAAAAKUEKAAAAABKCVAAAAAAlBKgAAAAACglQAEAAABQSoACAAAAoJQABQAAAEApAQoAAACAUgIUAAAAAKUEKAAAAABKCVAAAAAAlBKgAAAAACglQAEAAABQSoACAAAAoJQABQAAAEApAQoAAACAUgIUAAAAAKUEKAAAAABKCVAAAAAAlBKgAAAAACglQAEAAABQSoACAAAAoJQABQAAAEApAQoAAACAUgIUAAAAAKUEKAAAAABKCVAAAAAAlBKgAAAAACglQAEAAABQSoACAAAAoJQABQAAAEApAQoAAACAUgIUAAAAAKUEKAAAAABKCVAAAAAAlBKgAAAAACglQAEAAABQSoACAAAAoJQABQAAAEApAQoAAACAUgIUAAAAAKUEKAAAAABKCVAAAAAAlBKgAAAAACglQAEAAABQSoACAAAAoJQABQAAAEApAQoAAACAUgIUAAAAAKUEKAAAAABKCVAAAAAAlBKgAAAAACglQAEAAABQSoACAAAAoJQABQAAAEApAQoAAACAUgIUAAAAAKUEKAAAAABKCVAAAAAAlBKgAAAAACglQAEAAABQSoACAAAAoJQABQAAAEApAQoAAACAUgIUAAAAAKUEKAAAAABKCVAAAAAAlBKgAAAAACglQAEAAABQSoAC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\n"
},
"metadata": {
"image/png": {
"width": 592,
"height": 375
}
}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Resource planning\n\nNow we can try to pick a node flavor based on this information.\n\nWe want to fit about 100 users on a node, since Kubernetes enforces a 110 pod limit per node, and we have ~150-400 users at a time on mybinder.org."
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "# goal, close to kubernetes limit of 110 pods per node\nusers_per_node = 100",
"execution_count": 11,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "We can start with a simple average-based estimate:"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "mem_per_node = df.mem.mean() * users_per_node\ncpu_per_node = df.cpu.mean() * users_per_node\nprint(f\" cpu: {cpu_per_node:.3f} cores\")\nprint(f\"memory: {mem_per_node / 1024:.3f}GB\")",
"execution_count": 12,
"outputs": [
{
"output_type": "stream",
"text": " cpu: 1.887 cores\nmemory: 10.827GB\n",
"name": "stdout"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "While this averages out, outliers can cause problems if we plan too close to it.\n\nInstead, we can try planning based on percentiles. E.g. if we assume that the top 10% outliers don't use more resources than the bottom 90%, we can plan based on the 90th percentile as 'average' or 'typical'.\n\nHere are some resource plans based on different percentiles of current usage:"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "from IPython.display import display, Markdown\n\n# close to kubernetes limit of 110 pods per node\nusers_per_node = 100\n\nfor quantile in (0.9, 0.95, 0.98, 0.99):\n mem_per_user = mem_quant[quantile]\n cpu_per_user = cpu_quant[quantile]\n\n md = []\n md.append(f\"## {int(100 * quantile)}th percentile\")\n md.append(f\"Assuming typical users stay below {int(100 * quantile)}th percentile, we need:\")\n md.append(\"\")\n md.append(f\"- Memory: **{mem_per_user:.0f}MB** per pod\")\n md.append(f\"- CPU: **{cpu_per_user:.3f} cores** per pod\")\n md.append(\"\")\n md.append(f\"For {users_per_node} users, that means each node must have:\")\n md.append(\"\")\n md.append(f\"- Memory: **{mem_per_user * users_per_node / 1024:.1f}GB** per node\")\n md.append(f\"- CPU: **{cpu_per_user * users_per_node:.1f} cores** per node\")\n display(Markdown('\\n'.join(md)))\n",
"execution_count": 13,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<IPython.core.display.Markdown object>",
"text/markdown": "## 90th percentile\nAssuming typical users stay below 90th percentile, we need:\n\n- Memory: **184MB** per pod\n- CPU: **0.004 cores** per pod\n\nFor 100 users, that means each node must have:\n\n- Memory: **18.0GB** per node\n- CPU: **0.4 cores** per node"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<IPython.core.display.Markdown object>",
"text/markdown": "## 95th percentile\nAssuming typical users stay below 95th percentile, we need:\n\n- Memory: **262MB** per pod\n- CPU: **0.020 cores** per pod\n\nFor 100 users, that means each node must have:\n\n- Memory: **25.6GB** per node\n- CPU: **2.0 cores** per node"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<IPython.core.display.Markdown object>",
"text/markdown": "## 98th percentile\nAssuming typical users stay below 98th percentile, we need:\n\n- Memory: **504MB** per pod\n- CPU: **0.069 cores** per pod\n\nFor 100 users, that means each node must have:\n\n- Memory: **49.2GB** per node\n- CPU: **6.9 cores** per node"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<IPython.core.display.Markdown object>",
"text/markdown": "## 99th percentile\nAssuming typical users stay below 99th percentile, we need:\n\n- Memory: **610MB** per pod\n- CPU: **0.969 cores** per pod\n\nFor 100 users, that means each node must have:\n\n- Memory: **59.6GB** per node\n- CPU: **96.9 cores** per node"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Or we can reverse it. We can pick a node flavor and see which percentile of each resource would need to be 'average'."
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "ratios = {\n 'standard': 3.75 * 1024, \n 'highmem': 6.5 * 1024,\n}\n\nnode_memory = {}\n\nnp.cumsum(df.cpu)\nfor cpu in 4, 8, 16:\n for flavor, ratio in ratios.items():\n mem = cpu * ratio\n node_memory[f'n1-{flavor}-{cpu}'] = mem\n cpu_quantile = (df.cpu <= cpu / users_per_node).sum() / len(df)\n mem_quantile = (df.mem <= mem / users_per_node).sum() / len(df)\n print(f\"n1-{flavor}-{cpu}: {mem/1024:.0f}GB\")\n print(f\" cpu: {100*cpu_quantile:.0f}%\")\n print(f\" mem: {100*mem_quantile:.0f}%\")\n",
"execution_count": 14,
"outputs": [
{
"output_type": "stream",
"text": "n1-standard-4: 15GB\n cpu: 96%\n mem: 87%\nn1-highmem-4: 26GB\n cpu: 96%\n mem: 96%\nn1-standard-8: 30GB\n cpu: 98%\n mem: 97%\nn1-highmem-8: 52GB\n cpu: 98%\n mem: 98%\nn1-standard-16: 60GB\n cpu: 98%\n mem: 99%\nn1-highmem-16: 104GB\n cpu: 98%\n mem: 100%\n",
"name": "stdout"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "So if we picked `n1-highmem-8`, we would be happy as long as the *average* user on a given node uses less resources than the current 98th percentile."
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Safety factor\n\nThe next 'safety factor' test is how many users hitting the *limit* can we handle, assuming the rest of users are 'typical'. Oversubscribing CPU isn't usually a big deal, but oversubscribing memory can be catastrophic, so we want to make sure it's pretty unlikey that a few users nearing the memory limit can't consume all of a machine.\n\nLet's say we use the 90th percentile as \"typical\", how many users hitting a given *limit* would it take to run out of memory, for each node flavor?"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "import operator\nimport matplotlib.pyplot as plt\n\nquantile = 0.9\nmem_typical = mem_quant[quantile]\nmem_limit = 2048\n\nn_hogs = np.arange(0, 21)\ntotal_memory = n_hogs * mem_limit + (users_per_node - n_hogs) * mem_typical\nplt.plot(n_hogs, total_memory / 1024, label=\"memory needed\")\nplt.xlim(0, n_hogs[-1])\nfor flavor, mem in sorted(\n node_memory.items(),\n key=operator.itemgetter(1),\n reverse=True):\n plt.plot([0, n_hogs[-1]], [mem / 1024] * 2, label=flavor)\n\nplt.legend(loc=0)\nplt.title(f\"Memory needed, based on {int(100 * quantile)}th percentile and {mem_limit/1024:.0f}G limit\")\nplt.xlabel(\"Number of outliers\")\nplt.ylabel(\"GB\")\nplt.ylim(0, 100)\n\n",
"execution_count": 15,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 15,
"data": {
"text/plain": "(0, 100)"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 720x444.984 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAABNsAAAMiCAYAAABXL8WOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xd4FNX+P/D3J71uepMvEJAqqBeRoiC9iJeOBilCRGmCCIoIcgX0p3ItIAoIYiFyBSEWEFG4IooiiCjCVaSINEHFUEJJb+f3x5lNJsvuZpNsSAjv1/Pss9mZc2bO1N355BRRSoGIiIiIiIiIiIjKz6OyC0BERERERERERFRdMNhGRERERERERETkJgy2ERERERERERERuQmDbURERERERERERG7CYBsREREREREREZGbMNhGRERERERERETkJgy2ERERERERERERuQmDbURERERERERERG7CYBsREREREREREZGbMNhGRERERERERETkJgy2ERERERERERERuQmDbURERERERERERG7CYBsREREREREREZGbMNhGRETkJiLSV0RmiUh8JZdjlohMrIDlThSRWe5ebnUhIv8w9n2Hyi4LEZEzVeX7ioiouhKlVGWXgYiIqFoQkSQAwwF0VEptrsRyKADHlFLxbl7uUQC1lVLizuVWFyKSCGApgCeVUrMqtzQVS0TqAGgPIBZABoC9ALYopbJdzB8PoCOAOADZAPYB2ORqfifLTUIVuAapcvE8KJk79pGIeABoC+AfAIIAnAKwXSn1cxmXFwvgVuj7QgiAc6ZlHi/LMm2Wvxn6vlVHKXW0vMsjInLGq7ILQERkj1Ez5EvjYz70A/4fpVzGHAAPGx9/UUo1dV8JiYiuPkaQbQGAO+zMPiUiTymlFjjJ7wtgMfRDvm3Q9m8RuV8ptc5tBaZqS0ReATAMwGil1KrKLs/VRkRuB/AqgDp25n0PYKxSaqeLyxoAYDKAVrj0vmBNsx/AHABvK6Vyy1puB8v2B7ARQC0A3ZVS+9y5fBfWPwjAIgBJSim310onosrBZqREdCXwBDCyNBlExA/6YY6IiNxARK4H8AN0oG0f9D8zegBIAPAWgFAA80XkLQf5vQCsBZAI4G8A0wD0hg6YvAMgGsBqEbmzQjeEqot7oWs/Da3sglxtjODQJ9CBtp0A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evbsGXHkyBGv+++/P/3666/P/fvvvz2XLl0a0LFjx8gvv/zydGxsbEFJ+7NTp05RGzZsON2kSZM8AMjOzkbfvn0jduzY4TNy5Mi0J554Iic9PV3ee+89/44dO0a1atUqx7bcH374od/IkSPDOnXqlDV79uzzQUFBavv27T7jxo0LO3z48MWpU6emWdMuWbIkYMqUKSG33npr9vPPP38uJCRE7dixw2fKlCkhHTt2zC7VyXYFYbCNiIiIiIiIiMrs0KFDXgsWLDg3bNiwTADo2bNn9oULF2Tx4sWBPXv2zFqyZMl5a9ro6OiCxMTEsJ07d3o1b948DwCSkpL8t2zZ4rt58+ZTDRs2LAxaDRs2LLNfv36x06dP9/r0008L13fmzBmPESNGpD/xxBNpAPDPf/4z28PDA0899ZTlpptuyl29evVpLy8d7rjhhhtyO3ToEPXpp5/6DRgwIAsAvvzyS5958+YFTZ8+/eJjjz1WGBjq1atXdufOnbOHDh0avmjRooDx48dnWOcdOHDAa/z48WnPPvvsReu00NDQzBdffDF4+fLlAU8//XTh9JUrV/p7enpi8ODBmSXtu2+//dZ348aNp2666aY8axkKCgqwcOHCoDNnzkhERIQCgNmzZwf/9ddfntu3bz8VHR1dYNpHGe3atYuaMWNGsHU/O9ufffv2DZ88eXLI+vXrzwDAc889F7R9+3aftWvXnr7ttttyrWkTEhKy5syZE/jkk09aatSoUbiMs2fPyoMPPhg6derUC48++mi6dXr//v2zmjdvnjN27NiwhISEzLp16+YfPHjQc9q0aSFDhgzJmD9//nkPD10B74477sgePHhwRpcuXZzW/LuSMdhGRERERERE5GblrTF2JQkLCysYMmRIscBS27Ztc5KSkgKHDh2aYZ7erl27bEAH6KzBtrfffjtw8ODBGbVq1crPzCwen+rbt2/BQw895JmamiphYWEKADw8PDBu3Lh0m+XmAMDAgQMzrIE2ALjpppvyAgMD1eHDhwurqb355psBtWvXzn/kkUfSYKN3797ZXbt2zUpKSgo0B9s8PDxgDswBQHx8fP4tt9yS88EHH/g/9dRTF63BpA8//NC/Xbt22XFxcQUoQbt27bKtgTarHj16ZC1YsCDo0KFDXhEREbkAsHz58oCJEydeDA4OLrDdR717985cvHhxEIDzJe3PAQMGZD744IOh1v25bNmywH79+mWaA21WjzzySPrHH3/s//fffxc2U01OTvb39/dX48aNS7dddq9evbImTJig1q1b5zdhwoT0t956K8DHx0fNnj37gnXfWDVo0CD/8ccfvzBlypSQkvbRlYjBNiIiIiIiIiIqs1q1auWbm1wCQERERAEA1KlTp1ggKTw8XAFAenp6YZ9k+/fv99q1a5f3okWLAh2t48SJE55hYWF5gA7uWZdju774+Ph827whISEF6enphdGeffv2eTdr1izHHJQza9myZc7nn3/ul5OTAx8fHwC6Rl5ISIiyTTt48OCM8ePHh3711Vc+HTt2zNm5c6fXwYMHvSZPnnzxkgXb0aBBgzzbaTExMQUAkJaWJgCQkpLikZKS4vH444+HPP744w6DU2lpaRIUFKRc3Z+5ubkFKSkpHq1bt76kqahV586ds1asWBFg/bxnzx7vlJQUj9jYWIfNpE+cOOEJAHv37vVu1KhRnsViuWS/ATqoyGAbEREREREREZENPz+/S4IpIjqW5uvrW2y6bQ0nq0GDBmUMHz48w3Z6bm5uKADUrVu3MIhWwvoczisPT09PuwGjAQMGZD322GPq3Xff9e/YsWPOqlWrAoKDg1Xfvn2zXFmuv7//Jct1FAScOHFi2u233+5wueb94mh/WtWtWzffHPAsjejo6IJly5addTTflRp91R2DbURERERERERUaRo1apR37Ngxr1tvvfWSpozp6ekKAAIDA+0Gu8qicePGubt27fLJy8uzG9jasWOHT7169fKstdqcCQwMVD179sxct26df3p6+oU1a9b49+zZM9M8GEN5RUdHF0RFRRX89ddfHvb2kS1n+9O27FFRUQXbt2/3GTVqlN3A3KZNm4qNMNq0adPcZcuWBVxzzTUF9moRml133XW5SUlJgRcuXBB7tdvWr19vd/TS6sB+SJmIiIiIiIiI6DIYPnx4+rZt23zefffdS4Ivzz77rOd7773n1tjFiBEjMo4dO+Y5Z86cINt5a9eu9d24caNfYmJiur289gwdOjQzLS1NHn30UcvJkyc9bPuvc4ehQ4dmvP/++wFbtmzxNk/Py8vDmDFjQj777LPCyKCz/Tl9+vTgZcuWFUYC77nnnozVq1f72y4XAObOnRv4448/FpuekJCQabFY1KRJk0Jyc4vH8r777jvvYcOGhVr7cktMTMzIycmRadOmWQoKild2+/XXXz2fffZZS6l2whWENduIiIiIiIiIqNIkJiZmbt682Xfs2LFh27Zty+jevXvWxYsX5d133w3YsmWLx8KFC53WoCqtTp065UycODHtmWeeCf7555+9+vfvn+Xj46M2btzo+/bbbwf26NEj64EHHnDYBNNW+/btc2rXrp3/zjvvBNSqVSvfOliDOz3++OMXt23b5tOvX7/IMWPGpLVp0yYnJSXFY+nSpYH79u3zGjRoUGGAr4T96bto0aJUa9pp06Zd/O6773z69u0bOWrUqLS2bdvmZGRkSHJysv8333zj271796w9e/YUBtzCw8PVwoULU0eMGBHeqVOnyDFjxqSHhIQUbNu2zefNN98MbNeuXba3t07esGHD/NmzZ5+fMmVKyJEjRzyHDRuWYbFY1Pfff++9aNGioB49emR98MEH7qsCWIUw2EZERERERERElcbDwwNJSUnnlixZkrNs2bKAlStXBvj5+anmzZvnrF27Nu+mm25yWxNSq6eeeupi8+bNc1599dWgcePGhebn56N+/fp5s2fPPj9q1KgM2wEfSpKQkJDxwgsvBN95551ur9UG6L7v1q1bd2bevHlBq1at8l+0aFFQcHBwQdu2bbMXL16c2qhRo8KApLP9uX79+tOtW7fONS/3o48+OjN//vzAVatWBbz++utB/v7+qn379llfffXVqRUrVgSYg20A0KdPn+z//ve/p5977rmgqVOnhmRlZUndunXzpk+ffnHcuHHp5n03atSojIYNG+bNnTs3aPLkyaFZWVnSuHHj3Llz555r3bp1bnUNtolSbj9nqQSbNm1SANCyZcsnK7ssVLVt3bp1FAC0adNmSWWXhao+ni/kKp4rVBo8X8hVPFeoNKrL+XLkyJGJderUcbkGFJVeenp6JAAEBgaeruyyOLNq1Sq/kSNHhv34448p9erVc2tNPNKOHDkSUKdOnXnO0uzYsWMmAHTu3Ln8o2KUA/tsIyIiIiIiIiIqhzVr1vi3aNEih4E2AhhsIyIiIiIiIiIqszNnzsimTZt877777gppQkpXHvbZRkRERERERERUSocOHfIMCgpSjzzyiCU4OFgNGTKETYoJAINtRERERERERESldv/994ft3LnTOyQkRC1duvRsQEBAZReJqggG24iIiIiIiIiISum1115LTUtL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P/205YsvvvDp06dPYflHjhyZYd03ANCiRYvcgIAA1alTp2xroA0AfHx80KxZs9yjR48Wri8rKwtKFW/Z6+PjA6OGn8sWL14coJTCqlWrznTp0qUwqDZ69Oj0zp07Rz788MOhu3fvTvHyujrCUFfHVhIRERERERFRhahdu3aet3fxrsc8PT0RERFRkJ6eXuq+4mNiYi5pgrt7927PunXr5jtaX2xsbAEApKenO+wn7NSpUx4nT5706NSpk90mjWFhYap+/fp2A3XXXXfdJdOjoqLy7a2vYcOGxdJGREQUGOW+pHlqaGhogXkZe/fu9d69e7e3vX1gdfz48WKRsAYNGlxSttDQ0IJatWrZnX7ixInC/M2aNYv+448/ii1vzZo1Zzp16lSqWmg7d+70admyZY450AYAvr6+mDRpUtq9994b9uOPP3q3bNnyklqD1RGDbURERERERERUZta+w2x5enqWaTCEDRs2FPa7lpubGwoA11xzTWGgyt76bINv9tjW4LLH0baYa6RZOar9FRAQUOyztdaZr6/vJcsQuTQ22LRp09wXX3zx/CUzDHXq1CkWtLNXZhGBr++lYyHYru+dd945m52dXWxikyZNSt2f28WLFz2aNm1qN4hpDQampKRcNYN0MthGRERERERERFXGrbfeWlj7KT09XQGAOwZZiIyMLIiOji7YtGmT77BhwzJt5587d0727NnjXbNmzUtqoF0u1113XW5SUlLgDTfckBcUFOSWkVudcdbktjRiY2Pzzc1TzX777TcvAKhRo0al7dfL7aqJKhIRERERERHR1cvDwwNDhw7NWLNmjf/69euLVfvKz8/HpEmTQpw1Q70chg8fnpGdnS2PPfaYxXbeRx995DthwgRLfn7Vi1n16dMnc/v27T7ffPNNsSqGeXl5eOWVV4Lq1q2bd+ONN7p9BNSqijXbiIiIiIiIiOiqMG3atIvfffedz5AhQ8Lvu+++9I4dO2anpqZ6vPHGG4GnT5/2aNSoUaUGhBo1apT/zDPPnJ86dWrIsWPHPIcPH57h4+OjPv/8c7933nkn4J577kkv7eAFl8OoUaMy1q9f7zdgwICIMWPGpDdv3jzn9OnTHm+99VbgoUOHvFatWnXWPIhDdcdgGxERERERERFdFXx9ffHRRx+dmT9/fuC7774bsHTp0sCgoKCCTp06Zb/zzjsXEhMTw+z1o3Y5jR07NqN+/fp5L730UtCECRNClVJo2LBh3iuvvHLunnvuuaT5a1Xg7e2Njz766OzChQsDly5dGrBgwYKgoKCggnbt2mUvX778bO3atQtKXkr1Ia50EEjutWnTJgUALVu2fLKyy0JV29atW0cBQJs2bZZUdlmo6uP5Qq7iuUKlwfOFXMVzhUqjupwvR44cmVinTp2Myi5HdZaenh4JAIGBgadLSusOrVq1irrllluy582bd+FyrI9cd+TIkYA6derMc5Zmx44dMwGgc+fOlRoxvXrq8BEREREREREROZCVlYXff//d8//+7/+qXqdodEVhsI2IiIiIiIiIrgrr16/3XbRoUYC9eUuWLAnMyMiQbt26ZV/uclH1wj7biIiIiIiIiOiqsHHjRt833ngjcOfOnT6jRo1Kb9CgQd7Zs2c9kpOT/V944YXgYcOGZdxwww1XzZ7Q+akAACAASURBVKiZVDEYbCMiIiIiIiKiq8LcuXMvNG3aNPell14KTk5O9rdOj4iIKJg8efLFKVOmpFVm+ah6YLCNiIiIiIiIiK4aI0aMyBwxYkTm77//7pGSkuIZEhJSUKdOnXwvL4ZIyD14JhERERERERHRVadWrVoFtWrVKqjsclD1wwESiIiIiIiIiIiI3ITBNiIiIiIiIiIiIjdhsI2IiIiIiIiIiMhNGGwjIiIiIiIiIiJyEwbbiIiIiIiIiIiI3ITBNiIiIiIiIiIiIjdhsI2IiIiIiIiIiMhNGGwjIiIiIiIiIiJyEwbbiIiIiIiIiIgqiMViiVu6dKn/5VzniBEjQrt27RpxOddJRRhsIyIiIiIiIqLL5vz583LHHXeEWyyWuNTUVKns8lCRPXv2eDVu3Di6VatWUa6k37hxo4/FYol75ZVXAiu6bFcSBtuIiIiIiIiI6LL4/fffPbp06RK5detW38ouCxX3xRdf+Nx+++2Rf/75p6cr6XNzczF16tSQ6667Lu+BBx5Ir+jyXUkYbCMiIiIiIiKiCrdr1y6vLl26RGVlZcnEiRPTKmo9S5cu9bdYLHEVtfzq6J133vG/6667Ipo3b57zz3/+M8uVPPPnzw/87bffvObMmXPOy8uroot4RWGwjYiIiIiIiIgq3OrVq/0tFkvBhg0bTsfHx+dVdnlIKygoQFJSUkCPHj0y33vvvbN+fn6qpDx///23x5w5c4LvvvvujDZt2uRejnJeSRh6JCIiIiIiIqIKN3PmzIuTJk1KCwsLKzGYQ5ePh4cH3nvvvbMWi0V5errUghTTp0+3eHp64plnnrlQwcW7IrFmGxERERERERGVyaBBg8J69+4dfuLECY/ExMTQmjVrxsbHx8f069cv/ODBg8UiN56enihvoC01NVUeeughS4MGDWKioqLiWrduHbVy5Uo/oKj56EMPPRQK6FFALRZL3IgRI0Kt+ZctW+bfrVu3iJo1a8ZGRUXFtWzZMmrFihV+5nXs2bPHy2KxxG3fvt377bff9m/ZsmVUTExM7E033RQ1b968wIKCgkvK9dNPP3kNGTIkrE6dOjGRkZFxLVu2jHrllVcC8/IurcCXm5uLV155JbB9+/aR11xzTWxMTExs+/btIz/77DMfc7rDhw97WiyWuJ9++slr+vTpwQ0aNIgJCQmJO3PmjABAWlqaPPnkk0HNmjWLioyMjLv22mtjRo8eHXL8+PFSx3rCwsJcDrRt377d+7333vP/17/+dcHX1xeZmZmlXV21x5ptRERERERERG5264e3XhF9hm3rv+2v8uT39/dXhw4d8urevXtkr169MhcvXpx65MgRzxdffDG4d+/eEbt27Urx8/MreUEuGjp0aNihQ4e8pk6deiE6Orpg2bJlAaNHjw679tprT99+++3Za9asObNx40bfhQsXBq1Zs+YMAMTGxhYAwKpVq/wefvjh0EGDBmWMHTs2XSmFtWvX+o0ZMyYsKCjobO/evbMBICAgQAHAc889F/znn396TpgwIc3Pz0+tWbPGb8aMGRZfX181duzYDGuZ1q1b53vvvfeGN2jQIHfWrFkXoqOjC3755RevuXPnBm3fvt3HdhteeumlwHnz5gUPHz48ffLkyRczMjJkxYoVAYMGDYr47LPPTjVv3rxYhO6JJ56wnDx50nPmzJkXwsPDCyIiIlRqaqp079498vjx454PPvhgWrNmzXLPnDnj8fbbbwe0b98+qm7dunkiFTPQ69SpU0M8PT2xePHiwMmTJ4eICFq2bJnzzDPPXGjZsiWblILBNiIiIiIiIiIqh/3793s9++yz58ePH18YgKpXr15+QkJC+CeffOI3YMAAlzrcL0lKSorHli1bfOfNm3duxIgRmQDQo0eP7I8//ti3RYsWuQAQFxeXc+zYMU8A6NSpU445/1133ZXVrFmzlAYNGuRbp/Xv3z/r+PHjnvPnzw+yBtusDh486LVt27ZTFotFAcCdd96Z1aFDB6+lS5cGWoNtqampMnbs2LDbbrste+XKlWd9fHRsrUePHtn33HNPZpcuXSJtt2PChAnpCQkJWfHx8YXl6NevX1azZs2iFy5cGPTWW2+dM6c/evSo1zfffHMqODi4sFbgo48+GnL8+HHPzZs3n2rYsGHhcgYPHpz5yCOPWN58883AVq1aFdt+d9iwYYPvjz/+6B0UFKR69eqV1aRJk9zff//d84033gjs2bNnxBdffHG6adOmV31/fAy2EREREREREblZeWuMXUlCQkLU6NGjM8zTunbtmu3t7Y3Dhw+71jbRxNwsMStLx+n8/f0RGBiofH19sX79er9+/fplWZs+9u3bN9vRssw8PDxgDrQBQF5eHpo1a5a7YcOGS6rfJSYmplsDbabtypo/f36Q9fOqVav8z58/Ly+++OJ5a6DNKiYmpuD5558/P3DgwHDzdD8/P5gDbQAgImjatGnun3/+ecn+GjlyZJo50Hbx4kVZvXq1/4MPPphmDrRZt3H27NkXbLfHXlNPX19feHiUrsXpa6+9Fujr64uNGzeebtKkSWFQ7f77789o3bp11MSJE0M+//zzM6VaaDXEYBsRERERERERlVnt2rXzvL29i03z9PREREREQXp6eqn7D4uJibmkCe7u3bs969atm//888+fe/TRR0Pr1asXe/PNN+e0bds2OzExMaNmzZqXdqRmx6ZNm3zeeeedgP/973/eJ06c8MzKyhIAqFGjRr5t2kaNGl1SQys6OrogIyOjsH3mnj17vGNiYgrq1q17SX4A6NatW7btvgGA999/32/16tX+P/30k/fJkyc9s7N1vNBebbSGDRsWK8fevXu9cnNzccstt9ituebn54e2bf8/e3ce3WSZ/n/8ytY2TZs23cteLJVNh7KpwAz7+pVihQliFQsOVPwCglBGZBCd3ygDglQWaRUsIIOQrzPsYw8II+OGKMMiwzpQVkFoaUObNiFp8vujpJNuWDClQN+vczg0T+48z5Wnj5zj51z3fXeznT59uizzqeaeXq6u7ur861//0gwePLjYM2gTEQkODnaNHTvW8vrrr+svX76sjIiIqNHv435F2AYAAAAAAG6bVqutctMDlUp1W5shZGVl5bh/ttvtwSIiDRo0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U6dOlavDarXK7NmzA+Lj48NDQ0OjW7RoETlp0iT91atXFX379g0dPXp0cMXrFRcXy/Tp0wPj4uIiGzZsGNWnT5/Q3bt3lwuh3nvvPX+9Xh997do1xUsvvaRv1qxZZFRUVNSwYcMMFy9eVDocDnn99dcDW7RoUe053LKysnz79+8fGhUVFRUdHR01cODA0M8++6zcAmlbt2711ev10UePHlXNmjUrMC4uLjI8PDy6X79+oUeOHFGJiCxatMi/bdu2EdHR0VFdu3YN27p1q29N73G7du0cQ4YMKZ4yZUrQ1q1bfXNzcxVff/215umnnw5p06aNffjw4cU1PVd9Q8sfAAAAAABedr5T5+i6rqEmGn235+Iv+bxWq3WdPHlS3b9//7DBgwcXp6en52VnZ6vmzZsXmJCQELpv377Lfn5+3ipXRETy8vKUAwcODHviiSeKMzIyio4cOaJ+5513Ap966qmQL774Iudmn7XZbDJ48ODQ77//3ud3v/udpWfPntfMZrNi1apVun79+oWpVCoRkZKKnxs+fHiITqdzzZs3Lz8nJ0f57rvvBiYmJobu37//cmRkpNN9L0REnnzyyZDY2FjHkiVL8k+fPq2aO3du4NNPPx3SqlUr+7Fjx9Rz5swxFxcXKzIyMnQVzyEisnjxYv+ZM2cGPfnkk8WjRo2yKJVK+cc//uE7fPjw0HfffTf/mWeeKfa83vjx44MNBoPTXds777wTOGzYsFCj0Vi0efNm7YwZM66p1Wr56KOP/JOSkkL++c9/Xnn44Ydr1JW2fPny/KSkJMOIESNC3MdatWrl2Lp1a46vb41zu3qHsA0AAAAAANy2o0ePqt966y3z+PHji9zHYmNjS4xGY8jWrVv9hg4dar3Z52/V8ePH1X/+85/NL774YpGIyOOPP24zGAyul19+OWjv3r3qDh06VBskvf322wF79uzxWbt27dWBAwfa3MeHDx9uffHFF4PWrFnj36ZNm0obKgQEBLjWrFmT537drVu36506dYr4y1/+on355ZctnmNjYmIc6enpZvfriIgI5/PPP2/46aeflN99990VnU7nEhHp27evrVWrVpGe5zh27Jhq1qxZQenp6XnDhw8vu29Go9EaExPjeOWVV4KGDBliDQwMLOsQ9PHxca1bty5PqSxt7HvooYccvXv3DktPTw84cODA5YiICKeIyJAh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\n"
},
"metadata": {
"image/png": {
"width": 621,
"height": 401
}
}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "From this chart, we can see that `n1-highmem-8` can withstand 18 pods sitting right at the limit of 2GB, as long as the remaining pods average below the 90th percentile."
}
],
"metadata": {
"gist_id": "55116017ef202843de01906c18541471",
"kernelspec": {
"name": "python3",
"display_name": "Python 3",
"language": "python"
},
"language_info": {
"name": "python",
"version": "3.6.5",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"file_extension": ".py"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment