bachelorThesis/spatial_resource_waste/spatial_resource_waste.ipynb

270 lines
73 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 12,
"id": "elder-costs",
"metadata": {},
"outputs": [],
"source": [
"import json\n",
"import sys\n",
"import glob\n",
"import pandas as pd\n",
"import seaborn as sns\n",
"import matplotlib as mpl\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "representative-somalia",
"metadata": {},
"outputs": [],
"source": [
"#DIR = \"/home/claudio/hdd/git/bachelorThesis/spatial_resource_waste/\"\n",
"DIR = \"/home/claudio/google_2019/thesis_queries/spatial_resource_waste/\""
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "assigned-soundtrack",
"metadata": {},
"outputs": [],
"source": [
"def plot_df(df, cluster, type_of_data):\n",
" s = df.sum()\n",
" print(\"Cluster \" + cluster + \":\")\n",
" df[\"cpu\"] = df[\"cpu\"] / s[\"cpu\"]\n",
" df[\"ram\"] = df[\"ram\"] / s[\"ram\"]\n",
" print(df) \n",
"\n",
" df2 = df.copy()\n",
" df[\"kind\"] = \"cpu\"\n",
" df[\"percent\"] = df[\"cpu\"]\n",
" del df[\"cpu\"]\n",
" del df[\"ram\"]\n",
" \n",
" df2[\"kind\"] = \"ram\"\n",
" df2[\"percent\"] = df2[\"ram\"]\n",
" del df2[\"cpu\"]\n",
" del df2[\"ram\"]\n",
" \n",
" df = pd.concat([df, df2])\n",
" \n",
" bottom = [0, 0]\n",
" lines = []\n",
" for t in [-1,4,5,6,7,8]:\n",
" lines.append(plt.bar(x=df[df.term==t][\"kind\"], bottom=bottom,\n",
" height=df[df.term==t][\"percent\"]))\n",
" bottom += df[df.term==t][\"percent\"].values\n",
" plt.legend(lines, [\"No termination\", \"EVICT\", \"FAIL\", \"FINISH\", \"KILL\", \"LOST\"],\n",
" bbox_to_anchor=(1,1))\n",
" plt.title(type_of_data + \" spatial resource waste (cluster \" + cluster + \")\")\n",
" plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "varied-floor",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster a:\n",
" term cpu ram\n",
"0 -1 0.006972 0.010447\n",
"1 6 0.013963 0.011066\n",
"2 5 0.022792 0.028387\n",
"3 4 0.134392 0.118184\n",
"4 8 0.000091 0.000091\n",
"5 7 0.821791 0.831826\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster b:\n",
" term cpu ram\n",
"0 -1 0.002582 0.004637\n",
"1 6 0.025877 0.012231\n",
"2 5 0.062950 0.083841\n",
"3 4 0.048340 0.073120\n",
"4 8 0.000036 0.000027\n",
"5 7 0.860215 0.826144\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAecAAAEICAYAAABlHzwDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAnCElEQVR4nO3deXwV5b0/8M8nCyHsJsQYSCDIagimQC4Uq9VL5VdEXK6AYrGoFRGUQsWLYG29mt91aW21rhcVW8GdAgpiEGu15RbUGsSwb7KFQDAGDJskJPneP2YOPRxPkhNy4EySz/v1yosz8zwz8505w/nO88xGM4OIiIh4R1SkAxAREZGTKTmLiIh4jJKziIiIxyg5i4iIeIySs4iIiMcoOYuIiHiMknMDRvJ+kq94II7DJM8NoV46SSMZcybikrohGUdyPcmUWup59nsk+TeS46opSya5gWTcmY5LpK6UnOvB/SE4EOp/dpI3kfzH6Y7rdAr242dmrcxsW6RiEoDkJSR313M24wEsM7O94YipNjUl0tPBzPYB+AjOeop4mpLzKSKZDuAiAAbgyshG0/h4pVXmlTjOkAkAXo50EKEiGX0Kk70K4LZwxyISbkrOp24sgE8AvATgRv8CkmkkF5AsJllC8mmS5wGYCWCQ2w38jVv3pNZDYOua5BMkC0geJLmS5EWhBEeyPcnFJL8huZ/k/5KMcst2kLzH7cI8QPJPJJu7ZWe50xW7ZYtJprplD8I5IHnaXYen3fFGspv7+XKSq9x4C0jeH+oGdeOaTnI1gCMkY0h+n+QKdz3ySV4SsK22kTxEcjvJMe74KJK/IrmT5Fck55Bs65Z9p4XpLvdS9/P9JOeRfIXkQQA3kUxwt9Eed5u87TftcJJfuPGtIHl+Nev2AMmn3M+xJI+QfNQdjid5jGSCO/xnkkUkS0kuI9nbbz7D3O/tEMlCkv9JsiWAJQA6uN/LYZId3O0wg+SX7n4417eMIPF1AnAugE/9xsWT/L27HUtJ/oNkfDXf26V+wydOt5Bs7m7LEncbfUane7m6fakXyb+4++wmktf6zfclkv9DMpfkEQD/HmxdAHQl+U93H1wYsM6fAjiXZOdqphXxBjPT3yn8AdgK4HYA/QEcB5Dsjo8GkA/gcQAtATQHcKFbdhOAfwTM528AxvkNn1QHwA0AEgHEALgLQBGA5m7Z/QBeqSa+h+EcDMS6fxcBoFu2A8BaAGkAEgAsB/DfblkigBEAWgBoDeDPAN6uLl53nAHo5n6+BEAfOAd+5wPYB+BqtyzdrRtTTcw7AHzhxhUPoCOAEgDD3PkNcYeT3G17EEBPd9oUAL3dzz9zv59zAbQCsADAy37x7Q6y3Ev9tulxAFe7y4wH8C6ANwGc5W7Li926fQF8BWCg+73f6M4rLsi6DQawxv18AYAvAXzqV5bvV/dn7raPA/AHAF/4le0FcJH7+SwA/WpYrylwDiBT3Xk9B+D1arb95QDWBYx7xv2+O7rrd4E7n5O+R//tF7hfwmmlvgNnf4qG8/+lTTX7fksABQBuhrO/9wXwNYAMt/wlAKUAfuB+N82DrMffABQCyHTnNx8B/0cArAZwZaR/Q/Snv5r+1HI+BSQvBNAZwFwzWwnnh/YnbvEAAB0ATDOzI2Z2zMxO+Tyzmb1iZiVmVmFmv4fz49gzhEmPw0lYnc3suJn9r5n5P0j9aTMrMLP9AB4EcL27vBIzm29mR83skFt2cR3i/ZuZrTGzKjNbDeD1ukwP4Ek3rm/hHJjkmlmuO7+/AMiDk6wBoApAJsl4M9trZuvc8WMAPGZm28zsMIB7AIxm6F3UH5vZ22ZWBaAdgMsATDCzA+62/LtbbzyA58zsUzOrNLPZAMoAfD/YPAF0J5kI4IcAXgTQkWQrONvHN0+Y2R/N7JCZlcFJdFm+lj+c7zWDZBs3ns9rWI8JAO41s91+8xpZzXZoB+CQb4BOL8vPAEwxs0J3/Va486mL43AO+Lq581hpZgerqTscwA4z+5O7v6+Ck1xH+dVZaGbL3f3hWDXzednM1prZEQC/BnAtT+4CP+Sur4hnKTmfmhsBvG9mX7vDr+FfXdtpAHaaWUU4FuR2W25wuxW/AdAWQPsQJn0UTuvxfbfrd0ZAeYHf551wDihAsgXJ59yuzIMAlgFoxxDP75EcSPIjOt3ipXASRCjxBourM4BRbnfoN+76Xwggxf3hvc6d/16S75Ls5U7XwV0n//WLAZB8CjGkAdhvZgeC1OsM4K6A+NLc5Z/EPdjIg5OIfwgnGa+A0wo8kZxJRpN8xO2KPginVQr8axuOgHNwspPk30kOqmE9OgN4yy+2DQAqEXw7HIDTWvdpD6fX58sa5h+KlwEsBfCGe1rgtyRja4h3YMD2HAPgHL86BUGnPFngvh2Lk/fB1gC+CTF+kYhQcq4j95zbtQAuds8LFgG4E07rJgvOD0OnalonwV4BdgROl5/PiR8iOueX73aXd5aZtYPTrcfa4nRbXneZ2blwLlibSvJHflXS/D53ArDH/XwXnJb5QDNrAyeRwG+Ztb3G7DUAiwCkmVlbOF3rtcbrH7rf5wI4raB2fn8tzewRdx2XmtkQOD0EGwG84E63B84Pvf/6VcDpYj9pe7sHHUm1xJBAsl2QWAsAPBgQXwsze72adfs7nC7svgA+c4d/DKe3ZZlb5ycArgJwKZwDsXRfqO46f2ZmVwE4G8DbAOYGidk/vssC4mtuZoVB6q4G0MVvv/0awDEAXatZF3/V7sNuT8MDZpYBp1t8OJzrNYLFXADg7wHxtjKziX51QnmNXuC+fdxdH98Fft3gnHoS8Swl57q7Gk7rIwPA99y/8wD8L5wfnX/COS/4CMmW7gUxP3Cn3QcglWQzv/l9AeAat8XaDcAtfmWt4SSVYgAxJO8D0CaUIOlcqNSNJOEk9Eo43cA+d5BMdS+WuRfOOVXfMr8F8I1b9l8Bs94H51xudVrDaWkeIzkA/+ruPxWvALiC5I/dFmVzOhd0pboXFV1F52KoMgCH/dbvdQB3kuzidhs/BOBNtzdjM4DmdC5ciwXwKzinCoIy57aiJQCepXOxXCxJ3wHLCwAmuL0FdL/vy0m2rmZ2f4ezj6w3s3K451wBbDezYrdOa3d9SuAkvId8E5NsRnIMybZmdhzOOXffOu8DkOjX/Q04B0YP+i5+IplE8qpq1nM3nJ6WAe5wFYA/AniMzsVl0SQHMfhtg1/AOW0QSzIbwEi/mP+dZB/3IOggnETpH7P/vrQYQA+SP3XnFUvy3+hcTFkXN5DMINkCQA6AeWZW6ZYNgNN1vrP6yUUiT8m57m4E8Ccz22VmRb4/AE/D6YIjgCvgHJ3vArAbTvcrAHwIYB2AIpK+LvHHAZTD+aGaDedWD5+lAN6Dk1B2wmnJhNKtBwDdAXwAJ2l9DOBZM/vIr/w1AO8D2Aan6/K/3fF/gHMR1NdwLiZ6L2C+T8A5b3mA5JNBlns7gByShwDch3+17OrMzArgtCJ/CecApQDANDj7bRSAqXBayfvhdA37Wlh/hNOdugzAdjjb7efuPEvdGGfBuXDoCJzvqCY/hZNUNsK5AOwX7rzyANwK57s/ACe53VTDfFbA2ba+VvJ6N7ZlfnXmwPmuC93yT4LEssPt8p4AZ5+DmW2Ec1Cyze0S7gDnu1oE59TGIXdeA2uI7zl3/j7/CWANnFb+fgC/QfDfjF/DaWEfAPAAnH3L5xwA8+Ak5g1wDlB8t2udtC+51zj8PwCj4XyvRe4y6/rQkJfhXDxWBKdrfrJf2Rg4By0inua7eleaEJI74Fwl+0GkYxHvcFvFqwD8yM7Qg0jOJJJnwzk46FvDxWQintCUHrAgIjVwr8TOiHQcp4uZfQXnFJSI56lbW0RExGPUrS0iIuIxajmLiIh4TMTOObdv397S09MjtXgRkQZp5cqVX5tZ4L350shELDmnp6cjLy8vUosXEWmQSOoe7SZA3doiIiIeo+QsIiLiMUrOIiIiHqOHkIiINHArV648OyYmZhac91ir0dUwVAFYW1FRMa5///5fBRYqOYuINHAxMTGzzjnnnPOSkpIOREVF6eEVDUBVVRWLi4szioqKZsF5c+BJdIQlItLwZSYlJR1UYm44oqKiLCkpqRROb8d3y2ubAck/kvyK5NpqyknySZJbSa4m2a+eMYuISN1EKTE3PO53FjQPh9JyfgnA0BrKL4PzesLuAMYD+J86xiciIiJ+aj3nbGbLSKbXUOUqAHPMeUj3JyTbkUxpjK+cExFpCNJnvNs/nPPb8cjlK2urQ7L/uHHj9r3wwgu7AeC+++5LPnz4cPRjjz22J5RlLF68uHVcXFzVkCFDjtQ33mCuu+66znffffe+/v371/l1oYGx/fa3v01q0aJF1aRJk0rCH6kjHBeEdQRQ4De82x33neRMcjyc1jU6dep0ygt8ZsKHpzytNH53zBwc6RC0j0qNvLCPhluzZs0sNzf3rL179xalpKRU1HX6Dz/8sHWrVq0q65Kcjx8/jtjY2JDqvvnmm6f8ZLXA2O6+++7iU51XqM7oBWFm9ryZZZtZdlKSHg0rItJYREdH29ixY4sfeuih5MCyTZs2Nfv+97/fo0ePHhmDBg3qsWXLlmaB5XPmzEmaOXNmcq9evTLee++9Vnv27In58Y9/3DUzM/O8zMzM895///2WADB16tQOV199dZd+/fr1uuaaa7pMnTq1wzXXXJPev3//nh06dOgze/bsdhMmTEjt0aNHxkUXXdS9rKyMADBgwICey5YtawEALVq06Pvzn/+8Y8+ePTOysrJ6FRQUxADAa6+91vb888/vdd5552VccMEFPQoKCmKCxTZ16tQO9913XzIArFixIj4rK6tXjx49MoYMGdK1uLg42re8iRMnduzTp8956enpme+9916rumzPcCTnQgBpfsOp7jgREWlCpk2b9tWCBQsSSkpKov3HT5w4sdOYMWNKNm/evP66664rmThxon/OQM+ePcvHjh1bPGHChH0bN25cP3To0MO33XZb2tSpU/etXbt2w1tvvfXlhAkT0n31t2zZ0nzZsmWb3nnnne0AsHPnzrgVK1Zsnj9//tYJEyZ0GTx48MHNmzevb968edXcuXPbBsb57bffRg0aNOjwpk2b1g8aNOjwU089lQQAQ4YMOfzFF19s3LBhw/qRI0fuz8nJOSdYbP7zuummm7o89NBDuzdv3ry+d+/e306fPr2Dr6yiooJr1qzZ8Jvf/KYgJyenQ2AcNQlHt/YiAJNIvgFgIIBSnW8WEWl6EhISqkaNGlXyyCOPnB0fH1/lG79q1aqWS5Ys+RIAJk6cuP+BBx5IrW1ey5cvb7Nly5Z43/Dhw4ejS0tLowBg6NCh37Rq1erE1emXXnppaVxcnA0YMODbyspKjhw58iAA9O7d+9vt27c3C5x3bGysjR49uhQA+vfvf+SDDz5oAwDbt29vdvXVV6cWFxfHlpeXR6WlpZXVFGNJSUn0oUOHoi+//PLDAHDrrbeWjBo16lxf+ahRow4AwAUXXHBk2rRp34mjJrUmZ5KvA7gEQHuSuwH8F4BYADCzmQByAQwDsBXAUQA31yUAERFpPO655559/fr1yxg9evTX9ZmPmeHzzz/f0KJFi+/cItayZcsq/+G4uDgDgOjoaMTExFhUlNMpHBUVhYqKCgZO718nJibmRJ1JkyZ1mjJlStGYMWNKFy9e3Lqurd1AzZs3N98yKisrvxNHTWrt1jaz680sxcxizSzVzF40s5luYoY57jCzrmbWx8z0HkgRkSYqOTm58oorrjjw2muvtfeN69u375FZs2adBQDPPfdcQnZ29uHA6Vq3bl156NChE93hF1544cGHH374bN/wihUr4gOnCbdDhw5Fd+rU6TgAvPTSS4nVxeaTmJhY2aZNm0rf+eQXX3wxcdCgQd9Zt1Ohx3eKiDQyodz6dDrde++9RbNnzz5x1e/MmTN3jR07Nv2JJ544JzExsWLOnDk7AqcZMWLENyNHjuy6ZMmSdn/4wx92Pf/88wXjxo3r1KNHj4zKykoOHDjw0AUXXLDrNMe95/rrr+/atm3bigsvvPDQrl274oLF5j/Nn/70p+0TJ07sPHny5KhOnTqVvf76699Zt1NB5/bkMy87O9vy8k6tka3bVKQmXrhNRfuo1KQ++yjJlWaW7T8uPz9/R1ZWVr26kSUy8vPz22dlZaUHjteztUVERDxGyVlERMRjlJxFREQ8RslZRETEY5ScRUREPEbJWURExGN0n7OISGNzf9uwvjIS95fWet90dHR0/+7du3/rG77mmmv2l5WV8dixY1HPPPPMifctrFixIv6GG244d9u2bes6duzYJy8vb0NKSkrFrl27Ym6//fZO+fn5Ldq0aVPZvn3744888kjhzTff3AUA9u7d26xVq1aVrVu3rkxISKhYsWLF5rCuo8coOYuISL3FxcVVbdy4cb3/uNWrV8cNGzash39yfuWVVxKuueaa/f71qqqqcOWVV3b7yU9+UrJ48eJtAPDxxx/Hl5aWRvvmOWLEiPThw4eX3nzzzQfOxPpEmpKziIicFueff35Z27ZtKz788MOWgwcPPgIAixYtSliyZMlJrd7Fixe3jomJMf/3JA8aNOjbwPk1JTrnLCIi9VZWVhbVq1evDN/fCy+8cBYAjBgxYv+rr76aAAB//etfW7Zr166iT58+J73tafXq1fFZWVlHIxG3V6nlLCIi9RasWxsAxo4du//CCy88r7KysuDVV19NGDFixP5g08vJ1HIWEZHTplu3bsdTU1PLcnNzW+fm5p41duzY7yTnPn36fJufn98iEvF5lZKziIicVqNGjdo/bdq0tLS0tLKuXbseDyy/4oorDpWXl/N3v/vdiddMfvrpp/G+VzE2RerWFhFpbEK49SncfOecfcODBw8uffbZZwsBYOzYsQfuvffetIceeqgg2LRRUVFYtGjRl7fffnvaE088cU5cXJylpqaWPfXUU0HrNwVKziIiUm+VlZXVHhCkpKRUVFRUfB44vrCwcI3vc3p6+vHc3Nxt1c1j/vz5O+odZAOibm0RERGPUXIWERHxGCVnERERj1FyFhER8RglZxEREY9RchYREfEY3UolItLI9JndJ6yvjFxz45o6vzJy4cKFW3v27Fmek5Nz9oMPPpi6Z8+e/MTExErAedHF73//++SPPvpo65NPPpmYl5fXcs6cObvCGXNDp+QsIiL1Vt2ztefNm5eQmZl55JVXXmk3ZcqUkkjE1hCpW1tERE6LdevWxR09ejQ6JyencO7cuQmRjqchUXIWEZF6839l5JAhQ7oCwJw5c876j//4j/1Dhw49vH379uYFBQXqrQ2RNpSIiNRbsG7tBQsWJC5YsGBrdHQ0hg0bduDll18+65e//GVxpGJsSJScRUQk7P75z3/G79y5M27o0KE9AOD48eNMTU0tV3IOjbq1RUQk7ObMmZNw11137SksLFxTWFi45quvvlq9b9++2M2bNzeLdGwNgVrOIiKNTCi3Pp1ub7/9dsI777yzxX/cZZdddmD27NkJgwYNOuI/ft68eYlLly5t5xtesWLFhmDvfW5KlJxFRKTejh49usp/ePfu3WsC68yaNWu37/Pw4cMPAcDkyZNLJk+erFusAoTUrU1yKMlNJLeSnBGkvBPJj0iuIrma5LDwhyoiItI01JqcSUYDeAbAZQAyAFxPMiOg2q8AzDWzvgBGA3g23IGKiIg0FaG0nAcA2Gpm28ysHMAbAK4KqGMA2rif2wLYE74QRUREmpZQknNHAAV+w7vdcf7uB3ADyd0AcgH8PNiMSI4nmUcyr7hYV9OLiIgEE65bqa4H8JKZpQIYBuBlkt+Zt5k9b2bZZpadlJQUpkWLiIg0LqEk50IAaX7Dqe44f7cAmAsAZvYxgOYA2ocjQBERkaYmlFupPgPQnWQXOEl5NICfBNTZBeBHAF4ieR6c5Kx+axGRCNjQ67ywvjLyvI0bTumVkVu2bInzfzXkL37xi/SPP/54/cCBA78FgO7du/devHjxlp49e5Z37NixT15e3oaUlJSK6dOnnzN//vzEqKgoi4qKwrPPPrtz8ODBRwYMGNDzd7/7XcEPf/jDowCwadOmZsOHD+++ZcuWdeFcXy+oNTmbWQXJSQCWAogG8EczW0cyB0CemS0CcBeAF0jeCefisJvMzE5n4CIi4h3Bnq29ZcuWOP/h5OTk8pycnJR33313W3Xz+eCDD1ouXbq03Zo1a9bHx8fb3r17Y8rKyni64vaqkB5CYma5cC708h93n9/n9QB+EN7QRESkMfnRj35U+umnn7bOz8+Py8rKKgtWp7CwMDYhIaEiPj7eACAlJaXizEbpDXq2toiI1FuwV0YGioqKwpQpU4oeeOCBlOrmc/XVVx/cs2dPs/T09Mwbbrih07vvvtvKv3zs2LHn+pYzbNiw7uFeD69QchYRkXrzdWtv3Lhx/V/+8pcvq6t32223lXz++eetNm7cGPQFGG3btq1au3bt+qeffnpnUlJSxY033tj1ySefTPSVz5kzZ5tvObm5uVuCzaMxUHIWEZEzJjY2FpMmTSrKyck5p7o6MTExGD58+KHHH398z6OPPrrr7bffPutMxugFevGFiIicUZMmTSrp0aPHOUeOHIkOLMvPz4+LiopCnz59ygBg1apV8ampqeVnPsrIUnIWEWlkQrn1KZKaN29u48eP/+rXv/51WmDZwYMHoydPntzp4MGD0dHR0Zaenl42e/bsnZGIM5IYqTuesrOzLS8v75SmfWbCh2GORhqTO2YOjnQI2kelRvXZR0muNLNs/3H5+fk7srKyvq53YHLG5efnt8/KykoPHK9zziIiIh6j5CwiIuIxSs4iIiIeo+QsIiLiMUrOIiIiHqPkLCIi4jG6z1lEpJF5ZsKHYX1l5B0zB9d633SLFi36Hj16dBUAvPnmm22nT5+e9v7772+eOXNm+1atWlXm5OTsGzFiRPrw4cNLb7755gO+6Rrzax/rQ8lZRETCZuHCha2nTZuWtmTJki09evRock/2ChclZxERCYslS5a0uuOOO9LfeeedLb179w76SkgJjZKziIjUW3l5OUePHt3t/fff39S3b99jkY6nodMFYSIiUm+xsbHWr1+/wzNnzmwf6VgaAyVnERGpN5JYtGjRtlWrVrWcMWNGta+DlNAoOYuISFi0bt26aunSpVvmzZuX+Pjjj6sFXQ865ywi0siEcuvT6ZKcnFz53nvvbb744ot7nX322ccDy++8887OM2bMSAOAlJSU8jfffHPb9u3b45KTk8/31Xn44YcLfvaznx0InLYpUXIWEZF6893jDADdunU7XlhYuAYAxowZU+obP3/+/B3Bpq2oqPj8tAfYwKhbW0RExGOUnEVERDxGyVlERMRjlJxFREQ8RslZRETEY5ScRUREPEa3UomINDK/v254WF8Zedebi+v0ykifkpKS6HHjxqWtXLmylZkhOzv78KxZswoSExMrKysrccstt6QtX768DUlr1qyZzZs378trr7323PLy8qjS0tLoY8eORSUnJx8HgIULF27t2bNnk3nLlZKziIicFmPGjOmckZFx7K233loLAHfe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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster c:\n",
" term cpu ram\n",
"0 -1 0.003376 0.003812\n",
"1 6 0.029399 0.033249\n",
"2 5 0.012294 0.020809\n",
"3 4 0.082099 0.080454\n",
"4 8 0.000093 0.000088\n",
"5 7 0.872740 0.861588\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster d:\n",
" term cpu ram\n",
"0 -1 0.004995 0.004822\n",
"1 6 0.008666 0.008914\n",
"2 5 0.030288 0.039214\n",
"3 4 0.076002 0.090656\n",
"4 8 0.000039 0.000030\n",
"5 7 0.880011 0.856364\n"
]
},
{
"data": {
"image/png": "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//4Wt912W+vFixdvnz59etz+/fujN23atD4yMhJfffVVdJMmTcrWrFmzCQCef/75+Ozs7IYzZ87cXb1rUT2UnEVEJOzWrVsXs3bt2oaLFi3a7hv39NNP723dunW39evXx+zbty86MTHxVGRkJACgbdu2ZzxNrC7TOWcREQm7nJyc+mlpaSeiov7dBoyKikJaWtqJ1atX1//pT3966OOPP27WqVOntLvvvjt52bJlsdUYrucoOYuIyAXXtm3bU9u2bVuXmZm5JyIiAgMHDuy4YMGCxtUdl1eElJxJDiC5meQ2klPKqXMTyQ0k15N8K7xhiohITZKenn5yw4YNDUpLS78bV1paig0bNjRIT08/CQCxsbF20003HXn55Zf3TJgwYd/8+fObVVe8XlNpciYZCWAqgGsApAG4hWRaQJ32AB4C8AMz6wLgF+EPVUREaoquXbsWdenS5cTkyZOTfOMmT56c1LVr1xNdu3Yt+uc//9lg586d0YCTtNeuXRvbunXrOnM1dmVCuSCsF4BtZrYdAEi+A+AGABv86twNYKqZHQYAMzsY7kBFRCQ0odz6FG7ubU/fvfZx7NixB2bNmrVz1KhRrVJSUroCQI8ePY7PmjVrJwDs378/6p577mldXFwcAQDf+973jk+ZMkW5wxVKcm4JINdveA+A3gF1OgAAyWUAIgE8amYfhiVCERHxvLKysqAHBAsWLNgRbPzQoUOPDB069Eh58xs/fnwBgIIwhVfjhOtWqigA7QFcBSAZwFKS3czsG/9KJEcDGA0ArVq1CtOiRUREapdQLgjLA5DiN5zsjvO3B8BCMztlZjsAbIGTrE9jZq+YWYaZZSQkJJxrzCIiIrVaKMn5CwDtSbYhWQ/AcAALA+q8B6fVDJLN4XRzb4eIiFwIZWVlZazuIOTsuN9ZWbCySpOzmZUAGAdgCYCNAOaY2XqSmSSvd6stAVBAcgOATwFMMrM6e65AROQCW5efn99UCbrmKCsrY35+flMA64KVh3TO2cyyAGQFjHvE77MBmOj+iYjIBVRSUjJq//790/fv398VerhUTVEGYF1JScmoYIV6traISA3Xs2fPgwCur7Si1Bg6whIREfEYJWcRERGPUXIWERHxGCVnERERj1FyFhER8RglZxEREY9RchYREfEYJWcRERGPUXIWERHxGCVnERERj1FyFhER8RglZxER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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cluster e:\n",
"Empty DataFrame\n",
"Columns: [term, cpu, ram]\n",
"Index: []\n"
]
},
{
"ename": "ValueError",
"evalue": "shape mismatch: objects cannot be broadcast to a single shape",
"output_type": "error",
"traceback": [
"\u001b[0;31m-------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-15-ee16b0a16445>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 2\u001b[0m df = pd.read_csv(glob.glob(DIR + cluster + \"_actual/part-*\")[0], header=None,\n\u001b[1;32m 3\u001b[0m names=[\"term\", \"cpu\", \"ram\"])\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mplot_df\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcluster\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Actual\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mcluster\u001b[0m \u001b[0;32min\u001b[0m \u001b[0;34m\"abcdefgh\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m<ipython-input-14-a2af2d826382>\u001b[0m in \u001b[0;36mplot_df\u001b[0;34m(df, cluster, type_of_data)\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mt\u001b[0m \u001b[0;32min\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m6\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m7\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m8\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m lines.append(plt.bar(x=df[df.term==t][\"kind\"], bottom=bottom,\n\u001b[0;32m---> 25\u001b[0;31m height=df[df.term==t][\"percent\"]))\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0mbottom\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mterm\u001b[0m\u001b[0;34m==\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"percent\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 27\u001b[0m plt.legend(lines, [\"No termination\", \"EVICT\", \"FAIL\", \"FINISH\", \"KILL\", \"LOST\"],\n",
"\u001b[0;32m~/python-venv/lib/python3.6/site-packages/matplotlib/pyplot.py\u001b[0m in \u001b[0;36mbar\u001b[0;34m(x, height, width, bottom, align, data, **kwargs)\u001b[0m\n\u001b[1;32m 2487\u001b[0m return gca().bar(\n\u001b[1;32m 2488\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheight\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwidth\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mwidth\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbottom\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mbottom\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0malign\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0malign\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2489\u001b[0;31m **({\"data\": data} if data is not None else {}), **kwargs)\n\u001b[0m\u001b[1;32m 2490\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2491\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/python-venv/lib/python3.6/site-packages/matplotlib/__init__.py\u001b[0m in \u001b[0;36minner\u001b[0;34m(ax, data, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1445\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minner\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1446\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdata\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1447\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0mmap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msanitize_sequence\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1448\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1449\u001b[0m \u001b[0mbound\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnew_sig\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbind\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/python-venv/lib/python3.6/site-packages/matplotlib/axes/_axes.py\u001b[0m in \u001b[0;36mbar\u001b[0;34m(self, x, height, width, bottom, align, **kwargs)\u001b[0m\n\u001b[1;32m 2430\u001b[0m x, height, width, y, linewidth = np.broadcast_arrays(\n\u001b[1;32m 2431\u001b[0m \u001b[0;31m# Make args iterable too.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2432\u001b[0;31m np.atleast_1d(x), height, width, y, linewidth)\n\u001b[0m\u001b[1;32m 2433\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2434\u001b[0m \u001b[0;31m# Now that units have been converted, set the tick locations.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m<__array_function__ internals>\u001b[0m in \u001b[0;36mbroadcast_arrays\u001b[0;34m(*args, **kwargs)\u001b[0m\n",
"\u001b[0;32m~/python-venv/lib/python3.6/site-packages/numpy/lib/stride_tricks.py\u001b[0m in \u001b[0;36mbroadcast_arrays\u001b[0;34m(subok, *args)\u001b[0m\n\u001b[1;32m 256\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_m\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msubok\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msubok\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0m_m\u001b[0m \u001b[0;32min\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 257\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 258\u001b[0;31m \u001b[0mshape\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_broadcast_shape\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 259\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 260\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mall\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mshape\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0marray\u001b[0m \u001b[0;32min\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/python-venv/lib/python3.6/site-packages/numpy/lib/stride_tricks.py\u001b[0m in \u001b[0;36m_broadcast_shape\u001b[0;34m(*args)\u001b[0m\n\u001b[1;32m 187\u001b[0m \u001b[0;31m# use the old-iterator because np.nditer does not handle size 0 arrays\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 188\u001b[0m \u001b[0;31m# consistently\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 189\u001b[0;31m \u001b[0mb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbroadcast\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m32\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 190\u001b[0m \u001b[0;31m# unfortunately, it cannot handle 32 or more arguments directly\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 191\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mpos\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m32\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m31\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mValueError\u001b[0m: shape mismatch: objects cannot be broadcast to a single shape"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"for cluster in \"abcdefgh\":\n",
" df = pd.read_csv(glob.glob(DIR + cluster + \"_actual/part-*\")[0], header=None,\n",
" names=[\"term\", \"cpu\", \"ram\"])\n",
" plot_df(df, cluster, \"Actual\")\n",
" \n",
"for cluster in \"abcdefgh\":\n",
" data = None\n",
" with open(DIR + cluster + \"_res_micros_requested.json\", \"r\") as f:\n",
" data = json.loads(f.read())\n",
" dfd = {'term': [], 'cpu': [], 'ram': []}\n",
" for term in [-1,4,5,6,7,8]:\n",
" dfd['term'].append(term)\n",
" dfd['cpu'].append(float(data[\"cpu-\" + (\"None\" if term == -1 else str(term))]))\n",
" dfd['ram'].append(float(data[\"ram-\" + (\"None\" if term == -1 else str(term))]))\n",
" df = pandas.DataFrame(dfd, columns=['term', 'cpu', 'ram'])\n",
" plot_df(df, cluster, \"Requested\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "descending-caribbean",
"metadata": {},
"outputs": [],
"source": []
}
],
"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.6.9"
}
},
"nbformat": 4,
"nbformat_minor": 5
}