From a336f74ce83f9ecbfb41b1103ab36d699ec1d993 Mon Sep 17 00:00:00 2001 From: hoernschen Date: Fri, 27 Nov 2020 05:35:06 +0100 Subject: [PATCH] Changes --- MeasurementEvaluator.ipynb | 237 +++++++++--------- ...743 111111111 Measurement ActivityPub.csv} | 0 ...388 011111111 Measurement ActivityPub.csv} | 0 ...034 211111111 Measurement ActivityPub.csv} | 0 ...678 101111111 Measurement ActivityPub.csv} | 0 ...341 121111111 Measurement ActivityPub.csv} | 0 ...971 110111111 Measurement ActivityPub.csv} | 0 ...616 112111111 Measurement ActivityPub.csv} | 0 ...266 111011111 Measurement ActivityPub.csv} | 0 ...908 111211111 Measurement ActivityPub.csv} | 0 Radar ActivityPub.png | Bin 0 -> 38787 bytes Radar Matrix.png | Bin 0 -> 38518 bytes Spikes | 39 --- summary.csv | 22 ++ 14 files changed, 141 insertions(+), 157 deletions(-) rename MeasurementFiles/ActivityPub/{1602788743 111110101 Measurement ActivityPub.csv => 1602788743 111111111 Measurement ActivityPub.csv} (100%) rename MeasurementFiles/ActivityPub/{1602792388 011110101 Measurement ActivityPub.csv => 1602792388 011111111 Measurement ActivityPub.csv} (100%) rename MeasurementFiles/ActivityPub/{1602796034 211110101 Measurement ActivityPub.csv => 1602796034 211111111 Measurement ActivityPub.csv} (100%) rename MeasurementFiles/ActivityPub/{1602799678 101110101 Measurement ActivityPub.csv => 1602799678 101111111 Measurement ActivityPub.csv} (100%) rename MeasurementFiles/ActivityPub/{1602803341 121110101 Measurement ActivityPub.csv => 1602803341 121111111 Measurement ActivityPub.csv} (100%) rename MeasurementFiles/ActivityPub/{1602806971 110110101 Measurement ActivityPub.csv => 1602806971 110111111 Measurement ActivityPub.csv} (100%) rename MeasurementFiles/ActivityPub/{1602810616 112110101 Measurement ActivityPub.csv => 1602810616 112111111 Measurement ActivityPub.csv} (100%) rename MeasurementFiles/ActivityPub/{1602814266 111010101 Measurement ActivityPub.csv => 1602814266 111011111 Measurement ActivityPub.csv} (100%) rename MeasurementFiles/ActivityPub/{1602817908 111210101 Measurement ActivityPub.csv => 1602817908 111211111 Measurement ActivityPub.csv} (100%) create mode 100644 Radar ActivityPub.png create mode 100644 Radar Matrix.png delete mode 100644 Spikes create mode 100644 summary.csv diff --git a/MeasurementEvaluator.ipynb b/MeasurementEvaluator.ipynb index 797c09f..8ec2bb2 100644 --- a/MeasurementEvaluator.ipynb +++ b/MeasurementEvaluator.ipynb @@ -2,21 +2,9 @@ "cells": [ { "cell_type": "code", - "execution_count": 3, + "execution_count": 1, "metadata": {}, - "outputs": [ - { - "output_type": "error", - "ename": "ModuleNotFoundError", - "evalue": "No module named 'pandas'", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mglob\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mpathlib\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mPath\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mpandas\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mplotly\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgraph_objects\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mgo\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mplotly\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexpress\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mpx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'pandas'" - ] - } - ], + "outputs": [], "source": [ "import os\n", "import time\n", @@ -33,7 +21,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -59,7 +47,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -87,7 +75,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -123,22 +111,22 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ - "def cleanDataIQR(data):\n", + "def cleanDataIQR(data, factor):\n", " Q1=data.quantile(0.25)\n", " Q3=data.quantile(0.75)\n", " IQR=Q3-Q1\n", - " lowqe_bound=Q1 - 10 * IQR\n", - " upper_bound=Q3 + 10 * IQR\n", + " lowqe_bound=Q1 - factor * IQR\n", + " upper_bound=Q3 + factor * IQR\n", " return data[~((data < lowqe_bound) |(data > upper_bound))]" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -171,7 +159,7 @@ "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 \n \n \n \n \n \n \n
AVG[W] L1Min[W] L1Max[W] L1AVG[W] L2Min[W] L2Max[W] L2AVG[W] L3Min[W] L3Max[W] L3
Time
14.10.20 00:00:010.0760.0090.148-0.117-0.1960.0370.052-0.0750.207
14.10.20 00:00:020.1000.0210.178-0.068-0.2090.0070.030-0.1320.176
14.10.20 00:00:030.0900.0020.1860.457-0.2222.7820.027-0.1300.182
14.10.20 00:00:040.073-0.0180.131-0.085-0.1690.0190.055-0.0660.186
14.10.20 00:00:050.1060.0290.169-0.100-0.2230.0270.005-0.1390.176
\n
" }, "metadata": {}, - "execution_count": 5 + "execution_count": 6 } ], "source": [ @@ -194,7 +182,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -253,7 +241,7 @@ "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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
AVG[W] L1Min[W] L1Max[W] L1AVG[W] L2Min[W] L2Max[W] L2AVG[W] L3Min[W] L3Max[W] L3CPU% L1...KB Transmitted L2KB Received L2KB Read L2KB Write L2CPU% L3MEM Used L3KB Transmitted L3KB Received L3KB Read L3KB Write L3
Time
14.10.20 00:00:010.0760.0090.148-0.117-0.1960.0370.052-0.0750.2070.0...0.00.00.00.00.00.00.00.00.00.0
14.10.20 00:00:020.1000.0210.178-0.068-0.2090.0070.030-0.1320.1760.0...0.00.00.00.00.00.00.00.00.00.0
14.10.20 00:00:030.0900.0020.1860.457-0.2222.7820.027-0.1300.1820.0...0.00.00.00.00.00.00.00.00.00.0
14.10.20 00:00:040.073-0.0180.131-0.085-0.1690.0190.055-0.0660.1860.0...0.00.00.00.00.00.00.00.00.00.0
14.10.20 00:00:050.1060.0290.169-0.100-0.2230.0270.005-0.1390.1760.0...0.00.00.00.00.00.00.00.00.00.0
\n

5 rows × 27 columns

\n
" }, "metadata": {}, - "execution_count": 6 + "execution_count": 7 } ], "source": [ @@ -280,7 +268,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -306,7 +294,7 @@ "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 \n \n \n \n \n \n \n
AVG[W] L1Min[W] L1Max[W] L1AVG[W] L2Min[W] L2Max[W] L2AVG[W] L3Min[W] L3Max[W] L3
Time
15.10.20 00:00:019.1577.87813.2656.5156.0046.9637.2106.9397.701
15.10.20 00:00:028.8197.42412.1046.6435.9868.1299.1637.19913.603
15.10.20 00:00:038.2387.4948.6606.1995.3046.5957.5017.0578.369
15.10.20 00:00:048.2697.5548.9166.5226.1756.8117.2216.7287.801
15.10.20 00:00:058.3787.8088.8526.4506.2226.8007.2296.9827.485
\n
" }, "metadata": {}, - "execution_count": 7 + "execution_count": 8 } ], "source": [ @@ -328,7 +316,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -387,7 +375,7 @@ "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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
AVG[W] L1Min[W] L1Max[W] L1AVG[W] L2Min[W] L2Max[W] L2AVG[W] L3Min[W] L3Max[W] L3CPU% L1...KB Transmitted L2KB Received L2KB Read L2KB Write L2CPU% L3MEM Used L3KB Transmitted L3KB Received L3KB Read L3KB Write L3
Time
15.10.20 00:00:019.1577.87813.2656.5156.0046.9637.2106.9397.7010.0...0.00.00.00.00.00.00.00.00.00.0
15.10.20 00:00:028.8197.42412.1046.6435.9868.1299.1637.19913.6030.0...0.00.00.00.00.00.00.00.00.00.0
15.10.20 00:00:038.2387.4948.6606.1995.3046.5957.5017.0578.3690.0...0.00.00.00.00.00.00.00.00.00.0
15.10.20 00:00:048.2697.5548.9166.5226.1756.8117.2216.7287.8010.0...0.00.00.00.00.00.00.00.00.00.0
15.10.20 00:00:058.3787.8088.8526.4506.2226.8007.2296.9827.4850.0...0.00.00.00.00.00.00.00.00.00.0
\n

5 rows × 27 columns

\n
" }, "metadata": {}, - "execution_count": 8 + "execution_count": 9 } ], "source": [ @@ -414,7 +402,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -473,7 +461,7 @@ "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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
AVG[W] L1Min[W] L1Max[W] L1AVG[W] L2Min[W] L2Max[W] L2AVG[W] L3Min[W] L3Max[W] L3CPU% L1...KB Transmitted L2KB Received L2KB Read L2KB Write L2CPU% L3MEM Used L3KB Transmitted L3KB Received L3KB Read L3KB Write L3
Time
14.10.20 00:00:010.0760.0090.148-0.117-0.1960.0370.052-0.0750.2070.0...0.00.00.00.00.00.00.00.00.00.0
14.10.20 00:00:020.1000.0210.178-0.068-0.2090.0070.030-0.1320.1760.0...0.00.00.00.00.00.00.00.00.00.0
14.10.20 00:00:030.0900.0020.1860.457-0.2222.7820.027-0.1300.1820.0...0.00.00.00.00.00.00.00.00.00.0
14.10.20 00:00:040.073-0.0180.131-0.085-0.1690.0190.055-0.0660.1860.0...0.00.00.00.00.00.00.00.00.00.0
14.10.20 00:00:050.1060.0290.169-0.100-0.2230.0270.005-0.1390.1760.0...0.00.00.00.00.00.00.00.00.00.0
\n

5 rows × 27 columns

\n
" }, "metadata": {}, - "execution_count": 9 + "execution_count": 10 } ], "source": [ @@ -487,7 +475,20 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "#plotBoxplotFigure(result, [\"KB Received L1\", \"KB Received L2\", \"KB Received L3\"], \"Network before cleaning\", \"Network Boxplot.png\")\n", + "#result[\"KB Received L1\"] = result.loc[stats.zscore(result[\"KB Received L1\"]) <= 3][\"KB Received L1\"]\n", + "#result[\"KB Received L2\"] = result.loc[stats.zscore(result[\"KB Received L2\"]) <= 3][\"KB Received L2\"]\n", + "#result[\"KB Received L3\"] = result.loc[stats.zscore(result[\"KB Received L3\"]) <= 3][\"KB Received L3\"]\n", + "#plotBoxplotFigure(result, [\"KB Received L1\", \"KB Received L2\", \"KB Received L3\"], \"Network before cleaning\", \"Network Boxplot cleaned.png\")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, "metadata": { "tags": [] }, @@ -499,15 +500,15 @@ "111111111 Windows\n", "Baseline Windows\n", "Baseline\n", - "121110101 ActivityPub\n", - "112110101 ActivityPub\n", - "211110101 ActivityPub\n", - "111110101 ActivityPub\n", - "111010101 ActivityPub\n", - "111210101 ActivityPub\n", - "110110101 ActivityPub\n", - "011110101 ActivityPub\n", - "101110101 ActivityPub\n", + "110111111 ActivityPub\n", + "101111111 ActivityPub\n", + "211111111 ActivityPub\n", + "011111111 ActivityPub\n", + "111211111 ActivityPub\n", + "111111111 ActivityPub\n", + "121111111 ActivityPub\n", + "112111111 ActivityPub\n", + "111011111 ActivityPub\n", "211111111 Matrix\n", "121111111 Matrix\n", "111111011 Matrix\n", @@ -556,41 +557,41 @@ "Min[W] L3 5.669529e+00\n", "dtype: float64\n", "min\n", - "AVG[W] L1 5.857771e+00\n", - "Min[W] L1 5.741483e+00\n", - "Max[W] L1 5.994246e+00\n", - "AVG[W] L2 3.889144e+00\n", - "Min[W] L2 3.698576e+00\n", - "Max[W] L2 4.119449e+00\n", - "AVG[W] L3 6.164653e+00\n", - "Min[W] L3 5.650754e+00\n", - "Max[W] L3 7.187424e+00\n", - "CPU% L1 5.932203e-02\n", - "MEM Used L1 4.503744e+06\n", - "KB Transmitted L1 0.000000e+00\n", + "AVG[W] L1 5.997093e+00\n", + "Min[W] L1 5.811203e+00\n", + "Max[W] L1 6.292356e+00\n", + "AVG[W] L2 4.037085e+00\n", + "Min[W] L2 3.727415e+00\n", + "Max[W] L2 4.554542e+00\n", + "AVG[W] L3 5.826669e+00\n", + "Min[W] L3 5.622593e+00\n", + "Max[W] L3 6.123331e+00\n", + "CPU% L1 4.322034e-01\n", + "MEM Used L1 4.288508e+06\n", + "KB Transmitted L1 5.677966e-01\n", "KB Received L1 0.000000e+00\n", "KB Read L1 0.000000e+00\n", - "KB Write L1 1.220339e+01\n", - "CPU% L2 5.932203e-02\n", - "MEM Used L2 4.335635e+06\n", - "KB Transmitted L2 1.694915e-02\n", + "KB Write L1 6.166102e+01\n", + "CPU% L2 3.135593e-01\n", + "MEM Used L2 4.091692e+06\n", + "KB Transmitted L2 6.694915e-01\n", "KB Received L2 0.000000e+00\n", "KB Read L2 0.000000e+00\n", - "KB Write L2 1.664407e+01\n", - "CPU% L3 3.127119e+00\n", - "MEM Used L3 4.310587e+06\n", - "KB Transmitted L3 9.661017e-01\n", - "KB Received L3 8.728814e-01\n", + "KB Write L2 5.467797e+01\n", + "CPU% L3 3.983051e-01\n", + "MEM Used L3 4.013788e+06\n", + "KB Transmitted L3 1.864407e-01\n", + "KB Received L3 1.016949e-01\n", "KB Read L3 0.000000e+00\n", - "KB Write L3 6.154237e+02\n", - "Energy L1 5.857771e+00\n", - "Energy L2 3.889144e+00\n", - "Energy L3 1.257979e+01\n", - "Iteration 1.800000e+01\n", - "Energy total 6.425539e+00\n", - "Actions Send 1.150000e+02\n", + "KB Write L3 3.966949e+01\n", + "Energy L1 5.997093e+00\n", + "Energy L2 4.037085e+00\n", + "Energy L3 6.159462e+00\n", + "Iteration 1.100000e+01\n", + "Energy total 2.924719e-01\n", + "Actions Send 1.200000e+01\n", "dtype: float64\n", - "6.704910347268386\n", + "2.924719339609503\n", "max\n", "AVG[W] L1 6.501847e+00\n", "Min[W] L1 6.013449e+00\n", @@ -610,7 +611,7 @@ "CPU% L2 1.957627e+00\n", "MEM Used L2 4.403195e+06\n", "KB Transmitted L2 5.525424e+00\n", - "KB Received L2 3.675214e+00\n", + "KB Received L2 3.646552e+00\n", "KB Read L2 0.000000e+00\n", "KB Write L2 4.514915e+02\n", "CPU% L3 3.084746e+00\n", @@ -619,14 +620,14 @@ "KB Received L3 3.686441e+00\n", "KB Read L3 0.000000e+00\n", "KB Write L3 4.467458e+02\n", - "Energy L1 8.728277e+01\n", - "Energy L2 3.171558e+01\n", - "Energy L3 3.329450e+01\n", + "Energy L1 4.247116e+01\n", + "Energy L2 1.663821e+01\n", + "Energy L3 1.826516e+01\n", "Iteration 2.600000e+01\n", - "Energy total 1.363917e+02\n", + "Energy total 6.147336e+01\n", "Actions Send 1.090000e+02\n", "dtype: float64\n", - "150.1559780437906\n" + "67.67709118463543\n" ] } ], @@ -653,18 +654,18 @@ " end_measurement_string = time.strftime('%d.%m.%y %H:%M:%S', time.localtime(int(csv_data[\"End\"][len(csv_data[\"End\"]) - 1])))\n", " measurement_data = result.loc[start_measurement_string:end_measurement_string]\n", "\n", - " plotBoxplotFigure(measurement_data, [\"AVG[W] L1\", \"AVG[W] L2\", \"AVG[W] L3\"], measurement_name + \" Energy before cleaning\", \"plots/Energy/\" + measurement_name + \" Boxplot.png\")\n", - " measurement_data[\"AVG[W] L1\"] = cleanDataIQR(measurement_data[\"AVG[W] L1\"])\n", - " measurement_data[\"AVG[W] L2\"] = cleanDataIQR(measurement_data[\"AVG[W] L2\"])\n", - " measurement_data[\"AVG[W] L3\"] = cleanDataIQR(measurement_data[\"AVG[W] L3\"])\n", - " plotBoxplotFigure(measurement_data, [\"AVG[W] L1\", \"AVG[W] L2\", \"AVG[W] L3\"], measurement_name + \" Energy after cleaning\", \"plots/Energy/\" + measurement_name + \" Boxplot cleaned.png\")\n", + " plotBoxplotFigure(measurement_data, [\"AVG[W] L1\", \"AVG[W] L2\", \"AVG[W] L3\"], measurement_name + \" Energy before cleaning\", \"plots/Energy/\" + measurement_name.replace(\" \", \"_\") + \"_Boxplot.png\")\n", + " measurement_data[\"AVG[W] L1\"] = cleanDataIQR(measurement_data[\"AVG[W] L1\"], 10)\n", + " measurement_data[\"AVG[W] L2\"] = cleanDataIQR(measurement_data[\"AVG[W] L2\"], 10)\n", + " measurement_data[\"AVG[W] L3\"] = cleanDataIQR(measurement_data[\"AVG[W] L3\"], 10)\n", + " plotBoxplotFigure(measurement_data, [\"AVG[W] L1\", \"AVG[W] L2\", \"AVG[W] L3\"], measurement_name + \" Energy after cleaning\", \"plots/Energy/\" + measurement_name.replace(\" \", \"_\") + \"_Boxplot_cleaned.png\")\n", " \n", - " plotBoxplotFigure(measurement_data, [\"KB Received L1\", \"KB Received L2\", \"KB Received L3\"], measurement_name + \" Network before cleaning\", \"plots/Network/received/\" + measurement_name + \" Boxplot.png\")\n", + " plotBoxplotFigure(measurement_data, [\"KB Received L1\", \"KB Received L2\", \"KB Received L3\"], measurement_name + \" Network before cleaning\", \"plots/Network/received/\" + measurement_name.replace(\" \", \"_\") + \"_Boxplot.png\")\n", " if \"Baseline\" not in measurement_name and \"Windows\" not in measurement_name:\n", - " measurement_data[\"KB Received L1\"] = measurement_data.loc[stats.zscore(measurement_data[\"KB Received L1\"]) <= 3][\"KB Received L1\"]\n", - " measurement_data[\"KB Received L2\"] = measurement_data.loc[stats.zscore(measurement_data[\"KB Received L2\"]) <= 3][\"KB Received L2\"]\n", - " measurement_data[\"KB Received L3\"] = measurement_data.loc[stats.zscore(measurement_data[\"KB Received L3\"]) <= 3][\"KB Received L3\"]\n", - " plotBoxplotFigure(measurement_data, [\"KB Received L1\", \"KB Received L2\", \"KB Received L3\"], measurement_name + \" Network after cleaning\", \"plots/Network/received/\" + measurement_name + \" Boxplot cleaned.png\")\n", + " measurement_data[\"KB Received L1\"] = measurement_data.loc[stats.zscore(measurement_data[\"KB Received L1\"]) <= 1.5][\"KB Received L1\"]\n", + " measurement_data[\"KB Received L2\"] = measurement_data.loc[stats.zscore(measurement_data[\"KB Received L2\"]) <= 1.5][\"KB Received L2\"]\n", + " measurement_data[\"KB Received L3\"] = measurement_data.loc[stats.zscore(measurement_data[\"KB Received L3\"]) <= 1.5][\"KB Received L3\"]\n", + " plotBoxplotFigure(measurement_data, [\"KB Received L1\", \"KB Received L2\", \"KB Received L3\"], measurement_name + \" Network after cleaning\", \"plots/Network/received/\" + measurement_name.replace(\" \", \"_\") + \"_Boxplot_cleaned.png\")\n", "\n", " measurement_results = pd.DataFrame()\n", " iteration_count = 0\n", @@ -674,18 +675,18 @@ " end_string = time.strftime('%d.%m.%y %H:%M:%S', time.localtime(int(measurement_row[2]) - 1))\n", " iteration_data = measurement_data.loc[start_string:end_string]\n", "\n", - " plotFigure(iteration_data, [\"AVG[W] L1\",\"AVG[W] L2\",\"AVG[W] L3\"], \"Energy (W)\", \"Energy \" + title, \"plots/Energy/\" + title + \".png\")\n", - " plotFigure(iteration_data, [\"CPU% L1\",\"CPU% L2\",\"CPU% L3\"], \"Workload (%)\", \"CPU \" + title, \"plots/CPU/\" + title + \".png\")\n", - " plotFigure(iteration_data, [\"MEM Used L1\",\"MEM Used L2\",\"MEM Used L3\"], \"Usage (MByte)\", \"Memory \" + title, \"plots/MEM/\" + title + \".png\")\n", - " plotFigure(iteration_data, [\"KB Transmitted L1\",\"KB Transmitted L2\",\"KB Transmitted L3\"], \"Transmitted (KB)\", \"Network Send \" + title, \"plots/Network/transmitted/\" + title + \" transmitted.png\")\n", - " plotFigure(iteration_data, [\"KB Received L1\",\"KB Received L2\",\"KB Received L3\"], \"Received (KB)\", \"Network Received \" + title, \"plots/Network/received/\" + title + \" received.png\")\n", - " plotFigure(iteration_data, [\"KB Read L1\",\"KB Read L2\",\"KB Read L3\"], \"Read (KB)\", \"Disc Read \" + title, \"plots/Disc/\" + title + \" read.png\")\n", - " plotFigure(iteration_data, [\"KB Write L1\",\"KB Write L2\",\"KB Write L3\"], \"Write (KB)\", \"Disc Write \" + title, \"plots/Disc/\" + title + \" write.png\")\n", + " plotFigure(iteration_data, [\"AVG[W] L1\",\"AVG[W] L2\",\"AVG[W] L3\"], \"Energy (W)\", \"Energy \" + title, \"plots/Energy/\" + title.replace(\" \", \"_\") + \".png\")\n", + " plotFigure(iteration_data, [\"CPU% L1\",\"CPU% L2\",\"CPU% L3\"], \"Workload (%)\", \"CPU \" + title, \"plots/CPU/\" + title.replace(\" \", \"_\") + \".png\")\n", + " plotFigure(iteration_data, [\"MEM Used L1\",\"MEM Used L2\",\"MEM Used L3\"], \"Usage (MByte)\", \"Memory \" + title, \"plots/MEM/\" + title.replace(\" \", \"_\") + \".png\")\n", + " plotFigure(iteration_data, [\"KB Transmitted L1\",\"KB Transmitted L2\",\"KB Transmitted L3\"], \"Transmitted (KB)\", \"Network Send \" + title, \"plots/Network/transmitted/\" + title.replace(\" \", \"_\") + \".png\")\n", + " plotFigure(iteration_data, [\"KB Received L1\",\"KB Received L2\",\"KB Received L3\"], \"Received (KB)\", \"Network Received \" + title, \"plots/Network/received/\" + title.replace(\" \", \"_\") + \".png\")\n", + " plotFigure(iteration_data, [\"KB Read L1\",\"KB Read L2\",\"KB Read L3\"], \"Read (KB)\", \"Disc Read \" + title, \"plots/Disc/\" + title.replace(\" \", \"_\") + \"_read.png\")\n", + " plotFigure(iteration_data, [\"KB Write L1\",\"KB Write L2\",\"KB Write L3\"], \"Write (KB)\", \"Disc Write \" + title, \"plots/Disc/\" + title.replace(\" \", \"_\") + \"_write.png\")\n", " iteration = iteration_data.mean()\n", "\n", - " iteration[\"Energy L1\"] = iteration[\"AVG[W] L1\"] + (((iteration[\"KB Received L1\"] / 1000000) / 0.025634766) * 52 * 3600) + ((iteration[\"KB Received L1\"] / 1000000) * 0.052 * 0.25 * 3600000)\n", - " iteration[\"Energy L2\"] = iteration[\"AVG[W] L2\"] + (((iteration[\"KB Received L2\"] / 1000000) / 0.025634766) * 52 * 3600) + ((iteration[\"KB Received L2\"] / 1000000) * 0.052 * 0.25 * 3600000)\n", - " iteration[\"Energy L3\"] = iteration[\"AVG[W] L3\"] + (((iteration[\"KB Received L3\"] / 1000000) / 0.025634766) * 52 * 3600) + ((iteration[\"KB Received L3\"] / 1000000) * 0.052 * 0.25 * 3600000)\n", + " iteration[\"Energy L1\"] = iteration[\"AVG[W] L1\"] + (((iteration.fillna(0)[\"KB Received L1\"] / 1000000) / 0.058034665178572) * 52 * 3600) + ((iteration.fillna(0)[\"KB Received L1\"] / 1000000) * 0.052 * 0.25 * 3600000)\n", + " iteration[\"Energy L2\"] = iteration[\"AVG[W] L2\"] + (((iteration.fillna(0)[\"KB Received L2\"] / 1000000) / 0.058034665178572) * 52 * 3600) + ((iteration.fillna(0)[\"KB Received L2\"] / 1000000) * 0.052 * 0.25 * 3600000)\n", + " iteration[\"Energy L3\"] = iteration[\"AVG[W] L3\"] + (((iteration.fillna(0)[\"KB Received L3\"] / 1000000) / 0.058034665178572) * 52 * 3600) + ((iteration.fillna(0)[\"KB Received L3\"] / 1000000) * 0.052 * 0.25 * 3600000)\n", "\n", " iteration['Iteration'] = int(measurement_row[0])\n", " measurement_results = measurement_results.append(iteration, ignore_index=True)\n", @@ -705,22 +706,22 @@ " iteration_data = iteration_data.reset_index()\n", " del iteration_data[\"Time\"]\n", " if measurement_avg is None:\n", - " measurement_avg = iteration_data\n", + " measurement_avg = iteration_data.fillna(0)\n", " else:\n", " measurement_avg = measurement_avg + iteration_data.fillna(0)\n", " iteration_count = iteration_count + 1\n", " measurement_avg = measurement_avg / iteration_count\n", - " plotFigure(measurement_avg, [\"AVG[W] L1\",\"AVG[W] L2\",\"AVG[W] L3\"], \"Energy (W)\", \"Energy \" + measurement_name, \"plots/Energy/\" + measurement_name + \".png\")\n", - " plotFigure(measurement_avg, [\"CPU% L1\",\"CPU% L2\",\"CPU% L3\"], \"Workload (%)\", \"CPU \" + measurement_name, \"plots/CPU/\" + measurement_name + \".png\")\n", - " plotFigure(measurement_avg, [\"MEM Used L1\",\"MEM Used L2\",\"MEM Used L3\"], \"Usage (MByte)\", \"Memory \" + measurement_name, \"plots/MEM/\" + measurement_name + \".png\")\n", - " plotFigure(measurement_avg, [\"KB Transmitted L1\",\"KB Transmitted L2\",\"KB Transmitted L3\"], \"Transmitted (KB)\", \"Network Send \" + measurement_name, \"plots/Network/transmitted/\" + measurement_name + \" transmitted.png\")\n", - " plotFigure(measurement_avg, [\"KB Received L1\",\"KB Received L2\",\"KB Received L3\"], \"Received (KB)\", \"Network Received \" + measurement_name, \"plots/Network/received/\" + measurement_name + \" received.png\")\n", - " plotFigure(measurement_avg, [\"KB Read L1\",\"KB Read L2\",\"KB Read L3\"], \"Read (KB)\", \"Disc Read \" + measurement_name, \"plots/Disc/\" + measurement_name + \" read.png\")\n", - " plotFigure(measurement_avg, [\"KB Write L1\",\"KB Write L2\",\"KB Write L3\"], \"Write (KB)\", \"Disc Write \" + measurement_name, \"plots/Disc/\" + measurement_name + \" write.png\")\n", + " plotFigure(measurement_avg, [\"AVG[W] L1\",\"AVG[W] L2\",\"AVG[W] L3\"], \"Energy (W)\", \"Energy \" + measurement_name, \"plots/Energy/\" + measurement_name.replace(\" \", \"_\") + \".png\")\n", + " plotFigure(measurement_avg, [\"CPU% L1\",\"CPU% L2\",\"CPU% L3\"], \"Workload (%)\", \"CPU \" + measurement_name, \"plots/CPU/\" + measurement_name.replace(\" \", \"_\") + \".png\")\n", + " plotFigure(measurement_avg, [\"MEM Used L1\",\"MEM Used L2\",\"MEM Used L3\"], \"Usage (MByte)\", \"Memory \" + measurement_name, \"plots/MEM/\" + measurement_name.replace(\" \", \"_\") + \".png\")\n", + " plotFigure(measurement_avg, [\"KB Transmitted L1\",\"KB Transmitted L2\",\"KB Transmitted L3\"], \"Transmitted (KB)\", \"Network Send \" + measurement_name, \"plots/Network/transmitted/\" + measurement_name.replace(\" \", \"_\") + \".png\")\n", + " plotFigure(measurement_avg, [\"KB Received L1\",\"KB Received L2\",\"KB Received L3\"], \"Received (KB)\", \"Network Received \" + measurement_name, \"plots/Network/received/\" + measurement_name.replace(\" \", \"_\") + \".png\")\n", + " plotFigure(measurement_avg, [\"KB Read L1\",\"KB Read L2\",\"KB Read L3\"], \"Read (KB)\", \"Disc Read \" + measurement_name, \"plots/Disc/\" + measurement_name.replace(\" \", \"_\") + \"_read.png\")\n", + " plotFigure(measurement_avg, [\"KB Write L1\",\"KB Write L2\",\"KB Write L3\"], \"Write (KB)\", \"Disc Write \" + measurement_name, \"plots/Disc/\" + measurement_name.replace(\" \", \"_\") + \"_write.png\")\n", " csv_data = csv_data.merge(measurement_results)\n", " csv_data_mean = csv_data.mean()\n", " csv_data = csv_data.append(csv_data_mean, ignore_index=True)\n", - " csv_data.to_csv(measurement_file.name)\n", + " csv_data.to_csv(\"output/\" + measurement_file.name)\n", " if \"Windows\" not in measurement_name:\n", " if \"Baseline\" in measurement_name:\n", " baseline = csv_data_mean\n", @@ -752,12 +753,12 @@ " summary[\"MEM Used total\"] = summary[\"MEM Used L1 without Baseline\"] + summary[\"MEM Used L2 without Baseline\"] + summary[\"MEM Used L3 without Baseline\"]\n", " summary[\"KB Received total\"] = summary[\"KB Received L1 without Baseline\"] + summary[\"KB Received L2 without Baseline\"] + summary[\"KB Received L3 without Baseline\"]\n", " summary[\"KB Write total\"] = summary[\"KB Write L1 without Baseline\"] + summary[\"KB Write L2 without Baseline\"] + summary[\"KB Write L3 without Baseline\"]\n", - "summary.to_csv(\"summary.csv\")" + "summary.to_csv(\"output/summary.csv\")" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -766,19 +767,19 @@ "fig = go.Figure()\n", "\n", "fig.add_trace(go.Scatterpolar(\n", - " r=[0.3313,0.3313,0.3313,0.3313,0.3313,0.3313,0.3313,0.3313,0.3313],\n", + " r=[0.3192,0.3192,0.3192,0.3192,0.3192,0.3192,0.3192,0.3192,0.3192],\n", " theta=categories,\n", " fill='toself',\n", " name='Average'\n", "))\n", "fig.add_trace(go.Scatterpolar(\n", - " r=[0.3478,0.3651,0.3333,0.3738,0.3313,0.3313,0.3313,0.3313,0.3313],\n", + " r=[0.3301,0.2590,0.3331,0.3718,0.3192,0.3192,0.3192,0.3192,0.3192],\n", " theta=categories,\n", " fill='toself',\n", " name='Worst'\n", "))\n", "fig.add_trace(go.Scatterpolar(\n", - " r=[0.2806,0.2578,0.0110,0.3291,0.3313,0.3310,0.2790,0.2782,0.3313],\n", + " r=[0.2815,0.3753,0.0225,0.3264,0.3192,0.3194,0.2819,0.2720,0.3192],\n", " theta=categories,\n", " fill='toself',\n", " name='Best'\n", @@ -800,12 +801,12 @@ " showlegend=True\n", ")\n", "\n", - "fig.write_image(\"Radar Matrix.png\")" + "fig.write_image(\"plots/Radar Matrix.png\")" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 22, "metadata": {}, "outputs": [], "source": [ @@ -814,19 +815,19 @@ "fig = go.Figure()\n", "\n", "fig.add_trace(go.Scatterpolar(\n", - " r=[0.2926,0.2926,0.2926,0.2926,0.2926,0.2926,0.2926,0.2926,0.2926],\n", + " r=[0.2479,0.2479,0.2479,0.2479,0.2479,0.2479,0.2479,0.2479,0.2479],\n", " theta=categories,\n", " fill='toself',\n", " name='Average'\n", "))\n", "fig.add_trace(go.Scatterpolar(\n", - " r=[0.2708,0.3015,0.9479,0.3451,0.2926,0.2926,0.2926,0.2926,0.2926],\n", + " r=[0.2770,0.2556,0.9052,0.1882,0.2479,0.2479,0.2479,0.2479,0.2479],\n", " theta=categories,\n", " fill='toself',\n", " name='Worst'\n", "))\n", "fig.add_trace(go.Scatterpolar(\n", - " r=[0.2930,0.2199,0.0013,0.2269,0.2926,0.2926,0.2926,0.2926,0.2926],\n", + " r=[0.2187,0.0513,0.0030,0.3072,0.2479,0.2479,0.2479,0.2479,0.2479],\n", " theta=categories,\n", " fill='toself',\n", " name='Best'\n", @@ -848,12 +849,12 @@ " showlegend=True\n", ")\n", "\n", - "fig.write_image(\"Radar ActivityPub.png\")" + "fig.write_image(\"plots/Radar ActivityPub.png\")" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -885,7 +886,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6-final" + "version": "3.7.5-final" } }, "nbformat": 4, diff --git a/MeasurementFiles/ActivityPub/1602788743 111110101 Measurement ActivityPub.csv b/MeasurementFiles/ActivityPub/1602788743 111111111 Measurement ActivityPub.csv similarity index 100% rename from MeasurementFiles/ActivityPub/1602788743 111110101 Measurement ActivityPub.csv rename to MeasurementFiles/ActivityPub/1602788743 111111111 Measurement ActivityPub.csv diff --git a/MeasurementFiles/ActivityPub/1602792388 011110101 Measurement ActivityPub.csv b/MeasurementFiles/ActivityPub/1602792388 011111111 Measurement ActivityPub.csv similarity index 100% rename from MeasurementFiles/ActivityPub/1602792388 011110101 Measurement ActivityPub.csv rename to MeasurementFiles/ActivityPub/1602792388 011111111 Measurement ActivityPub.csv diff --git a/MeasurementFiles/ActivityPub/1602796034 211110101 Measurement ActivityPub.csv b/MeasurementFiles/ActivityPub/1602796034 211111111 Measurement ActivityPub.csv similarity index 100% rename from MeasurementFiles/ActivityPub/1602796034 211110101 Measurement ActivityPub.csv rename to MeasurementFiles/ActivityPub/1602796034 211111111 Measurement ActivityPub.csv diff --git a/MeasurementFiles/ActivityPub/1602799678 101110101 Measurement ActivityPub.csv b/MeasurementFiles/ActivityPub/1602799678 101111111 Measurement ActivityPub.csv similarity index 100% rename from MeasurementFiles/ActivityPub/1602799678 101110101 Measurement ActivityPub.csv rename to MeasurementFiles/ActivityPub/1602799678 101111111 Measurement ActivityPub.csv diff --git a/MeasurementFiles/ActivityPub/1602803341 121110101 Measurement ActivityPub.csv b/MeasurementFiles/ActivityPub/1602803341 121111111 Measurement ActivityPub.csv similarity index 100% rename from MeasurementFiles/ActivityPub/1602803341 121110101 Measurement ActivityPub.csv rename to MeasurementFiles/ActivityPub/1602803341 121111111 Measurement ActivityPub.csv diff --git a/MeasurementFiles/ActivityPub/1602806971 110110101 Measurement ActivityPub.csv b/MeasurementFiles/ActivityPub/1602806971 110111111 Measurement ActivityPub.csv similarity index 100% rename from MeasurementFiles/ActivityPub/1602806971 110110101 Measurement ActivityPub.csv rename to MeasurementFiles/ActivityPub/1602806971 110111111 Measurement ActivityPub.csv diff --git a/MeasurementFiles/ActivityPub/1602810616 112110101 Measurement ActivityPub.csv b/MeasurementFiles/ActivityPub/1602810616 112111111 Measurement ActivityPub.csv similarity index 100% rename from MeasurementFiles/ActivityPub/1602810616 112110101 Measurement ActivityPub.csv rename to MeasurementFiles/ActivityPub/1602810616 112111111 Measurement ActivityPub.csv diff --git a/MeasurementFiles/ActivityPub/1602814266 111010101 Measurement ActivityPub.csv b/MeasurementFiles/ActivityPub/1602814266 111011111 Measurement ActivityPub.csv similarity index 100% rename from MeasurementFiles/ActivityPub/1602814266 111010101 Measurement ActivityPub.csv rename to MeasurementFiles/ActivityPub/1602814266 111011111 Measurement ActivityPub.csv diff --git a/MeasurementFiles/ActivityPub/1602817908 111210101 Measurement ActivityPub.csv b/MeasurementFiles/ActivityPub/1602817908 111211111 Measurement ActivityPub.csv similarity index 100% rename from MeasurementFiles/ActivityPub/1602817908 111210101 Measurement ActivityPub.csv rename to MeasurementFiles/ActivityPub/1602817908 111211111 Measurement ActivityPub.csv diff --git a/Radar ActivityPub.png b/Radar ActivityPub.png new file mode 100644 index 0000000000000000000000000000000000000000..62d5ea884cda22daa730bf0778fa617e354293c5 GIT binary patch literal 38787 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 VW6*BAI7SORzQ+QNQoSNC{tX+<`>y~1 literal 0 HcmV?d00001 diff --git a/Radar Matrix.png b/Radar Matrix.png new file mode 100644 index 0000000000000000000000000000000000000000..a4d53eb87a0e240e78cc9c9050c23fa6c9652de0 GIT binary patch literal 38518 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%0Dk21o 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

E z;3~nh8h(GG1xbJPTIONbr3N8TNZ!j0+55KQR1AeWt~mXTA!dcn{}dgAfx2GDzigre z2iS|!8vW9^TwbG?IM$tpwqiR^;rtfwG>LuIyP)KdGrY-7+;qmFG4V{}! z>c*>lLE~ZMZAC4Rx?&e!D#%HdS7UbJ9y^S^po@Ae#GA?IDY@*`ThUc4kjd=wz_6! z_He~b@rN6$*SSPya=h37E7JaM|L%V~=X{x8`_Z@J;X-M4j(a}8cE0IXoDRHbJs<&C z4zjYHd+D)Y2FsJx&zbj^%Ei?_3cC^({>|{|{`YzZ&+GrUjjQ}~P4|DCpWFT48LV|x zH*Gg&fku89zXM9^PJuC z6>ReBBYLy-ZHsTDrrkQPwrburF`T4jADTgze^up{$Emln-Q2v3j0&pEbH&R-|+Yer$zC(i_AH@ z68^oNvFmVItzGrkwfqG~d$~V6kJdkU;@2$2>k~8WPd6-31V&#UXmP$oc#)#Ygn12f z4#^q3j`=H6?&5o2_@24A?$M*+_d8qp?`}v{_!;#dG>&<>a{I$I@8z0--VkKUmsoi{Ji9bX_odorH;$}3;oM9d&}~9_00SCzvuk(Z`NnS#5*e#ug}Z0 zzkT>I6R=d(0j)Hil(#TYWr97Edri9DzUn`T%=;$odshDa_4beTf4hx8oVcw2_(b#f zOOH*K-mQE8_?PdWO7S^f2WQ(~k4Ss6d|oxP`M-|~84dS*I#hC`T<^%?^0>aY+ohML zXYP3V&b{#ZSNrS9JKM8ne%s8$AmzlQ@&I(!d|$DqxC;|-ij>-b9)6ZZUO_Ya>2=^!hvPA8@Rxb7%VeCC}sUnzaS{wf_HhggYQKRQ@=8yhu03?w*Ze z(ccYc*CxhP-)5dL=j_EDO%qE^cQs6{IWx)a?Z*0jP4WMp<*_jRvs?4;^9SFI%=b5h z`0Zl$&w9mmy;zL_Sp6LWwvK@(4Fj9)(|`+tP4AaHKV0!?-)h}V`QA-zjrnu`Y5#dJ zW$_nrd2nlGgEFuTu&(Mgo7~{ZvTJdnOwFI4JBr@DoU!r#If;vy0zIfL> zW<~hDWMDm@z_=UKqMm&`L!Wbo&x51a#T`Gb>zeTMJM;CKHdgJ$OpO^j>z-%SJ#T($ z@qA09MP=IkMXG)g%GZG<&Vw9aM4tPmAMVZsDuBRf9dKsz^)Foq2Dr$mve5t;O(D?i jFq&mX3kPya%Mbr=r5``O#hgck0SG)@{an^LB{Ts5J+o