From c68f343bc10dbb9a581c0ae63ea9158cdf87a1fa Mon Sep 17 00:00:00 2001 From: "Claudio Maggioni (maggicl)" Date: Wed, 28 Apr 2021 14:59:45 +0200 Subject: [PATCH] tab 3/4 notebook --- figure_9/figure_9.ipynb | 8 - status.ods | Bin 20683 -> 20718 bytes table_iii/table_iii_iv.ipynb | 2446 ++++++++++++++++++++++++++++++++++ table_iii/table_iii_iv.pdf | Bin 0 -> 45327 bytes 4 files changed, 2446 insertions(+), 8 deletions(-) create mode 100644 table_iii/table_iii_iv.ipynb create mode 100644 table_iii/table_iii_iv.pdf diff --git a/figure_9/figure_9.ipynb b/figure_9/figure_9.ipynb index d1e24b70..43abae50 100644 --- a/figure_9/figure_9.ipynb +++ b/figure_9/figure_9.ipynb @@ -27,14 +27,6 @@ "DIR = \"/home/claudio/hdd/git/bachelorThesis/figure_9/\"" ] }, - { - "cell_type": "code", - "execution_count": 3, - "id": "87bfcdfc-6fee-4cb5-8054-d278700bbbee", - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "code", "execution_count": 15, diff --git a/status.ods b/status.ods index b2e7492c552f4c56aef33ef045bb063f12723563..f06eea5addb011677d213d7c0ae380fb82b2894c 100644 GIT binary patch delta 10697 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

V8s%u2QE@}!#Oi9gNYYL4yt~_9j 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 delta 10666 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 diff --git a/table_iii/table_iii_iv.ipynb b/table_iii/table_iii_iv.ipynb new file mode 100644 index 00000000..3fa39331 --- /dev/null +++ b/table_iii/table_iii_iv.ipynb @@ -0,0 +1,2446 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "black-funeral", + "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\n", + "import numpy as np\n", + "from IPython.display import display, Markdown" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "68c2f54a-f838-4d41-af1e-d63f13f3d894", + "metadata": {}, + "outputs": [], + "source": [ + "DIR = \"/home/claudio/hdd/git/bachelorThesis/table_iii/\"" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "d162510b-bf0d-46a8-9954-05f6475f52ae", + "metadata": {}, + "outputs": [], + "source": [ + "NAMES = {-1: \"No termination\", 0: \"SUBMIT\", 1: \"QUEUE\", 2: \"ENABLE\", \n", + " 3: \"SCHEDULE\", 4: \"EVICT\", 5: \"FAIL\", 6: \"FINISH\",\n", + " 7: \"KILL\", 8: \"LOST\", 9: \"UPDATE_PENDING\", 10: \"UPDATE_RUNNING\"}\n", + "\n", + "def rename(df, new, old):\n", + " df.rename(columns={old: new}, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "2eee4cb8-19c4-4d0f-a6c4-148145dedfa4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "# Table III" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "### Cluster A" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Task termination# Evts. 95% p.tile# Evts. mean# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0KILL58.027.3959252.3495790.2138590.0034123.3959960.089576
1FINISH9.012.4053700.0193210.0037792.1534320.0081500.008989
2FAIL108.050.0395560.28777811.0618640.0020980.4676560.053144
3LOST7.08.8471450.0833480.0018210.3841901.3299101.007933
4EVICT2924.0428.55068973.6935950.7685530.00017928.7661640.845501
5No termination84.014.8185230.0000000.0000000.0000000.0000000.000000
\n", + "
" + ], + "text/plain": [ + " Task termination # Evts. 95% p.tile # Evts. mean # EVICT Evts. mean \\\n", + "0 KILL 58.0 27.395925 2.349579 \n", + "1 FINISH 9.0 12.405370 0.019321 \n", + "2 FAIL 108.0 50.039556 0.287778 \n", + "3 LOST 7.0 8.847145 0.083348 \n", + "4 EVICT 2924.0 428.550689 73.693595 \n", + "5 No termination 84.0 14.818523 0.000000 \n", + "\n", + " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", + "0 0.213859 0.003412 3.395996 \n", + "1 0.003779 2.153432 0.008150 \n", + "2 11.061864 0.002098 0.467656 \n", + "3 0.001821 0.384190 1.329910 \n", + "4 0.768553 0.000179 28.766164 \n", + "5 0.000000 0.000000 0.000000 \n", + "\n", + " # LOST Evts. mean \n", + "0 0.089576 \n", + "1 0.008989 \n", + "2 0.053144 \n", + "3 1.007933 \n", + "4 0.845501 \n", + "5 0.000000 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "### Cluster B" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Task termination# Evts. 95% p.tile# Evts. mean# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0KILL60.040.9010413.3514960.2763050.0036565.5410790.033457
1FINISH20.017.2775960.0204440.0206282.9425790.0116400.016278
2FAIL260.086.7724190.51806119.6567980.0005600.6753920.088523
3LOST14.025.6904550.2572310.0074201.9283513.5154362.015153
4EVICT1578.0345.70555964.8165180.2402140.00000017.9615391.028401
5No termination32.013.0181300.0000000.0000000.0000000.0000000.000000
\n", + "
" + ], + "text/plain": [ + " Task termination # Evts. 95% p.tile # Evts. mean # EVICT Evts. mean \\\n", + "0 KILL 60.0 40.901041 3.351496 \n", + "1 FINISH 20.0 17.277596 0.020444 \n", + "2 FAIL 260.0 86.772419 0.518061 \n", + "3 LOST 14.0 25.690455 0.257231 \n", + "4 EVICT 1578.0 345.705559 64.816518 \n", + "5 No termination 32.0 13.018130 0.000000 \n", + "\n", + " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", + "0 0.276305 0.003656 5.541079 \n", + "1 0.020628 2.942579 0.011640 \n", + "2 19.656798 0.000560 0.675392 \n", + "3 0.007420 1.928351 3.515436 \n", + "4 0.240214 0.000000 17.961539 \n", + "5 0.000000 0.000000 0.000000 \n", + "\n", + " # LOST Evts. mean \n", + "0 0.033457 \n", + "1 0.016278 \n", + "2 0.088523 \n", + "3 2.015153 \n", + "4 1.028401 \n", + "5 0.000000 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "### Cluster C" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Task termination# Evts. 95% p.tile# Evts. mean# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0KILL32.024.2308871.5332370.1160820.0039943.7991110.013670
1FINISH18.015.2426280.0179290.0127012.4706540.0060200.006414
2FAIL156.0187.0308940.77282348.4457732.0353780.7560150.133687
3LOST28.022.3854460.4113650.0075691.4122012.7513531.998665
4EVICT1748.0404.10866973.7155271.8128160.00016622.9080220.546198
5No termination96.021.3151660.0000000.0000000.0000000.0000000.000000
\n", + "
" + ], + "text/plain": [ + " Task termination # Evts. 95% p.tile # Evts. mean # EVICT Evts. mean \\\n", + "0 KILL 32.0 24.230887 1.533237 \n", + "1 FINISH 18.0 15.242628 0.017929 \n", + "2 FAIL 156.0 187.030894 0.772823 \n", + "3 LOST 28.0 22.385446 0.411365 \n", + "4 EVICT 1748.0 404.108669 73.715527 \n", + "5 No termination 96.0 21.315166 0.000000 \n", + "\n", + " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", + "0 0.116082 0.003994 3.799111 \n", + "1 0.012701 2.470654 0.006020 \n", + "2 48.445773 2.035378 0.756015 \n", + "3 0.007569 1.412201 2.751353 \n", + "4 1.812816 0.000166 22.908022 \n", + "5 0.000000 0.000000 0.000000 \n", + "\n", + " # LOST Evts. mean \n", + "0 0.013670 \n", + "1 0.006414 \n", + "2 0.133687 \n", + "3 1.998665 \n", + "4 0.546198 \n", + "5 0.000000 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "### Cluster D" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Task termination# Evts. 95% p.tile# Evts. mean# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0KILL32.029.9538731.9601340.1505210.0023854.6824110.016156
1FINISH18.023.1056150.0586510.0190513.7890500.0097850.018699
2FAIL269.0228.0049750.49631658.9682100.8095202.0403960.324754
3LOST20.017.0657210.0147600.0035770.0792894.6362831.999794
4EVICT1478.0323.36613062.0005100.7002680.00037314.0575140.627592
5No termination103.027.8674030.0000000.0000000.0000000.0000000.000000
\n", + "
" + ], + "text/plain": [ + " Task termination # Evts. 95% p.tile # Evts. mean # EVICT Evts. mean \\\n", + "0 KILL 32.0 29.953873 1.960134 \n", + "1 FINISH 18.0 23.105615 0.058651 \n", + "2 FAIL 269.0 228.004975 0.496316 \n", + "3 LOST 20.0 17.065721 0.014760 \n", + "4 EVICT 1478.0 323.366130 62.000510 \n", + "5 No termination 103.0 27.867403 0.000000 \n", + "\n", + " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", + "0 0.150521 0.002385 4.682411 \n", + "1 0.019051 3.789050 0.009785 \n", + "2 58.968210 0.809520 2.040396 \n", + "3 0.003577 0.079289 4.636283 \n", + "4 0.700268 0.000373 14.057514 \n", + "5 0.000000 0.000000 0.000000 \n", + "\n", + " # LOST Evts. mean \n", + "0 0.016156 \n", + "1 0.018699 \n", + "2 0.324754 \n", + "3 1.999794 \n", + "4 0.627592 \n", + "5 0.000000 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "### Cluster E" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Task termination# Evts. 95% p.tile# Evts. mean# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0KILL258.055.8774751.2879170.0569090.00018512.1598800.054997
1FINISH14.011.9768060.0138790.0084351.9986770.0082410.026641
2FAIL138.0450.5269370.457703111.4710470.0000000.4557050.187991
3LOST14.011.8999080.0000000.0000000.0339763.1310071.792164
4EVICT310.084.64518911.7807540.1061190.0000905.7909600.654955
5No termination34.07.3491650.0000000.0000000.0000000.0000000.000000
\n", + "
" + ], + "text/plain": [ + " Task termination # Evts. 95% p.tile # Evts. mean # EVICT Evts. mean \\\n", + "0 KILL 258.0 55.877475 1.287917 \n", + "1 FINISH 14.0 11.976806 0.013879 \n", + "2 FAIL 138.0 450.526937 0.457703 \n", + "3 LOST 14.0 11.899908 0.000000 \n", + "4 EVICT 310.0 84.645189 11.780754 \n", + "5 No termination 34.0 7.349165 0.000000 \n", + "\n", + " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", + "0 0.056909 0.000185 12.159880 \n", + "1 0.008435 1.998677 0.008241 \n", + "2 111.471047 0.000000 0.455705 \n", + "3 0.000000 0.033976 3.131007 \n", + "4 0.106119 0.000090 5.790960 \n", + "5 0.000000 0.000000 0.000000 \n", + "\n", + " # LOST Evts. mean \n", + "0 0.054997 \n", + "1 0.026641 \n", + "2 0.187991 \n", + "3 1.792164 \n", + "4 0.654955 \n", + "5 0.000000 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "### Cluster F" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Task termination# Evts. 95% p.tile# Evts. mean# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0KILL162.045.0395570.3840650.0984300.0011789.8042870.037783
1FINISH20.019.8997090.0193810.0035103.0078390.0979340.023707
2FAIL220.0164.0430730.27935239.2574070.0000231.5497950.203997
3LOST36.025.0022190.0118150.0009090.1495867.2835342.000428
4EVICT510.0302.26234723.9736210.1923940.00009445.9799970.374789
5No termination24.07.7849050.0000000.0000000.0000000.0000000.000000
\n", + "
" + ], + "text/plain": [ + " Task termination # Evts. 95% p.tile # Evts. mean # EVICT Evts. mean \\\n", + "0 KILL 162.0 45.039557 0.384065 \n", + "1 FINISH 20.0 19.899709 0.019381 \n", + "2 FAIL 220.0 164.043073 0.279352 \n", + "3 LOST 36.0 25.002219 0.011815 \n", + "4 EVICT 510.0 302.262347 23.973621 \n", + "5 No termination 24.0 7.784905 0.000000 \n", + "\n", + " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", + "0 0.098430 0.001178 9.804287 \n", + "1 0.003510 3.007839 0.097934 \n", + "2 39.257407 0.000023 1.549795 \n", + "3 0.000909 0.149586 7.283534 \n", + "4 0.192394 0.000094 45.979997 \n", + "5 0.000000 0.000000 0.000000 \n", + "\n", + " # LOST Evts. mean \n", + "0 0.037783 \n", + "1 0.023707 \n", + "2 0.203997 \n", + "3 2.000428 \n", + "4 0.374789 \n", + "5 0.000000 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "### Cluster G" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Task termination# Evts. 95% p.tile# Evts. mean# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0KILL641.00130.0541436.9092040.1350730.00003325.2757690.131106
1FINISH18.00105.2404180.0152280.00165514.1537750.0048790.158300
2FAIL40.0040.1215530.0161118.5927280.0000000.3388830.011310
3LOST4602.25576.3841201.9313300.36051548.09442135.5965673.534335
4EVICT2015.00555.57474377.4290540.3031270.00000058.2993300.653819
5No termination30.009.5035530.0000000.0000000.0000000.0000000.000000
\n", + "
" + ], + "text/plain": [ + " Task termination # Evts. 95% p.tile # Evts. mean # EVICT Evts. mean \\\n", + "0 KILL 641.00 130.054143 6.909204 \n", + "1 FINISH 18.00 105.240418 0.015228 \n", + "2 FAIL 40.00 40.121553 0.016111 \n", + "3 LOST 4602.25 576.384120 1.931330 \n", + "4 EVICT 2015.00 555.574743 77.429054 \n", + "5 No termination 30.00 9.503553 0.000000 \n", + "\n", + " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", + "0 0.135073 0.000033 25.275769 \n", + "1 0.001655 14.153775 0.004879 \n", + "2 8.592728 0.000000 0.338883 \n", + "3 0.360515 48.094421 35.596567 \n", + "4 0.303127 0.000000 58.299330 \n", + "5 0.000000 0.000000 0.000000 \n", + "\n", + " # LOST Evts. mean \n", + "0 0.131106 \n", + "1 0.158300 \n", + "2 0.011310 \n", + "3 3.534335 \n", + "4 0.653819 \n", + "5 0.000000 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "### Cluster H" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Task termination# Evts. 95% p.tile# Evts. mean# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0KILL388.074.4255420.6333380.1696660.00023117.1726240.062799
1FINISH22.023.9782940.0237000.0141293.6325290.0111110.028482
2FAIL487.0170.1537010.60048337.5999420.0000002.8666470.343806
3LOST386.494.6666671.4933332.4000000.57333314.0400003.480000
4EVICT206.075.6580646.7325440.8371540.0000007.1647220.421745
5No termination18.08.1235060.0000000.0000000.0000000.0000000.000000
\n", + "
" + ], + "text/plain": [ + " Task termination # Evts. 95% p.tile # Evts. mean # EVICT Evts. mean \\\n", + "0 KILL 388.0 74.425542 0.633338 \n", + "1 FINISH 22.0 23.978294 0.023700 \n", + "2 FAIL 487.0 170.153701 0.600483 \n", + "3 LOST 386.4 94.666667 1.493333 \n", + "4 EVICT 206.0 75.658064 6.732544 \n", + "5 No termination 18.0 8.123506 0.000000 \n", + "\n", + " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", + "0 0.169666 0.000231 17.172624 \n", + "1 0.014129 3.632529 0.011111 \n", + "2 37.599942 0.000000 2.866647 \n", + "3 2.400000 0.573333 14.040000 \n", + "4 0.837154 0.000000 7.164722 \n", + "5 0.000000 0.000000 0.000000 \n", + "\n", + " # LOST Evts. mean \n", + "0 0.062799 \n", + "1 0.028482 \n", + "2 0.343806 \n", + "3 3.480000 \n", + "4 0.421745 \n", + "5 0.000000 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(Markdown(\"# Table III\"))\n", + "for cluster in \"abcdefgh\":\n", + " df = pd.read_csv(glob.glob(DIR + \"/table-iii-\" + cluster + \".csv/part-00000-*\")[0])\n", + " rename(df, \"# Evts. mean\", \"mean\")\n", + " rename(df, \"# Evts. 95% p.tile\", \"%95\")\n", + " \n", + " for i in [-1,4,5,6,7,8]:\n", + " df.loc[df.task_term == i, \"task_term\"] = NAMES[i]\n", + " rename(df, \"# \" + NAMES[i] + \" Evts. mean\", \"avg_count_\" + str(i))\n", + " for i in [0,1,2,3,9,10]:\n", + " del df[\"avg_count_\" + str(i)]\n", + " rename(df, \"Task termination\", \"task_term\")\n", + " display(Markdown(\"### Cluster \" + cluster.upper()))\n", + " display(df)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "d31634a7-9d6b-4e95-abc7-e724fea232ed", + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "# Table IV" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "### Cluster A" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Job termination# Tasks mean# Tasks 95% p.tile# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0No termination92.359436174.323.2639513.45447423.04759734.5656080.707709
1EVICT-1.000000-1.0NaNNaNNaNNaNNaN
2FAIL90.792728499.00.6949420.6835560.0859571.8495870.009730
3FINISH1.1870921.00.0046960.0013411.0726230.0243960.000952
4KILL16.53317110.01.0454190.0738670.4613871.1887200.044610
5LOST223.2065931689.60.0000000.0000000.0000001.0340820.974598
\n", + "
" + ], + "text/plain": [ + " Job termination # Tasks mean # Tasks 95% p.tile # EVICT Evts. mean \\\n", + "0 No termination 92.359436 174.3 23.263951 \n", + "1 EVICT -1.000000 -1.0 NaN \n", + "2 FAIL 90.792728 499.0 0.694942 \n", + "3 FINISH 1.187092 1.0 0.004696 \n", + "4 KILL 16.533171 10.0 1.045419 \n", + "5 LOST 223.206593 1689.6 0.000000 \n", + "\n", + " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", + "0 3.454474 23.047597 34.565608 \n", + "1 NaN NaN NaN \n", + "2 0.683556 0.085957 1.849587 \n", + "3 0.001341 1.072623 0.024396 \n", + "4 0.073867 0.461387 1.188720 \n", + "5 0.000000 0.000000 1.034082 \n", + "\n", + " # LOST Evts. mean \n", + "0 0.707709 \n", + "1 NaN \n", + "2 0.009730 \n", + "3 0.000952 \n", + "4 0.044610 \n", + "5 0.974598 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "### Cluster B" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Job termination# Tasks mean# Tasks 95% p.tile# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0No termination112.422759169.834.6811610.71124213.37953338.7941880.780483
1EVICT1.0000001.01.0000000.0000000.0000000.0000000.000000
2FAIL74.367804374.02.0033551.9937650.2665844.9441450.034526
3FINISH6.30429910.00.0223800.0084762.3493040.0127290.006484
4KILL69.853370234.01.6964490.1578330.6137483.0086780.012092
5LOST320.020202459.80.0000000.0000000.0000002.9599461.996875
\n", + "
" + ], + "text/plain": [ + " Job termination # Tasks mean # Tasks 95% p.tile # EVICT Evts. mean \\\n", + "0 No termination 112.422759 169.8 34.681161 \n", + "1 EVICT 1.000000 1.0 1.000000 \n", + "2 FAIL 74.367804 374.0 2.003355 \n", + "3 FINISH 6.304299 10.0 0.022380 \n", + "4 KILL 69.853370 234.0 1.696449 \n", + "5 LOST 320.020202 459.8 0.000000 \n", + "\n", + " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", + "0 0.711242 13.379533 38.794188 \n", + "1 0.000000 0.000000 0.000000 \n", + "2 1.993765 0.266584 4.944145 \n", + "3 0.008476 2.349304 0.012729 \n", + "4 0.157833 0.613748 3.008678 \n", + "5 0.000000 0.000000 2.959946 \n", + "\n", + " # LOST Evts. mean \n", + "0 0.780483 \n", + "1 0.000000 \n", + "2 0.034526 \n", + "3 0.006484 \n", + "4 0.012092 \n", + "5 1.996875 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "### Cluster C" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Job termination# Tasks mean# Tasks 95% p.tile# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0No termination96.399561100.055.2769737.55290623.84886741.5786690.664107
1EVICT1.0000001.01.0008290.0000000.0000000.0004150.000000
2FAIL41.982301200.03.4836060.9975920.3764383.9983690.046439
3FINISH1.9914851.00.0218060.0169141.5650340.0174010.001803
4KILL110.680808652.00.6273340.0590760.6564262.2667940.006258
5LOST38.87009148.60.0000310.0003110.0000002.6207211.833872
\n", + "
" + ], + "text/plain": [ + " Job termination # Tasks mean # Tasks 95% p.tile # EVICT Evts. mean \\\n", + "0 No termination 96.399561 100.0 55.276973 \n", + "1 EVICT 1.000000 1.0 1.000829 \n", + "2 FAIL 41.982301 200.0 3.483606 \n", + "3 FINISH 1.991485 1.0 0.021806 \n", + "4 KILL 110.680808 652.0 0.627334 \n", + "5 LOST 38.870091 48.6 0.000031 \n", + "\n", + " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", + "0 7.552906 23.848867 41.578669 \n", + "1 0.000000 0.000000 0.000415 \n", + "2 0.997592 0.376438 3.998369 \n", + "3 0.016914 1.565034 0.017401 \n", + "4 0.059076 0.656426 2.266794 \n", + "5 0.000311 0.000000 2.620721 \n", + "\n", + " # LOST Evts. mean \n", + "0 0.664107 \n", + "1 0.000000 \n", + "2 0.046439 \n", + "3 0.001803 \n", + "4 0.006258 \n", + "5 1.833872 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "### Cluster D" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Job termination# Tasks mean# Tasks 95% p.tile# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0No termination103.889987120.0041.4215327.60480818.17947647.6035020.661826
1EVICT1.0000001.001.0000000.0000000.0000000.0000000.000000
2FAIL43.355682250.006.1119930.9486020.5313906.4977840.041077
3FINISH2.1092602.000.2683750.0126141.7233920.0185670.005052
4KILL89.647948283.001.0131140.0543740.2833133.2556750.006664
5LOST271.4417482620.750.0000000.0000000.0000005.9380691.647084
\n", + "
" + ], + "text/plain": [ + " Job termination # Tasks mean # Tasks 95% p.tile # EVICT Evts. mean \\\n", + "0 No termination 103.889987 120.00 41.421532 \n", + "1 EVICT 1.000000 1.00 1.000000 \n", + "2 FAIL 43.355682 250.00 6.111993 \n", + "3 FINISH 2.109260 2.00 0.268375 \n", + "4 KILL 89.647948 283.00 1.013114 \n", + "5 LOST 271.441748 2620.75 0.000000 \n", + "\n", + " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", + "0 7.604808 18.179476 47.603502 \n", + "1 0.000000 0.000000 0.000000 \n", + "2 0.948602 0.531390 6.497784 \n", + "3 0.012614 1.723392 0.018567 \n", + "4 0.054374 0.283313 3.255675 \n", + "5 0.000000 0.000000 5.938069 \n", + "\n", + " # LOST Evts. mean \n", + "0 0.661826 \n", + "1 0.000000 \n", + "2 0.041077 \n", + "3 0.005052 \n", + "4 0.006664 \n", + "5 1.647084 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "### Cluster E" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Job termination# Tasks mean# Tasks 95% p.tile# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0No termination350.929407596.07.2043912.0744230.12629046.6460650.378274
1EVICT1.0000001.01.0000000.0000000.0000000.0000000.000000
2FAIL23.08112525.00.2465290.6655460.7167201.5881190.066467
3FINISH7.7760852.00.0186770.0290731.9344880.0209290.064920
4KILL88.790215309.00.7062930.0286180.4610847.5723010.029122
5LOST5.3741505.00.0000000.0000000.0000003.2344941.813924
\n", + "
" + ], + "text/plain": [ + " Job termination # Tasks mean # Tasks 95% p.tile # EVICT Evts. mean \\\n", + "0 No termination 350.929407 596.0 7.204391 \n", + "1 EVICT 1.000000 1.0 1.000000 \n", + "2 FAIL 23.081125 25.0 0.246529 \n", + "3 FINISH 7.776085 2.0 0.018677 \n", + "4 KILL 88.790215 309.0 0.706293 \n", + "5 LOST 5.374150 5.0 0.000000 \n", + "\n", + " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", + "0 2.074423 0.126290 46.646065 \n", + "1 0.000000 0.000000 0.000000 \n", + "2 0.665546 0.716720 1.588119 \n", + "3 0.029073 1.934488 0.020929 \n", + "4 0.028618 0.461084 7.572301 \n", + "5 0.000000 0.000000 3.234494 \n", + "\n", + " # LOST Evts. mean \n", + "0 0.378274 \n", + "1 0.000000 \n", + "2 0.066467 \n", + "3 0.064920 \n", + "4 0.029122 \n", + "5 1.813924 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "### Cluster F" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Job termination# Tasks mean# Tasks 95% p.tile# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0No termination217.718640379.44.3046761.3150214.97112248.1184650.464429
1EVICT1.0000001.01.0000000.0000000.0000000.0000000.000000
2FAIL17.1612518.00.6213270.5463560.4262657.5592440.034773
3FINISH2.9408432.00.0147040.0510141.6698600.1620420.002623
4KILL103.888843361.00.1826300.0639140.4166845.8243110.014161
5LOST3736.50000018823.40.0014910.0000380.0000006.2981401.429604
\n", + "
" + ], + "text/plain": [ + " Job termination # Tasks mean # Tasks 95% p.tile # EVICT Evts. mean \\\n", + "0 No termination 217.718640 379.4 4.304676 \n", + "1 EVICT 1.000000 1.0 1.000000 \n", + "2 FAIL 17.161251 8.0 0.621327 \n", + "3 FINISH 2.940843 2.0 0.014704 \n", + "4 KILL 103.888843 361.0 0.182630 \n", + "5 LOST 3736.500000 18823.4 0.001491 \n", + "\n", + " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", + "0 1.315021 4.971122 48.118465 \n", + "1 0.000000 0.000000 0.000000 \n", + "2 0.546356 0.426265 7.559244 \n", + "3 0.051014 1.669860 0.162042 \n", + "4 0.063914 0.416684 5.824311 \n", + "5 0.000038 0.000000 6.298140 \n", + "\n", + " # LOST Evts. mean \n", + "0 0.464429 \n", + "1 0.000000 \n", + "2 0.034773 \n", + "3 0.002623 \n", + "4 0.014161 \n", + "5 1.429604 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "### Cluster G" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Job termination# Tasks mean# Tasks 95% p.tile# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0No termination342.090034599.1014.1844050.62618623.83601746.0029170.735801
1EVICT1.0000001.001.0000000.0000000.0000000.0000000.000000
2FAIL51.834803250.000.5555323.3348480.60756020.3519920.176242
3FINISH8.51916636.000.0017330.6298091.7596770.0054520.004575
4KILL37.054914100.005.6871720.0646400.08037019.1662600.059132
5LOST190.500000358.350.0000000.0000000.0000001.9947511.994751
\n", + "
" + ], + "text/plain": [ + " Job termination # Tasks mean # Tasks 95% p.tile # EVICT Evts. mean \\\n", + "0 No termination 342.090034 599.10 14.184405 \n", + "1 EVICT 1.000000 1.00 1.000000 \n", + "2 FAIL 51.834803 250.00 0.555532 \n", + "3 FINISH 8.519166 36.00 0.001733 \n", + "4 KILL 37.054914 100.00 5.687172 \n", + "5 LOST 190.500000 358.35 0.000000 \n", + "\n", + " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", + "0 0.626186 23.836017 46.002917 \n", + "1 0.000000 0.000000 0.000000 \n", + "2 3.334848 0.607560 20.351992 \n", + "3 0.629809 1.759677 0.005452 \n", + "4 0.064640 0.080370 19.166260 \n", + "5 0.000000 0.000000 1.994751 \n", + "\n", + " # LOST Evts. mean \n", + "0 0.735801 \n", + "1 0.000000 \n", + "2 0.176242 \n", + "3 0.004575 \n", + "4 0.059132 \n", + "5 1.994751 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "### Cluster H" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Job termination# Tasks mean# Tasks 95% p.tile# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0No termination321.133053546.93.4700780.9078013.31690244.5358240.315120
1EVICT1.0000001.01.0000000.0000000.0000000.0000000.000000
2FAIL20.5042931.00.1140902.3000360.98063512.8334660.046833
3FINISH4.27819314.00.0054060.1528141.7780380.0135670.012663
4KILL11.0227053.00.2355000.1028990.28770111.3369560.031148
5LOST3.40000010.60.0000000.0000000.0000000.2352941.705882
\n", + "
" + ], + "text/plain": [ + " Job termination # Tasks mean # Tasks 95% p.tile # EVICT Evts. mean \\\n", + "0 No termination 321.133053 546.9 3.470078 \n", + "1 EVICT 1.000000 1.0 1.000000 \n", + "2 FAIL 20.504293 1.0 0.114090 \n", + "3 FINISH 4.278193 14.0 0.005406 \n", + "4 KILL 11.022705 3.0 0.235500 \n", + "5 LOST 3.400000 10.6 0.000000 \n", + "\n", + " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", + "0 0.907801 3.316902 44.535824 \n", + "1 0.000000 0.000000 0.000000 \n", + "2 2.300036 0.980635 12.833466 \n", + "3 0.152814 1.778038 0.013567 \n", + "4 0.102899 0.287701 11.336956 \n", + "5 0.000000 0.000000 0.235294 \n", + "\n", + " # LOST Evts. mean \n", + "0 0.315120 \n", + "1 0.000000 \n", + "2 0.046833 \n", + "3 0.012663 \n", + "4 0.031148 \n", + "5 1.705882 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(Markdown(\"# Table IV\"))\n", + "for cluster in \"abcdefgh\":\n", + " df = pd.read_csv(glob.glob(DIR + \"/table-iv-evts-\" + cluster + \".csv/part-00000-*\")[0], header=None,\n", + " names=[\"term\"] + [str(i) for i in range(0,11)])\n", + " df2 = pd.read_csv(glob.glob(DIR + \"/table-iv-tasks-\" + cluster + \".csv/part-00000-*\")[0], header=None,\n", + " names=[\"term\", \"# Tasks mean\", \"# Tasks 95% p.tile\"])\n", + " df[\"term\"] = df[\"term\"].astype(int)\n", + " df2[\"term\"] = df2[\"term\"].astype(int)\n", + " df.sort_values(by=\"term\", inplace=True)\n", + " df2.sort_values(by=\"term\", inplace=True)\n", + " \n", + " df = df2.merge(df, on=\"term\", how=\"outer\")\n", + "\n", + " rename(df, \"# Evts. mean\", \"mean\")\n", + " rename(df, \"# Evts. 95% p.tile\", \"%95\")\n", + " \n", + " for i in [-1,4,5,6,7,8]:\n", + " df.loc[df.term == i, \"term\"] = NAMES[i]\n", + " rename(df, \"# \" + NAMES[i] + \" Evts. mean\", str(i))\n", + " for i in [0,1,2,3,9,10]:\n", + " del df[str(i)]\n", + " rename(df, \"Job termination\", \"term\")\n", + " display(Markdown(\"### Cluster \" + cluster.upper()))\n", + " display(df)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a81da964-f539-49df-8fa3-7b358ea642e1", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "venv", + "language": "python", + "name": "venv" + }, + "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.9.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/table_iii/table_iii_iv.pdf b/table_iii/table_iii_iv.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8372ac9fb8acb9a32e68beed0e29f465b29c639a GIT binary patch literal 45327 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 WJe