MeasurementEvaluator/MeasurementEvaluator.ipynb

893 lines
60 KiB
Text
Raw Normal View History

2020-11-05 15:58:11 +00:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 3,
"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<ipython-input-3-c01ef916f33f>\u001b[0m in \u001b[0;36m<module>\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'"
]
}
],
"source": [
"import os\n",
"import time\n",
"import glob\n",
"from pathlib import Path\n",
"import pandas as pd\n",
"import plotly.graph_objects as go\n",
"import plotly.express as px\n",
"pd.options.plotting.backend = \"plotly\" \n",
"import numpy as np\n",
"import seaborn as sns\n",
"from scipy import stats"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"if not os.path.exists('output'):\n",
" os.makedirs('output')\n",
"if not os.path.exists('plots'):\n",
" os.makedirs('plots')\n",
"if not os.path.exists('plots/CPU'):\n",
" os.makedirs('plots/CPU')\n",
"if not os.path.exists('plots/Disc'):\n",
" os.makedirs('plots/Disc')\n",
"if not os.path.exists('plots/Energy'):\n",
" os.makedirs('plots/Energy')\n",
"if not os.path.exists('plots/MEM'):\n",
" os.makedirs('plots/MEM')\n",
"if not os.path.exists('plots/Network'):\n",
" os.makedirs('plots/Network')\n",
"if not os.path.exists('plots/Network/received'):\n",
" os.makedirs('plots/Network/received')\n",
"if not os.path.exists('plots/Network/transmitted'):\n",
" os.makedirs('plots/Network/transmitted')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def plotFigure(dataToUse, colNamesArray, unit, titleText, filePath):\n",
" if len(colNamesArray) > 3:\n",
" print(\"Too much cols\")\n",
" return\n",
" data = dataToUse[colNamesArray]\n",
" data.columns =['L1','L2','L3']\n",
" iteration_plot = data.plot.line(line_shape='hv') # other options: spline / vhv\n",
" iteration_plot.update_xaxes(\n",
" title_text=\"Time (s)\",\n",
" ticktext=[\"30\", \"60\", \"90\", \"120\"],\n",
" tickvals=[data.index[29], data.index[59], data.index[89], data.index.max()]\n",
" )\n",
" iteration_plot.update_yaxes(title_text=unit)\n",
" iteration_plot.update_layout(\n",
" title_text=titleText,\n",
" legend=dict(\n",
" title=\"Server\"\n",
" )\n",
" )\n",
" iteration_plot.write_image(filePath)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"def plotBoxplotFigure(data, colNamesArray, title, fileName):\n",
" if len(colNamesArray) > 3:\n",
" print(\"Too much cols\")\n",
" return\n",
" fig = go.Figure()\n",
" fig.add_trace(go.Box(\n",
" x=data[colNamesArray[0]],\n",
" name='L1'\n",
" ))\n",
" fig.add_trace(go.Box(\n",
" x=data[colNamesArray[1]],\n",
" name='L2'\n",
" ))\n",
" fig.add_trace(go.Box(\n",
" x=data[colNamesArray[2]],\n",
" name='L3'\n",
" ))\n",
"\n",
" fig.update_layout(\n",
" title_text=title,\n",
" xaxis=dict(title='W', zeroline=False),\n",
" boxmode='group',\n",
" legend=dict(\n",
" title=\"Server\"\n",
" )\n",
" )\n",
" fig.update_traces(orientation='h')\n",
" fig.write_image(fileName)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def cleanDataIQR(data):\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",
" return data[~((data < lowqe_bound) |(data > upper_bound))]"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"(123251, 9)\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
" AVG[W] L1 Min[W] L1 Max[W] L1 AVG[W] L2 Min[W] L2 \\\n",
"Time \n",
"14.10.20 00:00:01 0.076 0.009 0.148 -0.117 -0.196 \n",
"14.10.20 00:00:02 0.100 0.021 0.178 -0.068 -0.209 \n",
"14.10.20 00:00:03 0.090 0.002 0.186 0.457 -0.222 \n",
"14.10.20 00:00:04 0.073 -0.018 0.131 -0.085 -0.169 \n",
"14.10.20 00:00:05 0.106 0.029 0.169 -0.100 -0.223 \n",
"\n",
" Max[W] L2 AVG[W] L3 Min[W] L3 Max[W] L3 \n",
"Time \n",
"14.10.20 00:00:01 0.037 0.052 -0.075 0.207 \n",
"14.10.20 00:00:02 0.007 0.030 -0.132 0.176 \n",
"14.10.20 00:00:03 2.782 0.027 -0.130 0.182 \n",
"14.10.20 00:00:04 0.019 0.055 -0.066 0.186 \n",
"14.10.20 00:00:05 0.027 0.005 -0.139 0.176 "
],
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>AVG[W] L1</th>\n <th>Min[W] L1</th>\n <th>Max[W] L1</th>\n <th>AVG[W] L2</th>\n <th>Min[W] L2</th>\n <th>Max[W] L2</th>\n <th>AVG[W] L3</th>\n <th>Min[W] L3</th>\n <th>Max[W] L3</th>\n </tr>\n <tr>\n <th>Time</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>14.10.20 00:00:01</th>\n <td>0.076</td>\n <td>0.009</td>\n <td>0.148</td>\n <td>-0.117</td>\n <td>-0.196</td>\n <td>0.037</td>\n <td>0.052</td>\n <td>-0.075</td>\n <td>0.207</td>\n </tr>\n <tr>\n <th>14.10.20 00:00:02</th>\n <td>0.100</td>\n <td>0.021</td>\n <td>0.178</td>\n <td>-0.068</td>\n <td>-0.209</td>\n <td>0.007</td>\n <td>0.030</td>\n <td>-0.132</td>\n <td>0.176</td>\n </tr>\n <tr>\n <th>14.10.20 00:00:03</th>\n <td>0.090</td>\n <td>0.002</td>\n <td>0.186</td>\n <td>0.457</td>\n <td>-0.222</td>\n <td>2.782</td>\n <td>0.027</td>\n <td>-0.130</td>\n <td>0.182</td>\n </tr>\n <tr>\n <th>14.10.20 00:00:04</th>\n <td>0.073</td>\n <td>-0.018</td>\n <td>0.131</td>\n <td>-0.085</td>\n <td>-0.169</td>\n <td>0.019</td>\n <td>0.055</td>\n <td>-0.066</td>\n <td>0.186</td>\n </tr>\n <tr>\n <th>14.10.20 00:00:05</th>\n <td>0.106</td>\n <td>0.029</td>\n <td>0.169</td>\n <td>-0.100</td>\n <td>-0.223</td>\n <td>0.027</td>\n <td>0.005</td>\n <td>-0.139</td>\n <td>0.176</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {},
"execution_count": 5
}
],
"source": [
"l1_matrix = pd.read_csv(\"./MeasurementFiles/Matrix/Messung_1_L1.csv\", sep=\";\", decimal=\",\").dropna(axis=1).drop('Nummer', axis=1)\n",
"l1_matrix.columns =['Time', 'AVG[W] L1', 'Min[W] L1', 'Max[W] L1']\n",
"l1_matrix.index = l1_matrix['Time']\n",
"l1_matrix = l1_matrix.drop(\"Time\", axis=1)\n",
"l2_matrix = pd.read_csv(\"./MeasurementFiles/Matrix/Messung_1_L2.csv\", sep=\";\", decimal=\",\").dropna(axis=1).drop('Nummer', axis=1)\n",
"l2_matrix.columns =['Time', 'AVG[W] L2', 'Min[W] L2', 'Max[W] L2']\n",
"l2_matrix.index = l2_matrix['Time']\n",
"l2_matrix = l2_matrix.drop(\"Time\", axis=1)\n",
"l3_matrix = pd.read_csv(\"./MeasurementFiles/Matrix/Messung_1_L3.csv\", sep=\";\", decimal=\",\").dropna(axis=1).drop('Nummer', axis=1)\n",
"l3_matrix.columns =['Time', 'AVG[W] L3', 'Min[W] L3', 'Max[W] L3']\n",
"l3_matrix.index = l3_matrix['Time']\n",
"l3_matrix = l3_matrix.drop(\"Time\", axis=1)\n",
"matrix = l1_matrix.merge(l2_matrix, on='Time').merge(l3_matrix, on='Time')\n",
"print(matrix.shape)\n",
"matrix.head()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"(123251, 27)\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
" AVG[W] L1 Min[W] L1 Max[W] L1 AVG[W] L2 Min[W] L2 \\\n",
"Time \n",
"14.10.20 00:00:01 0.076 0.009 0.148 -0.117 -0.196 \n",
"14.10.20 00:00:02 0.100 0.021 0.178 -0.068 -0.209 \n",
"14.10.20 00:00:03 0.090 0.002 0.186 0.457 -0.222 \n",
"14.10.20 00:00:04 0.073 -0.018 0.131 -0.085 -0.169 \n",
"14.10.20 00:00:05 0.106 0.029 0.169 -0.100 -0.223 \n",
"\n",
" Max[W] L2 AVG[W] L3 Min[W] L3 Max[W] L3 CPU% L1 ... \\\n",
"Time ... \n",
"14.10.20 00:00:01 0.037 0.052 -0.075 0.207 0.0 ... \n",
"14.10.20 00:00:02 0.007 0.030 -0.132 0.176 0.0 ... \n",
"14.10.20 00:00:03 2.782 0.027 -0.130 0.182 0.0 ... \n",
"14.10.20 00:00:04 0.019 0.055 -0.066 0.186 0.0 ... \n",
"14.10.20 00:00:05 0.027 0.005 -0.139 0.176 0.0 ... \n",
"\n",
" KB Transmitted L2 KB Received L2 KB Read L2 KB Write L2 \\\n",
"Time \n",
"14.10.20 00:00:01 0.0 0.0 0.0 0.0 \n",
"14.10.20 00:00:02 0.0 0.0 0.0 0.0 \n",
"14.10.20 00:00:03 0.0 0.0 0.0 0.0 \n",
"14.10.20 00:00:04 0.0 0.0 0.0 0.0 \n",
"14.10.20 00:00:05 0.0 0.0 0.0 0.0 \n",
"\n",
" CPU% L3 MEM Used L3 KB Transmitted L3 KB Received L3 \\\n",
"Time \n",
"14.10.20 00:00:01 0.0 0.0 0.0 0.0 \n",
"14.10.20 00:00:02 0.0 0.0 0.0 0.0 \n",
"14.10.20 00:00:03 0.0 0.0 0.0 0.0 \n",
"14.10.20 00:00:04 0.0 0.0 0.0 0.0 \n",
"14.10.20 00:00:05 0.0 0.0 0.0 0.0 \n",
"\n",
" KB Read L3 KB Write L3 \n",
"Time \n",
"14.10.20 00:00:01 0.0 0.0 \n",
"14.10.20 00:00:02 0.0 0.0 \n",
"14.10.20 00:00:03 0.0 0.0 \n",
"14.10.20 00:00:04 0.0 0.0 \n",
"14.10.20 00:00:05 0.0 0.0 \n",
"\n",
"[5 rows x 27 columns]"
],
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>AVG[W] L1</th>\n <th>Min[W] L1</th>\n <th>Max[W] L1</th>\n <th>AVG[W] L2</th>\n <th>Min[W] L2</th>\n <th>Max[W] L2</th>\n <th>AVG[W] L3</th>\n <th>Min[W] L3</th>\n <th>Max[W] L3</th>\n <th>CPU% L1</th>\n <th>...</th>\n <th>KB Transmitted L2</th>\n <th>KB Received L2</th>\n <th>KB Read L2</th>\n <th>KB Write L2</th>\n <th>CPU% L3</th>\n <th>MEM Used L3</th>\n <th>KB Transmitted L3</th>\n <th>KB Received L3</th>\n <th>KB Read L3</th>\n <th>KB Write L3</th>\n </tr>\n <tr>\n <th>Time</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>14.10.20 00:00:01</th>\n <td>0.076</td>\n <td>0.009</td>\n <td>0.148</td>\n <td>-0.117</td>\n <td>-0.196</td>\n <td>0.037</td>\n <td>0.052</td>\n <td>-0.075</td>\n <td>0.207</td>\n <td>0.0</td>\n <td>...</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>14.10.20 00:00:02</th>\n <td>0.100</td>\n <td>0.021</td>\n <td>0.178</td>\n <td>-0.068</td>\n <td>-0.209</td>\n <td>0.007</td>\n <td>0.030</td>\n <td>-0.132</td>\n <td>0.176</td>\n <td>0.0</td>\n <td>...</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>14.10.20 00:00:03</th>\n <td>0.090</td>\n <td>0.002</td>\n <td>0.186</td>\n <td>0.457</td>\n <td>-0.222</td>\n <td>2.782</td>\n <td>0.027</td>\n <td>-0.130</td>\n <td>0.182</td>\n <td>0.0</td>\n <td>...</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>14.10.20 00:00:04</th>\n <td>0.073</td>\n <td>-0.018</td>\n <td>0.131</td>\n <td>-0.085</td>\n <td>-0.169</td>\n <td>0.019</td>\n <td>0.055</td>\n <td>-0.066</td>\n <td>0.186</td>\n <td>0.0</td>\n <td>...</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>14.10.20 00:00:05</th>\n <td>0.106</td>\n <td>0.029</td>\n <td>0.169</td>\n <td>-0.100</td>\n <td>-0.223</td>\n <td>0.027</td>\n <td>0.005</td>\n <td>-0.139</td>\n <td>0.176</td>\n <td>0.0</td>\n <td>...</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n </tr>\n </tbody>\n</table>\n<p>5 rows × 27 columns</p>\n</div>"
},
"metadata": {},
"execution_count": 6
}
],
"source": [
"cols = ['Date Time','[CPU]Totl%','[MEM]Used','[NET]TxKBTot','[NET]RxKBTot','[DSK]ReadKBTot','[DSK]WriteKBTot']\n",
"f1_matrix = pd.read_csv(\"./MeasurementFiles/Matrix/Network-server-207-F1.csv\", sep=\";\", usecols=cols).dropna(axis=1)#.drop('Nummer', axis=1)\n",
"f1_matrix.columns =['Time','CPU% L1','MEM Used L1','KB Transmitted L1','KB Received L1','KB Read L1','KB Write L1']\n",
"f1_matrix['Time'] = [time.strftime('%d.%m.%y %H:%M:%S', time.strptime(time_string, '%Y%m%d %H:%M:%S')) for time_string in f1_matrix['Time']]\n",
"f1_matrix.index = f1_matrix['Time']\n",
"f1_matrix = f1_matrix.drop(\"Time\", axis=1)\n",
"f2_matrix = pd.read_csv(\"./MeasurementFiles/Matrix/Network-server-209-F2.csv\", sep=\";\", usecols=cols).dropna(axis=1)#.drop('Nummer', axis=1)\n",
"f2_matrix.columns =['Time','CPU% L2','MEM Used L2','KB Transmitted L2','KB Received L2','KB Read L2','KB Write L2']\n",
"f2_matrix['Time'] = [time.strftime('%d.%m.%y %H:%M:%S', time.strptime(time_string, '%Y%m%d %H:%M:%S')) for time_string in f2_matrix['Time']]\n",
"f2_matrix.index = f2_matrix['Time']\n",
"f2_matrix = f2_matrix.drop(\"Time\", axis=1)\n",
"f3_matrix = pd.read_csv(\"./MeasurementFiles/Matrix/Network-server-208-F3.csv\", sep=\";\", usecols=cols).dropna(axis=1)#.drop('Nummer', axis=1)\n",
"f3_matrix.columns =['Time','CPU% L3','MEM Used L3','KB Transmitted L3','KB Received L3','KB Read L3','KB Write L3']\n",
"f3_matrix['Time'] = [time.strftime('%d.%m.%y %H:%M:%S', time.strptime(time_string, '%Y%m%d %H:%M:%S')) for time_string in f3_matrix['Time']]\n",
"f3_matrix.index = f3_matrix['Time']\n",
"f3_matrix = f3_matrix.drop(\"Time\", axis=1)\n",
"matrix = matrix.merge(f1_matrix, on='Time', how='outer').merge(f2_matrix, on='Time', how='outer').merge(f3_matrix, on='Time', how='outer').fillna(0)\n",
"print(matrix.shape)\n",
"matrix.head()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" AVG[W] L1 Min[W] L1 Max[W] L1 AVG[W] L2 Min[W] L2 \\\n",
"Time \n",
"15.10.20 00:00:01 9.157 7.878 13.265 6.515 6.004 \n",
"15.10.20 00:00:02 8.819 7.424 12.104 6.643 5.986 \n",
"15.10.20 00:00:03 8.238 7.494 8.660 6.199 5.304 \n",
"15.10.20 00:00:04 8.269 7.554 8.916 6.522 6.175 \n",
"15.10.20 00:00:05 8.378 7.808 8.852 6.450 6.222 \n",
"\n",
" Max[W] L2 AVG[W] L3 Min[W] L3 Max[W] L3 \n",
"Time \n",
"15.10.20 00:00:01 6.963 7.210 6.939 7.701 \n",
"15.10.20 00:00:02 8.129 9.163 7.199 13.603 \n",
"15.10.20 00:00:03 6.595 7.501 7.057 8.369 \n",
"15.10.20 00:00:04 6.811 7.221 6.728 7.801 \n",
"15.10.20 00:00:05 6.800 7.229 6.982 7.485 "
],
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>AVG[W] L1</th>\n <th>Min[W] L1</th>\n <th>Max[W] L1</th>\n <th>AVG[W] L2</th>\n <th>Min[W] L2</th>\n <th>Max[W] L2</th>\n <th>AVG[W] L3</th>\n <th>Min[W] L3</th>\n <th>Max[W] L3</th>\n </tr>\n <tr>\n <th>Time</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>15.10.20 00:00:01</th>\n <td>9.157</td>\n <td>7.878</td>\n <td>13.265</td>\n <td>6.515</td>\n <td>6.004</td>\n <td>6.963</td>\n <td>7.210</td>\n <td>6.939</td>\n <td>7.701</td>\n </tr>\n <tr>\n <th>15.10.20 00:00:02</th>\n <td>8.819</td>\n <td>7.424</td>\n <td>12.104</td>\n <td>6.643</td>\n <td>5.986</td>\n <td>8.129</td>\n <td>9.163</td>\n <td>7.199</td>\n <td>13.603</td>\n </tr>\n <tr>\n <th>15.10.20 00:00:03</th>\n <td>8.238</td>\n <td>7.494</td>\n <td>8.660</td>\n <td>6.199</td>\n <td>5.304</td>\n <td>6.595</td>\n <td>7.501</td>\n <td>7.057</td>\n <td>8.369</td>\n </tr>\n <tr>\n <th>15.10.20 00:00:04</th>\n <td>8.269</td>\n <td>7.554</td>\n <td>8.916</td>\n <td>6.522</td>\n <td>6.175</td>\n <td>6.811</td>\n <td>7.221</td>\n <td>6.728</td>\n <td>7.801</td>\n </tr>\n <tr>\n <th>15.10.20 00:00:05</th>\n <td>8.378</td>\n <td>7.808</td>\n <td>8.852</td>\n <td>6.450</td>\n <td>6.222</td>\n <td>6.800</td>\n <td>7.229</td>\n <td>6.982</td>\n <td>7.485</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {},
"execution_count": 7
}
],
"source": [
"l1_activitypub = pd.read_csv(\"./MeasurementFiles/ActivityPub/Messung_2_L1.csv\", sep=\";\", decimal=\",\").dropna(axis=1).drop('Nummer', axis=1)\n",
"l1_activitypub.columns =['Time', 'AVG[W] L1', 'Min[W] L1', 'Max[W] L1']\n",
"l1_activitypub.index = l1_activitypub['Time']\n",
"l1_activitypub = l1_activitypub.drop(\"Time\", axis=1)\n",
"l2_activitypub = pd.read_csv(\"./MeasurementFiles/ActivityPub/Messung_2_L2.csv\", sep=\";\", decimal=\",\").dropna(axis=1).drop('Nummer', axis=1)\n",
"l2_activitypub.columns =['Time', 'AVG[W] L2', 'Min[W] L2', 'Max[W] L2']\n",
"l2_activitypub.index = l2_activitypub['Time']\n",
"l2_activitypub = l2_activitypub.drop(\"Time\", axis=1)\n",
"l3_activitypub = pd.read_csv(\"./MeasurementFiles/ActivityPub/Messung_2_L3.csv\", sep=\";\", decimal=\",\").dropna(axis=1).drop('Nummer', axis=1)\n",
"l3_activitypub.columns =['Time', 'AVG[W] L3', 'Min[W] L3', 'Max[W] L3']\n",
"l3_activitypub.index = l3_activitypub['Time']\n",
"l3_activitypub = l3_activitypub.drop(\"Time\", axis=1)\n",
"activitypub = l1_activitypub.merge(l2_activitypub, on='Time').merge(l3_activitypub, on='Time')\n",
"activitypub.head()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"(142191, 27)\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
" AVG[W] L1 Min[W] L1 Max[W] L1 AVG[W] L2 Min[W] L2 \\\n",
"Time \n",
"15.10.20 00:00:01 9.157 7.878 13.265 6.515 6.004 \n",
"15.10.20 00:00:02 8.819 7.424 12.104 6.643 5.986 \n",
"15.10.20 00:00:03 8.238 7.494 8.660 6.199 5.304 \n",
"15.10.20 00:00:04 8.269 7.554 8.916 6.522 6.175 \n",
"15.10.20 00:00:05 8.378 7.808 8.852 6.450 6.222 \n",
"\n",
" Max[W] L2 AVG[W] L3 Min[W] L3 Max[W] L3 CPU% L1 ... \\\n",
"Time ... \n",
"15.10.20 00:00:01 6.963 7.210 6.939 7.701 0.0 ... \n",
"15.10.20 00:00:02 8.129 9.163 7.199 13.603 0.0 ... \n",
"15.10.20 00:00:03 6.595 7.501 7.057 8.369 0.0 ... \n",
"15.10.20 00:00:04 6.811 7.221 6.728 7.801 0.0 ... \n",
"15.10.20 00:00:05 6.800 7.229 6.982 7.485 0.0 ... \n",
"\n",
" KB Transmitted L2 KB Received L2 KB Read L2 KB Write L2 \\\n",
"Time \n",
"15.10.20 00:00:01 0.0 0.0 0.0 0.0 \n",
"15.10.20 00:00:02 0.0 0.0 0.0 0.0 \n",
"15.10.20 00:00:03 0.0 0.0 0.0 0.0 \n",
"15.10.20 00:00:04 0.0 0.0 0.0 0.0 \n",
"15.10.20 00:00:05 0.0 0.0 0.0 0.0 \n",
"\n",
" CPU% L3 MEM Used L3 KB Transmitted L3 KB Received L3 \\\n",
"Time \n",
"15.10.20 00:00:01 0.0 0.0 0.0 0.0 \n",
"15.10.20 00:00:02 0.0 0.0 0.0 0.0 \n",
"15.10.20 00:00:03 0.0 0.0 0.0 0.0 \n",
"15.10.20 00:00:04 0.0 0.0 0.0 0.0 \n",
"15.10.20 00:00:05 0.0 0.0 0.0 0.0 \n",
"\n",
" KB Read L3 KB Write L3 \n",
"Time \n",
"15.10.20 00:00:01 0.0 0.0 \n",
"15.10.20 00:00:02 0.0 0.0 \n",
"15.10.20 00:00:03 0.0 0.0 \n",
"15.10.20 00:00:04 0.0 0.0 \n",
"15.10.20 00:00:05 0.0 0.0 \n",
"\n",
"[5 rows x 27 columns]"
],
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>AVG[W] L1</th>\n <th>Min[W] L1</th>\n <th>Max[W] L1</th>\n <th>AVG[W] L2</th>\n <th>Min[W] L2</th>\n <th>Max[W] L2</th>\n <th>AVG[W] L3</th>\n <th>Min[W] L3</th>\n <th>Max[W] L3</th>\n <th>CPU% L1</th>\n <th>...</th>\n <th>KB Transmitted L2</th>\n <th>KB Received L2</th>\n <th>KB Read L2</th>\n <th>KB Write L2</th>\n <th>CPU% L3</th>\n <th>MEM Used L3</th>\n <th>KB Transmitted L3</th>\n <th>KB Received L3</th>\n <th>KB Read L3</th>\n <th>KB Write L3</th>\n </tr>\n <tr>\n <th>Time</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>15.10.20 00:00:01</th>\n <td>9.157</td>\n <td>7.878</td>\n <td>13.265</td>\n <td>6.515</td>\n <td>6.004</td>\n <td>6.963</td>\n <td>7.210</td>\n <td>6.939</td>\n <td>7.701</td>\n <td>0.0</td>\n <td>...</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>15.10.20 00:00:02</th>\n <td>8.819</td>\n <td>7.424</td>\n <td>12.104</td>\n <td>6.643</td>\n <td>5.986</td>\n <td>8.129</td>\n <td>9.163</td>\n <td>7.199</td>\n <td>13.603</td>\n <td>0.0</td>\n <td>...</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>15.10.20 00:00:03</th>\n <td>8.238</td>\n <td>7.494</td>\n <td>8.660</td>\n <td>6.199</td>\n <td>5.304</td>\n <td>6.595</td>\n <td>7.501</td>\n <td>7.057</td>\n <td>8.369</td>\n <td>0.0</td>\n <td>...</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>15.10.20 00:00:04</th>\n <td>8.269</td>\n <td>7.554</td>\n <td>8.916</td>\n <td>6.522</td>\n <td>6.175</td>\n <td>6.811</td>\n <td>7.221</td>\n <td>6.728</td>\n <td>7.801</td>\n <td>0.0</td>\n <td>...</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>15.10.20 00:00:05</th>\n <td>8.378</td>\n <td>7.808</td>\n <td>8.852</td>\n <td>6.450</td>\n <td>6.222</td>\n <td>6.800</td>\n <td>7.229</td>\n <td>6.982</td>\n <td>7.485</td>\n <td>0.0</td>\n <td>...</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n </tr>\n </tbody>\n</table>\n<p>5 rows × 27 columns</p>\n</div>"
},
"metadata": {},
"execution_count": 8
}
],
"source": [
"cols = ['Date Time','[CPU]Totl%','[MEM]Used','[NET]TxKBTot','[NET]RxKBTot','[DSK]ReadKBTot','[DSK]WriteKBTot']\n",
"f1_activitypub = pd.read_csv(\"./MeasurementFiles/ActivityPub/Network-server-207-F1.csv\", sep=\";\", usecols=cols).dropna(axis=1)\n",
"f1_activitypub.columns =['Time','CPU% L1','MEM Used L1','KB Transmitted L1','KB Received L1','KB Read L1','KB Write L1']\n",
"f1_activitypub['Time'] = [time.strftime('%d.%m.%y %H:%M:%S', time.strptime(time_string, '%Y%m%d %H:%M:%S')) for time_string in f1_activitypub['Time']]\n",
"f1_activitypub.index = f1_activitypub['Time']\n",
"f1_activitypub = f1_activitypub.drop(\"Time\", axis=1)\n",
"f2_activitypub = pd.read_csv(\"./MeasurementFiles/ActivityPub/Network-server-209-F2.csv\", sep=\";\", usecols=cols).dropna(axis=1)\n",
"f2_activitypub.columns =['Time','CPU% L2','MEM Used L2','KB Transmitted L2','KB Received L2','KB Read L2','KB Write L2']\n",
"f2_activitypub['Time'] = [time.strftime('%d.%m.%y %H:%M:%S', time.strptime(time_string, '%Y%m%d %H:%M:%S')) for time_string in f2_activitypub['Time']]\n",
"f2_activitypub.index = f2_activitypub['Time']\n",
"f2_activitypub = f2_activitypub.drop(\"Time\", axis=1)\n",
"f3_activitypub = pd.read_csv(\"./MeasurementFiles/ActivityPub/Network-server-208-F3.csv\", sep=\";\", usecols=cols).dropna(axis=1)\n",
"f3_activitypub.columns =['Time','CPU% L3','MEM Used L3','KB Transmitted L3','KB Received L3','KB Read L3','KB Write L3']\n",
"f3_activitypub['Time'] = [time.strftime('%d.%m.%y %H:%M:%S', time.strptime(time_string, '%Y%m%d %H:%M:%S')) for time_string in f3_activitypub['Time']]\n",
"f3_activitypub.index = f3_activitypub['Time']\n",
"f3_activitypub = f3_activitypub.drop(\"Time\", axis=1)\n",
"activitypub = activitypub.merge(f1_activitypub, on='Time', how='outer').merge(f2_activitypub, on='Time', how='outer').merge(f3_activitypub, on='Time', how='outer').fillna(0)\n",
"print(activitypub.shape)\n",
"activitypub.head()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"(228591, 27)\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
" AVG[W] L1 Min[W] L1 Max[W] L1 AVG[W] L2 Min[W] L2 \\\n",
"Time \n",
"14.10.20 00:00:01 0.076 0.009 0.148 -0.117 -0.196 \n",
"14.10.20 00:00:02 0.100 0.021 0.178 -0.068 -0.209 \n",
"14.10.20 00:00:03 0.090 0.002 0.186 0.457 -0.222 \n",
"14.10.20 00:00:04 0.073 -0.018 0.131 -0.085 -0.169 \n",
"14.10.20 00:00:05 0.106 0.029 0.169 -0.100 -0.223 \n",
"\n",
" Max[W] L2 AVG[W] L3 Min[W] L3 Max[W] L3 CPU% L1 ... \\\n",
"Time ... \n",
"14.10.20 00:00:01 0.037 0.052 -0.075 0.207 0.0 ... \n",
"14.10.20 00:00:02 0.007 0.030 -0.132 0.176 0.0 ... \n",
"14.10.20 00:00:03 2.782 0.027 -0.130 0.182 0.0 ... \n",
"14.10.20 00:00:04 0.019 0.055 -0.066 0.186 0.0 ... \n",
"14.10.20 00:00:05 0.027 0.005 -0.139 0.176 0.0 ... \n",
"\n",
" KB Transmitted L2 KB Received L2 KB Read L2 KB Write L2 \\\n",
"Time \n",
"14.10.20 00:00:01 0.0 0.0 0.0 0.0 \n",
"14.10.20 00:00:02 0.0 0.0 0.0 0.0 \n",
"14.10.20 00:00:03 0.0 0.0 0.0 0.0 \n",
"14.10.20 00:00:04 0.0 0.0 0.0 0.0 \n",
"14.10.20 00:00:05 0.0 0.0 0.0 0.0 \n",
"\n",
" CPU% L3 MEM Used L3 KB Transmitted L3 KB Received L3 \\\n",
"Time \n",
"14.10.20 00:00:01 0.0 0.0 0.0 0.0 \n",
"14.10.20 00:00:02 0.0 0.0 0.0 0.0 \n",
"14.10.20 00:00:03 0.0 0.0 0.0 0.0 \n",
"14.10.20 00:00:04 0.0 0.0 0.0 0.0 \n",
"14.10.20 00:00:05 0.0 0.0 0.0 0.0 \n",
"\n",
" KB Read L3 KB Write L3 \n",
"Time \n",
"14.10.20 00:00:01 0.0 0.0 \n",
"14.10.20 00:00:02 0.0 0.0 \n",
"14.10.20 00:00:03 0.0 0.0 \n",
"14.10.20 00:00:04 0.0 0.0 \n",
"14.10.20 00:00:05 0.0 0.0 \n",
"\n",
"[5 rows x 27 columns]"
],
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>AVG[W] L1</th>\n <th>Min[W] L1</th>\n <th>Max[W] L1</th>\n <th>AVG[W] L2</th>\n <th>Min[W] L2</th>\n <th>Max[W] L2</th>\n <th>AVG[W] L3</th>\n <th>Min[W] L3</th>\n <th>Max[W] L3</th>\n <th>CPU% L1</th>\n <th>...</th>\n <th>KB Transmitted L2</th>\n <th>KB Received L2</th>\n <th>KB Read L2</th>\n <th>KB Write L2</th>\n <th>CPU% L3</th>\n <th>MEM Used L3</th>\n <th>KB Transmitted L3</th>\n <th>KB Received L3</th>\n <th>KB Read L3</th>\n <th>KB Write L3</th>\n </tr>\n <tr>\n <th>Time</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>14.10.20 00:00:01</th>\n <td>0.076</td>\n <td>0.009</td>\n <td>0.148</td>\n <td>-0.117</td>\n <td>-0.196</td>\n <td>0.037</td>\n <td>0.052</td>\n <td>-0.075</td>\n <td>0.207</td>\n <td>0.0</td>\n <td>...</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>14.10.20 00:00:02</th>\n <td>0.100</td>\n <td>0.021</td>\n <td>0.178</td>\n <td>-0.068</td>\n <td>-0.209</td>\n <td>0.007</td>\n <td>0.030</td>\n <td>-0.132</td>\n <td>0.176</td>\n <td>0.0</td>\n <td>...</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>14.10.20 00:00:03</th>\n <td>0.090</td>\n <td>0.002</td>\n <td>0.186</td>\n <td>0.457</td>\n <td>-0.222</td>\n <td>2.782</td>\n <td>0.027</td>\n <td>-0.130</td>\n <td>0.182</td>\n <td>0.0</td>\n <td>...</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>14.10.20 00:00:04</th>\n <td>0.073</td>\n <td>-0.018</td>\n <td>0.131</td>\n <td>-0.085</td>\n <td>-0.169</td>\n <td>0.019</td>\n <td>0.055</td>\n <td>-0.066</td>\n <td>0.186</td>\n <td>0.0</td>\n <td>...</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>14.10.20 00:00:05</th>\n <td>0.106</td>\n <td>0.029</td>\n <td>0.169</td>\n <td>-0.100</td>\n <td>-0.223</td>\n <td>0.027</td>\n <td>0.005</td>\n <td>-0.139</td>\n <td>0.176</td>\n <td>0.0</td>\n <td>...</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n </tr>\n </tbody>\n</table>\n<p>5 rows × 27 columns</p>\n</div>"
},
"metadata": {},
"execution_count": 9
}
],
"source": [
"frames = [matrix, activitypub]\n",
"result = pd.concat(frames)\n",
"result = result[~result.index.duplicated(keep='first')]\n",
"result.to_csv(\"output/MeasurementData.csv\")\n",
"print(result.shape)\n",
"result.head()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"tags": []
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"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",
"211111111 Matrix\n",
"121111111 Matrix\n",
"111111011 Matrix\n",
"011111111 Matrix\n",
"111011111 Matrix\n",
"112111111 Matrix\n",
"111111101 Matrix\n",
"101111111 Matrix\n",
"111110111 Matrix\n",
"111211111 Matrix\n",
"111111111 Matrix\n",
"110111111 Matrix\n",
"baseline\n",
"Iteration 5.500000e+00\n",
"Start 1.602788e+09\n",
"End 1.602788e+09\n",
"AVG[W] L1 5.950951e+00\n",
"AVG[W] L2 4.132172e+00\n",
"AVG[W] L3 5.818045e+00\n",
"CPU% L1 5.080473e-02\n",
"CPU% L2 2.116508e-02\n",
"CPU% L3 4.742914e-02\n",
"Energy L1 5.950951e+00\n",
"Energy L2 4.132172e+00\n",
"Energy L3 5.818045e+00\n",
"KB Read L1 0.000000e+00\n",
"KB Read L2 0.000000e+00\n",
"KB Read L3 0.000000e+00\n",
"KB Received L1 0.000000e+00\n",
"KB Received L2 0.000000e+00\n",
"KB Received L3 0.000000e+00\n",
"KB Transmitted L1 0.000000e+00\n",
"KB Transmitted L2 0.000000e+00\n",
"KB Transmitted L3 0.000000e+00\n",
"KB Write L1 3.793847e+00\n",
"KB Write L2 5.399402e+00\n",
"KB Write L3 5.540977e+00\n",
"MEM Used L1 4.075354e+06\n",
"MEM Used L2 3.891142e+06\n",
"MEM Used L3 3.822240e+06\n",
"Max[W] L1 6.101333e+00\n",
"Max[W] L2 4.379694e+00\n",
"Max[W] L3 5.993006e+00\n",
"Min[W] L1 5.836322e+00\n",
"Min[W] L2 3.933443e+00\n",
"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",
"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 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 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",
"dtype: float64\n",
"6.704910347268386\n",
"max\n",
"AVG[W] L1 6.501847e+00\n",
"Min[W] L1 6.013449e+00\n",
"Max[W] L1 7.691280e+00\n",
"AVG[W] L2 4.705025e+00\n",
"Min[W] L2 3.876602e+00\n",
"Max[W] L2 6.766508e+00\n",
"AVG[W] L3 6.201432e+00\n",
"Min[W] L3 5.670492e+00\n",
"Max[W] L3 7.394390e+00\n",
"CPU% L1 3.728814e+00\n",
"MEM Used L1 4.571048e+06\n",
"KB Transmitted L1 8.279661e+00\n",
"KB Received L1 1.099153e+01\n",
"KB Read L1 0.000000e+00\n",
"KB Write L1 4.452542e+02\n",
"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 Read L2 0.000000e+00\n",
"KB Write L2 4.514915e+02\n",
"CPU% L3 3.084746e+00\n",
"MEM Used L3 4.377153e+06\n",
"KB Transmitted L3 5.516949e+00\n",
"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",
"Iteration 2.600000e+01\n",
"Energy total 1.363917e+02\n",
"Actions Send 1.090000e+02\n",
"dtype: float64\n",
"150.1559780437906\n"
]
}
],
"source": [
"measurement_files = Path(\"MeasurementFiles\").rglob('*.csv')\n",
"summary = pd.DataFrame()\n",
"baseline = None\n",
"maxW = None\n",
"minW = None\n",
"for measurement_file in measurement_files:\n",
" measurement_avg = None\n",
" if \"Messung\" in measurement_file.name or \"Network\" in measurement_file.name:\n",
" continue\n",
" measurement_name = measurement_file.name.split(\" \")[1]\n",
" if \"Windows\" in measurement_file.name:\n",
" measurement_name = measurement_name + \" Windows\"\n",
" elif \"Matrix\" in measurement_file.name:\n",
" measurement_name = measurement_name + \" Matrix\"\n",
" elif \"ActivityPub\" in measurement_file.name:\n",
" measurement_name = measurement_name + \" ActivityPub\"\n",
" print(measurement_name)\n",
" csv_data = pd.read_csv(measurement_file.absolute()).dropna(axis=1)\n",
" start_measurement_string = time.strftime('%d.%m.%y %H:%M:%S', time.localtime(int(csv_data[\"Start\"][0])))\n",
" 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",
" \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",
" 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",
"\n",
" measurement_results = pd.DataFrame()\n",
" iteration_count = 0\n",
" for measurement_row in csv_data.to_numpy():\n",
" title = measurement_name + \" \" + str(measurement_row[0])\n",
" start_string = time.strftime('%d.%m.%y %H:%M:%S', time.localtime(int(measurement_row[1]) + 2))\n",
" 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",
" 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",
"\n",
" iteration['Iteration'] = int(measurement_row[0])\n",
" measurement_results = measurement_results.append(iteration, ignore_index=True)\n",
"\n",
" if baseline is not None:\n",
" baselineTotal = baseline[\"Energy L1\"] + baseline[\"Energy L2\"] + baseline[\"Energy L3\"]\n",
" iteration[\"Energy total\"] = iteration[\"Energy L1\"] + iteration[\"Energy L2\"] + iteration[\"Energy L3\"] - baselineTotal\n",
" if \"Baseline\" not in measurement_name and \"Windows\" not in measurement_name:\n",
" iteration[\"Actions Send\"] = int(measurement_row[3])\n",
" energyEfficiency = iteration[\"Energy total\"] / (iteration[\"Actions Send\"] / 120)\n",
" if maxW is None or energyEfficiency > (maxW[\"Energy total\"] / (maxW[\"Actions Send\"] / 120)):\n",
" maxW = iteration\n",
"\n",
" if minW is None or energyEfficiency < (minW[\"Energy total\"] / (minW[\"Actions Send\"] / 120)):\n",
" minW = iteration\n",
"\n",
" iteration_data = iteration_data.reset_index()\n",
" del iteration_data[\"Time\"]\n",
" if measurement_avg is None:\n",
" measurement_avg = iteration_data\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",
" 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",
" if \"Windows\" not in measurement_name:\n",
" if \"Baseline\" in measurement_name:\n",
" baseline = csv_data_mean\n",
" else:\n",
" csv_data_mean[\"Measurement\"] = measurement_name\n",
" cols_name = [\"Measurement\",\"Actions Send\",\"AVG[W] L1\",\"AVG[W] L2\",\"AVG[W] L3\",\"Energy L1\",\"Energy L2\",\"Energy L3\",\"CPU% L1\",\"CPU% L2\",\"CPU% L3\",\"MEM Used L1\",\"MEM Used L2\",\"MEM Used L3\",\"KB Received L1\",\"KB Received L2\",\"KB Received L3\",\"KB Write L1\",\"KB Write L2\",\"KB Write L3\"]\n",
" summary = summary.append(csv_data_mean[cols_name], ignore_index=True)\n",
"if baseline is not None:\n",
" print(\"baseline\")\n",
" print(baseline)\n",
" print(\"min\")\n",
" print(minW)\n",
" minW[\"Energy Efficiency\"] = minW[\"Energy total\"] / (minW[\"Actions Send\"] / 120)\n",
" print(minW[\"Energy Efficiency\"])\n",
" print(\"max\")\n",
" print(maxW)\n",
" maxW[\"Energy Efficiency\"] = maxW[\"Energy total\"] / (maxW[\"Actions Send\"] / 120)\n",
" print(maxW[\"Energy Efficiency\"])\n",
" for key in summary:\n",
" if key != \"Measurement\" and key != \"Actions Send\":\n",
" baseline_values = []\n",
" for value in summary[key]:\n",
" baseline_values.append(baseline[key])\n",
" summary[key + \" without Baseline\"] = summary[key] - baseline_values\n",
" summary[\"Energy total\"] = summary[\"Energy L1 without Baseline\"] + summary[\"Energy L2 without Baseline\"] + summary[\"Energy L3 without Baseline\"]\n",
" summary[\"Energy Efficiency\"] = summary[\"Energy total\"] / (summary[\"Actions Send\"] / 120)\n",
" summary[\"Energy Efficiency normalized\"] = (summary[\"Energy Efficiency\"] - minW[\"Energy Efficiency\"])/(maxW[\"Energy Efficiency\"] - minW[\"Energy Efficiency\"])\n",
" summary[\"CPU% total\"] = summary[\"CPU% L1 without Baseline\"] + summary[\"CPU% L2 without Baseline\"] + summary[\"CPU% L3 without Baseline\"]\n",
" 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\")"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"categories = ['Q1.1','Q1.2','Q1.3', 'Q2.1', 'Q2.2', 'Q3.1', 'Q4.1', 'Q4.2', 'Q4.3']\n",
"\n",
"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",
" 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",
" 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",
" theta=categories,\n",
" fill='toself',\n",
" name='Best'\n",
"))\n",
"\n",
"fig.update_layout(\n",
" title_text=\"Matrix\",\n",
" polar=dict(\n",
" angularaxis=dict(\n",
" direction=\"clockwise\"\n",
" ),\n",
" radialaxis=dict(\n",
" visible=True,\n",
" range=[0, 1],\n",
" tickmode=\"array\",\n",
" tickvals=[0, 1],\n",
" ticktext=[0, 1]\n",
" )),\n",
" showlegend=True\n",
")\n",
"\n",
"fig.write_image(\"Radar Matrix.png\")"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"categories = ['Q1.1','Q1.2','Q1.3', 'Q2.1', 'Q2.2', 'Q3.1', 'Q4.1', 'Q4.2', 'Q4.3']\n",
"\n",
"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",
" 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",
" 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",
" theta=categories,\n",
" fill='toself',\n",
" name='Best'\n",
"))\n",
"\n",
"fig.update_layout(\n",
" title_text=\"ActivityPub\",\n",
" polar=dict(\n",
" angularaxis=dict(\n",
" direction=\"clockwise\"\n",
" ),\n",
" radialaxis=dict(\n",
" visible=True,\n",
" range=[0, 1],\n",
" tickmode=\"array\",\n",
" tickvals=[0, 1],\n",
" ticktext=[0, 1]\n",
" )),\n",
" showlegend=True\n",
")\n",
"\n",
"fig.write_image(\"Radar ActivityPub.png\")"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"End\n"
]
}
],
"source": [
"print(\"End\")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.6-final"
}
},
"nbformat": 4,
"nbformat_minor": 4
}