From a17e7eda3cfd70b033e2fb6097880fba7f5af864 Mon Sep 17 00:00:00 2001 From: Dante Niewenhuis Date: Fri, 12 Jul 2024 14:08:53 +0200 Subject: Merged experiment-scenario and experiment-base by moving ScenarioCli.kt to experiment-base. Renamed the distribution of experiment-base to OpenDCScenarioRunner (#236) --- .../src/main/Python_scripts/OpenDCdemo.ipynb | 1121 -------------------- 1 file changed, 1121 deletions(-) delete mode 100644 opendc-experiments/opendc-experiments-scenario/src/main/Python_scripts/OpenDCdemo.ipynb (limited to 'opendc-experiments/opendc-experiments-scenario/src/main/Python_scripts/OpenDCdemo.ipynb') diff --git a/opendc-experiments/opendc-experiments-scenario/src/main/Python_scripts/OpenDCdemo.ipynb b/opendc-experiments/opendc-experiments-scenario/src/main/Python_scripts/OpenDCdemo.ipynb deleted file mode 100644 index 09ff26d6..00000000 --- a/opendc-experiments/opendc-experiments-scenario/src/main/Python_scripts/OpenDCdemo.ipynb +++ /dev/null @@ -1,1121 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "18170001", - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "\n", - "from IPython.display import display, HTML\n", - "\n", - "base_folder = \"../\"" - ] - }, - { - "cell_type": "markdown", - "id": "422f4d05", - "metadata": {}, - "source": [ - "## Topologies" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "a2d05361", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Topology name: multi\n" - ] - }, - { - "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", - "
ClusterIDClusterNameCoresSpeedMemorynumberOfHostsmemoryCapacityPerHostcoreCountPerHost
0A01A01323.202048125632
1B01B01482.9312566648
2C01C01323.202048212816
" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Topology name: single\n" - ] - }, - { - "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", - "
ClusterIDClusterNameCoresSpeedMemorynumberOfHostsmemoryCapacityPerHostcoreCountPerHost
0A01A0183.212811288
" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "def read_topology(topology_name):\n", - " print(f\"Topology name: {topology_name}\")\n", - " df = pd.read_csv(f\"{base_folder}/resources/env/{topology_name}.txt\", delimiter=\";\")\n", - " display(HTML(df.to_html()))\n", - " \n", - "read_topology(\"multi\")\n", - "read_topology(\"single\")" - ] - }, - { - "cell_type": "markdown", - "id": "8f4fe54d", - "metadata": {}, - "source": [ - "## Traces" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "fd17d88a", - "metadata": {}, - "outputs": [ - { - "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", - "
idtimestampdurationcpu_countcpu_usage
010192013-08-12 13:40:46+00:0030000010.000000
110192013-08-12 13:45:46+00:00300000111.703998
210192013-08-12 13:55:46+00:0060000010.000000
310192013-08-12 14:00:46+00:00300000111.703998
410192013-08-12 14:15:46+00:0090000010.000000
\n", - "
" - ], - "text/plain": [ - " id timestamp duration cpu_count cpu_usage\n", - "0 1019 2013-08-12 13:40:46+00:00 300000 1 0.000000\n", - "1 1019 2013-08-12 13:45:46+00:00 300000 1 11.703998\n", - "2 1019 2013-08-12 13:55:46+00:00 600000 1 0.000000\n", - "3 1019 2013-08-12 14:00:46+00:00 300000 1 11.703998\n", - "4 1019 2013-08-12 14:15:46+00:00 900000 1 0.000000" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_trace = pd.read_parquet(f\"{base_folder}/resources/bitbrains-small/trace/trace.parquet\")\n", - "df_trace.head()" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "346f097f", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "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", - "
idstart_timestop_timecpu_countcpu_capacitymem_capacity
010192013-08-12 13:35:46+00:002013-09-11 13:39:58+00:0012926.000135181352
110232013-08-12 13:35:46+00:002013-09-11 13:39:58+00:0012925.999560260096
210262013-08-12 13:35:46+00:002013-09-11 13:39:58+00:0012925.999717249972
310522013-08-29 14:38:12+00:002013-09-05 07:09:07+00:0012926.000107131245
410732013-08-21 11:07:12+00:002013-09-11 13:39:58+00:0012599.999649179306
\n", - "
" - ], - "text/plain": [ - " id start_time stop_time cpu_count \\\n", - "0 1019 2013-08-12 13:35:46+00:00 2013-09-11 13:39:58+00:00 1 \n", - "1 1023 2013-08-12 13:35:46+00:00 2013-09-11 13:39:58+00:00 1 \n", - "2 1026 2013-08-12 13:35:46+00:00 2013-09-11 13:39:58+00:00 1 \n", - "3 1052 2013-08-29 14:38:12+00:00 2013-09-05 07:09:07+00:00 1 \n", - "4 1073 2013-08-21 11:07:12+00:00 2013-09-11 13:39:58+00:00 1 \n", - "\n", - " cpu_capacity mem_capacity \n", - "0 2926.000135 181352 \n", - "1 2925.999560 260096 \n", - "2 2925.999717 249972 \n", - "3 2926.000107 131245 \n", - "4 2599.999649 179306 " - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_meta = pd.read_parquet(f\"{base_folder}/resources/bitbrains-small/trace/meta.parquet\")\n", - "df_meta.head()" - ] - }, - { - "cell_type": "markdown", - "id": "13bf9fdb", - "metadata": {}, - "source": [ - "# Lets run this in OpenDC!" - ] - }, - { - "cell_type": "markdown", - "id": "c9766446", - "metadata": {}, - "source": [ - "## Resulting Files" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "0d400ffd", - "metadata": {}, - "outputs": [ - { - "ename": "TypeError", - "evalue": "Addition/subtraction of integers and integer-arrays with Timestamp is no longer supported. Instead of adding/subtracting `n`, use `n * obj.freq`", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[8], line 17\u001b[0m\n\u001b[1;32m 14\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21madd_absolute_timestamp\u001b[39m(df, start_dt):\n\u001b[1;32m 15\u001b[0m df[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mabsolute_timestamp\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m start_dt \u001b[38;5;241m+\u001b[39m (df[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtimestamp\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m-\u001b[39m df[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtimestamp\u001b[39m\u001b[38;5;124m\"\u001b[39m]\u001b[38;5;241m.\u001b[39mmin())\n\u001b[0;32m---> 17\u001b[0m \u001b[43madd_absolute_timestamp\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdf_host_single\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdf_meta\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mstart_time\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmin\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 18\u001b[0m add_absolute_timestamp(df_host_single, df_meta[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstart_time\u001b[39m\u001b[38;5;124m\"\u001b[39m]\u001b[38;5;241m.\u001b[39mmin())\n\u001b[1;32m 20\u001b[0m add_absolute_timestamp(df_server_single, df_meta[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstart_time\u001b[39m\u001b[38;5;124m\"\u001b[39m]\u001b[38;5;241m.\u001b[39mmin())\n", - "Cell \u001b[0;32mIn[8], line 15\u001b[0m, in \u001b[0;36madd_absolute_timestamp\u001b[0;34m(df, start_dt)\u001b[0m\n\u001b[1;32m 14\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21madd_absolute_timestamp\u001b[39m(df, start_dt):\n\u001b[0;32m---> 15\u001b[0m df[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mabsolute_timestamp\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[43mstart_dt\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43m \u001b[49m\u001b[43m(\u001b[49m\u001b[43mdf\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtimestamp\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mdf\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtimestamp\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmin\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/core/ops/common.py:72\u001b[0m, in \u001b[0;36m_unpack_zerodim_and_defer..new_method\u001b[0;34m(self, other)\u001b[0m\n\u001b[1;32m 68\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mNotImplemented\u001b[39m\n\u001b[1;32m 70\u001b[0m other \u001b[38;5;241m=\u001b[39m item_from_zerodim(other)\n\u001b[0;32m---> 72\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mmethod\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mother\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/core/arraylike.py:107\u001b[0m, in \u001b[0;36mOpsMixin.__radd__\u001b[0;34m(self, other)\u001b[0m\n\u001b[1;32m 105\u001b[0m \u001b[38;5;129m@unpack_zerodim_and_defer\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m__radd__\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 106\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__radd__\u001b[39m(\u001b[38;5;28mself\u001b[39m, other):\n\u001b[0;32m--> 107\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_arith_method\u001b[49m\u001b[43m(\u001b[49m\u001b[43mother\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mroperator\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mradd\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/core/series.py:6262\u001b[0m, in \u001b[0;36mSeries._arith_method\u001b[0;34m(self, other, op)\u001b[0m\n\u001b[1;32m 6260\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_arith_method\u001b[39m(\u001b[38;5;28mself\u001b[39m, other, op):\n\u001b[1;32m 6261\u001b[0m \u001b[38;5;28mself\u001b[39m, other \u001b[38;5;241m=\u001b[39m ops\u001b[38;5;241m.\u001b[39malign_method_SERIES(\u001b[38;5;28mself\u001b[39m, other)\n\u001b[0;32m-> 6262\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mbase\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mIndexOpsMixin\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_arith_method\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mother\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mop\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/core/base.py:1325\u001b[0m, in \u001b[0;36mIndexOpsMixin._arith_method\u001b[0;34m(self, other, op)\u001b[0m\n\u001b[1;32m 1322\u001b[0m rvalues \u001b[38;5;241m=\u001b[39m ensure_wrapped_if_datetimelike(rvalues)\n\u001b[1;32m 1324\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m np\u001b[38;5;241m.\u001b[39merrstate(\u001b[38;5;28mall\u001b[39m\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mignore\u001b[39m\u001b[38;5;124m\"\u001b[39m):\n\u001b[0;32m-> 1325\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mops\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43marithmetic_op\u001b[49m\u001b[43m(\u001b[49m\u001b[43mlvalues\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrvalues\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mop\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1327\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_construct_result(result, name\u001b[38;5;241m=\u001b[39mres_name)\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/core/ops/array_ops.py:218\u001b[0m, in \u001b[0;36marithmetic_op\u001b[0;34m(left, right, op)\u001b[0m\n\u001b[1;32m 205\u001b[0m \u001b[38;5;66;03m# NB: We assume that extract_array and ensure_wrapped_if_datetimelike\u001b[39;00m\n\u001b[1;32m 206\u001b[0m \u001b[38;5;66;03m# have already been called on `left` and `right`,\u001b[39;00m\n\u001b[1;32m 207\u001b[0m \u001b[38;5;66;03m# and `maybe_prepare_scalar_for_op` has already been called on `right`\u001b[39;00m\n\u001b[1;32m 208\u001b[0m \u001b[38;5;66;03m# We need to special-case datetime64/timedelta64 dtypes (e.g. because numpy\u001b[39;00m\n\u001b[1;32m 209\u001b[0m \u001b[38;5;66;03m# casts integer dtypes to timedelta64 when operating with timedelta64 - GH#22390)\u001b[39;00m\n\u001b[1;32m 211\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (\n\u001b[1;32m 212\u001b[0m should_extension_dispatch(left, right)\n\u001b[1;32m 213\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(right, (Timedelta, BaseOffset, Timestamp))\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 216\u001b[0m \u001b[38;5;66;03m# Timedelta/Timestamp and other custom scalars are included in the check\u001b[39;00m\n\u001b[1;32m 217\u001b[0m \u001b[38;5;66;03m# because numexpr will fail on it, see GH#31457\u001b[39;00m\n\u001b[0;32m--> 218\u001b[0m res_values \u001b[38;5;241m=\u001b[39m \u001b[43mop\u001b[49m\u001b[43m(\u001b[49m\u001b[43mleft\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mright\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 219\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 220\u001b[0m \u001b[38;5;66;03m# TODO we should handle EAs consistently and move this check before the if/else\u001b[39;00m\n\u001b[1;32m 221\u001b[0m \u001b[38;5;66;03m# (https://github.com/pandas-dev/pandas/issues/41165)\u001b[39;00m\n\u001b[1;32m 222\u001b[0m _bool_arith_check(op, left, right)\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/core/roperator.py:11\u001b[0m, in \u001b[0;36mradd\u001b[0;34m(left, right)\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mradd\u001b[39m(left, right):\n\u001b[0;32m---> 11\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mright\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mleft\u001b[49m\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/_libs/tslibs/timestamps.pyx:504\u001b[0m, in \u001b[0;36mpandas._libs.tslibs.timestamps._Timestamp.__add__\u001b[0;34m()\u001b[0m\n", - "\u001b[0;31mTypeError\u001b[0m: Addition/subtraction of integers and integer-arrays with Timestamp is no longer supported. Instead of adding/subtracting `n`, use `n * obj.freq`" - ] - } - ], - "source": [ - "output_folder = f\"{base_folder}/output\"\n", - "workload = \"workload=bitbrains-small\"\n", - "seed = \"seed=0\"\n", - "\n", - "df_host_single = pd.read_parquet(f\"{output_folder}/topology=single/{workload}/{seed}/host.parquet\")\n", - "df_host_multi = pd.read_parquet(f\"{output_folder}/topology=multi/{workload}/{seed}/host.parquet\")\n", - "\n", - "df_server_single = pd.read_parquet(f\"{output_folder}/topology=single/{workload}/{seed}/server.parquet\")\n", - "df_server_multi = pd.read_parquet(f\"{output_folder}/topology=multi/{workload}/{seed}/server.parquet\")\n", - "\n", - "df_service_single = pd.read_parquet(f\"{output_folder}/topology=single/{workload}/{seed}/service.parquet\")\n", - "df_service_multi = pd.read_parquet(f\"{output_folder}/topology=multi/{workload}/{seed}/service.parquet\")\n", - "\n", - "def add_absolute_timestamp(df, start_dt):\n", - " df[\"absolute_timestamp\"] = start_dt + (df[\"timestamp\"] - df[\"timestamp\"].min())\n", - "\n", - "add_absolute_timestamp(df_host_single, df_meta[\"start_time\"].min())\n", - "add_absolute_timestamp(df_host_single, df_meta[\"start_time\"].min())\n", - "\n", - "add_absolute_timestamp(df_server_single, df_meta[\"start_time\"].min())\n", - "add_absolute_timestamp(df_server_multi, df_meta[\"start_time\"].min())\n", - "\n", - "add_absolute_timestamp(df_service_single, df_meta[\"start_time\"].min())\n", - "add_absolute_timestamp(df_service_multi, df_meta[\"start_time\"].min())" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "a9a61332", - "metadata": {}, - "outputs": [], - "source": [ - "df_host_single = pd.read_parquet(f\"{output_folder}/topology=single/{workload}/{seed}/host.parquet\")" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "d6fb41d9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Timedelta('0 days 00:05:00')" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "pd.Timedelta(300000, unit=\"ms\")" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "3c271734", - "metadata": {}, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "Can only use .dt accessor with datetimelike values", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[30], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mdf_host_single\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtimestamp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdt\u001b[49m\u001b[38;5;241m.\u001b[39mto_pytimedelta()\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/core/generic.py:5907\u001b[0m, in \u001b[0;36mNDFrame.__getattr__\u001b[0;34m(self, name)\u001b[0m\n\u001b[1;32m 5900\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (\n\u001b[1;32m 5901\u001b[0m name \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_internal_names_set\n\u001b[1;32m 5902\u001b[0m \u001b[38;5;129;01mand\u001b[39;00m name \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_metadata\n\u001b[1;32m 5903\u001b[0m \u001b[38;5;129;01mand\u001b[39;00m name \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_accessors\n\u001b[1;32m 5904\u001b[0m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_info_axis\u001b[38;5;241m.\u001b[39m_can_hold_identifiers_and_holds_name(name)\n\u001b[1;32m 5905\u001b[0m ):\n\u001b[1;32m 5906\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m[name]\n\u001b[0;32m-> 5907\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mobject\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__getattribute__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mname\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/core/accessor.py:183\u001b[0m, in \u001b[0;36mCachedAccessor.__get__\u001b[0;34m(self, obj, cls)\u001b[0m\n\u001b[1;32m 180\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m obj \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 181\u001b[0m \u001b[38;5;66;03m# we're accessing the attribute of the class, i.e., Dataset.geo\u001b[39;00m\n\u001b[1;32m 182\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_accessor\n\u001b[0;32m--> 183\u001b[0m accessor_obj \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_accessor\u001b[49m\u001b[43m(\u001b[49m\u001b[43mobj\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 184\u001b[0m \u001b[38;5;66;03m# Replace the property with the accessor object. Inspired by:\u001b[39;00m\n\u001b[1;32m 185\u001b[0m \u001b[38;5;66;03m# https://www.pydanny.com/cached-property.html\u001b[39;00m\n\u001b[1;32m 186\u001b[0m \u001b[38;5;66;03m# We need to use object.__setattr__ because we overwrite __setattr__ on\u001b[39;00m\n\u001b[1;32m 187\u001b[0m \u001b[38;5;66;03m# NDFrame\u001b[39;00m\n\u001b[1;32m 188\u001b[0m \u001b[38;5;28mobject\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;21m__setattr__\u001b[39m(obj, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_name, accessor_obj)\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/pandas/core/indexes/accessors.py:513\u001b[0m, in \u001b[0;36mCombinedDatetimelikeProperties.__new__\u001b[0;34m(cls, data)\u001b[0m\n\u001b[1;32m 510\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m is_period_dtype(data\u001b[38;5;241m.\u001b[39mdtype):\n\u001b[1;32m 511\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m PeriodProperties(data, orig)\n\u001b[0;32m--> 513\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mAttributeError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCan only use .dt accessor with datetimelike values\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", - "\u001b[0;31mAttributeError\u001b[0m: Can only use .dt accessor with datetimelike values" - ] - } - ], - "source": [ - "df_host_single.timestamp.to_pytimedelta()" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "89977c44", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0 1970-01-01 00:05:00+00:00\n", - "1 1970-01-01 00:10:00+00:00\n", - "2 1970-01-01 00:15:00+00:00\n", - "3 1970-01-01 00:20:00+00:00\n", - "4 1970-01-01 00:25:00+00:00\n", - " ... \n", - "25918 1970-03-31 23:55:00+00:00\n", - "25919 1970-04-01 00:00:00+00:00\n", - "25920 1970-04-01 00:05:00+00:00\n", - "25921 1970-04-01 00:10:00+00:00\n", - "25922 1970-04-01 00:14:12+00:00\n", - "Name: timestamp, Length: 25923, dtype: datetime64[ns, UTC]" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_host_single.timestamp" - ] - }, - { - "cell_type": "code", - "execution_count": 148, - "id": "eadd08e4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1970-01-01 00:05:00+00:00 1\n", - "1970-03-01 23:55:00+00:00 1\n", - "1970-03-02 00:45:00+00:00 1\n", - "1970-03-02 00:40:00+00:00 1\n", - "1970-03-02 00:35:00+00:00 1\n", - " ..\n", - "1970-01-30 23:50:00+00:00 1\n", - "1970-01-30 23:45:00+00:00 1\n", - "1970-01-30 23:40:00+00:00 1\n", - "1970-01-30 23:35:00+00:00 1\n", - "1970-04-01 00:10:00+00:00 1\n", - "Name: timestamp, Length: 25922, dtype: int64" - ] - }, - "execution_count": 148, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_service_single.timestamp.value_counts()" - ] - }, - { - "cell_type": "code", - "execution_count": 104, - "id": "a32f9d66", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([44, 45, 46, 47, 49, 50, 34, 16, 14, 13, 12, 11, 10], dtype=int32)" - ] - }, - "execution_count": 104, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(df_service_single.servers_active + df_service_single.servers_pending).unique() " - ] - }, - { - "cell_type": "code", - "execution_count": 102, - "id": "16f4a6b6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 102, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "set(d1) == set(d2)" - ] - }, - { - "cell_type": "markdown", - "id": "09d31c91", - "metadata": {}, - "source": [ - "## Power Usage" - ] - }, - { - "cell_type": "code", - "execution_count": 150, - "id": "82f0a24a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "single topology: 2227253755.2781296\n", - "multi topology: 5864872551.731657\n" - ] - } - ], - "source": [ - "print(f\"single topology: {df_host_single.power_total.sum()}\")\n", - "print(f\"multi topology: {df_host_multi.power_total.sum()}\")" - ] - }, - { - "cell_type": "markdown", - "id": "7ab3357d", - "metadata": {}, - "source": [ - "## CPU usage" - ] - }, - { - "cell_type": "code", - "execution_count": 151, - "id": "e94db3a6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "single topology: 0.5760561514665646\n", - "multi topology: 0.3425398748402685\n" - ] - } - ], - "source": [ - "print(f\"single topology: {df_host_single.cpu_utilization.mean()}\")\n", - "print(f\"multi topology: {df_host_multi.cpu_utilization.mean()}\")" - ] - }, - { - "cell_type": "markdown", - "id": "e000a260", - "metadata": {}, - "source": [ - "## CPU utilization" - ] - }, - { - "cell_type": "code", - "execution_count": 152, - "id": "8d7daa45", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "single topology: 0.5760561514665646\n", - "multi topology: 0.3425398748402685\n" - ] - } - ], - "source": [ - "print(f\"single topology: {df_host_single.cpu_utilization.mean()}\")\n", - "print(f\"multi topology: {df_host_multi.cpu_utilization.mean()}\")" - ] - }, - { - "cell_type": "markdown", - "id": "ad97741c", - "metadata": {}, - "source": [ - "## Plotting Results" - ] - }, - { - "cell_type": "code", - "execution_count": 153, - "id": "5df8f9aa", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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8nJ98sknmjJliv7whz+4ukYAAIBac+puqTlz5ig7O1u33nqrvLwu7qKiokJxcXGsuQEAAG7lVLixWq1avXq15syZo/3796t58+bq2bOnOnTo4Or6AAAAHOJUuLmka9eu6tq1q6tqAQAAqDOnwk15ebnS0tKUnp6ukydPqqKiotLnn3zyiUuKAwAAcJRT4WbKlClKS0vTnXfeqR49eshisbi6LgAAAKc4FW5WrVqlv/3tbxo+fLir6wEAAKgTp24Ft1qt6tKli6trAQAAqDOnws0TTzyhl19+WYZhuLoeAACAOnHqstS2bdu0detWffTRR7r++uvVrFmzSp+vXbvWJcUBAAA4yqlwExQUpLvvvtvVtQAAANSZU+FmxYoVrq4DAADAJZxacyNJFy5c0JYtW/SXv/xFZ86ckSSdOHFCZ8+edVlxAAAAjnJq5ua7777T7bffrpycHJWUlGjYsGHy9/fXvHnzVFJSotTUVFfXCQAAUCtOzdxMmTJFUVFR+vnnn9W8eXN7+91336309HSXFQcAAOAop2ZuPvvsM+3YsUNWq7VSe3h4uH744QeXFAYAAOAMp2ZuKioqVF5eXqX9+++/l7+/f52LAgAAcJZT4ea2225TSkqK/b3FYtHZs2c1a9YsHskAAADcyqnLUosWLVJMTIy6d++u8+fPa8yYMTp8+LCCg4P17rvvurpGAACAWnMq3PzmN7/R/v37tWrVKh04cEBnz57V+PHjdd9991VaYAwAANDQnAo3kuTl5aX777/flbUAAADUmVPh5o033rjs53FxcU4VAwAAUFdOhZspU6ZUel9WVqZz587JarXK19eXcAMAANzGqbulfv7550qvs2fPKisrS4MHD2ZBMQAAcCunny31axEREZo7d26VWR0AAICG5LJwI11cZHzixAlX7hIAAMAhTq25ef/99yu9NwxDubm5evXVVzVo0CCXFAYAAOAMp8LNqFGjKr23WCxq06aNbrnlFi1atMgVdQEAADjFqXBTUVHh6joAAABcwqVrbgAAANzNqZmbxMTEWvdNTk525hAAAABOcSrc7Nu3T/v27VNZWZmuvfZaSdI333wjT09P3XjjjfZ+FovFNVUCAADUklPhZsSIEfL399fKlSvVsmVLSRd/2C8hIUFDhgzRE0884dIiAQAAasupNTeLFi1SUlKSPdhIUsuWLfXCCy9w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loqOjr7ivxdc5Oif50tWrVoli8WiUaNG1W+BJuHoOJ8+fVqTJk1S27Zt5e3tra5du/L/jlpwdJxTUlJ07bXXqnnz5rLZbHr88cd1/vz5Bqq2afr00081YsQItWvXThaLpcbnOv5SRkaGbrzxRnl7e6tLly5KS0ur9zploNZWrVplWK1WY/ny5cZXX31lTJgwwQgKCjLy8/Or7b99+3bD09PTmD9/vvH1118bM2bMMJo1a2Z8+eWXDVx50+LoOI8ZM8ZYsmSJsW/fPuPgwYNGfHy8ERgYaHz//fcNXHnT4ug4X/Ltt98a7du3N4YMGWKMHDmyYYptwhwd55KSEiMqKsoYPny4sW3bNuPbb781MjIyjMzMzAauvGlxdJzffvttw9vb23j77beNb7/91ti0aZPRtm1b4/HHH2/gypuWDRs2GNOnTzfWrl1rSDLWrVt32f7Hjh0zfH19jcTEROPrr782Fi9ebHh6ehobN26s1zoJNw7o16+fMWnSJPv78vJyo127dkZSUlK1/e+9917jzjvvrNTWv39/4+GHH67XOps6R8f51y5cuGD4+/sbK1eurK8STcGZcb5w4YIxcOBA469//asxbtw4wk0tODrOr732mtGpUyejtLS0oUo0BUfHedKkScYtt9xSqS0xMdEYNGhQvdZpJrUJN0899ZRx/fXXV2qLjY01YmJi6rEyw+CyVC2VlpZqz549io6Otrd5eHgoOjpaO3furHabnTt3VuovSTExMTX2h3Pj/Gvnzp1TWVmZWrVqVV9lNnnOjvPzzz+vkJAQjR8/viHKbPKcGef3339fAwYM0KRJkxQaGqoePXropZdeUnl5eUOV3eQ4M84DBw7Unj177Jeujh07pg0bNmj48OENUvPVwl3fg27/heKm4tSpUyovL7f/cvIloaGhOnToULXb5OXlVds/Ly+v3ups6pwZ5197+umn1a5duyr/QeFfnBnnbdu2admyZcrMzGyACs3BmXE+duyYPvnkE913333asGGDjhw5ookTJ6qsrEyzZs1qiLKbHGfGecyYMTp16pQGDx4swzB04cIFPfLII3r22WcbouSrRk3fg0VFRfq///s/NW/evF6Oy8wNTGXu3LlatWqV1q1bJx8fH3eXYxpnzpzR2LFjtXTpUgUHB7u7HFOrqKhQSEiIXn/9dfXp00exsbGaPn26UlNT3V2a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p6dntZe9JMnD4+Lft34ZtH55CceV8vLydNddd+nBBx/U+PHj7e3FxcWKiYlRTEyM3n77bbVp00Y5OTmKiYmpl8tuzZo1q/TeYrE4HDQBVMbMDQBJF+/0iYmJ0ZIlS1RcXFzl81/f9hwcHKwuXbooLCysUrCRpGuvvVZfffWVSkpKKrXv3btXHTt2rPKFfkmbNm0kqdKC2l//No3ValV5eXltT6ta58+f18iRI9WtWzclJydX+uzQoUP68ccfNXfuXA0ZMkTdunWrMpNitVol6bJ1XHfddbpw4YI+//xze9uPP/6orKwsde/evU71A7g8wg0AuyVLlqi8vFz9+vXTe++9p8OHD+vgwYN65ZVXNGDAgFrv57777pPFYlFcXJz27NmjI0eOaPny5UpJSdETTzxR43ZdunSRzWbT7NmzdfjwYX344YdatGhRpT7h4eE6e/as0tPTderUKZ07d87h83z44Yd1/PhxvfLKKyooKFBeXp7y8vJUWlqqa665RlarVYsXL9axY8f0/vvvV/ntmg4dOshiseiDDz5QQUGBzp49W+UYERERGjlypCZMmKBt27Zp//79uv/++9W+fXuNHDnS4ZoB1B7hBoBdp06dtHfvXg0dOlRPPPGEevTooWHDhik9PV2vvfZarfcTFBSkzz77TGVlZbrrrrsUGRmpV155RcnJyXr44Ydr3K5Zs2Z69913dejQIfXq1Uvz5s3TCy+8UKnPwIED9cgjjyg2NlZt2rTR/PnzHT7P//3f/1Vubq66d++utm3b2l87duxQmzZtlJaWpjVr1qh79+6aO3euFi5cWGn79u3b67nnntMzzzyj0NBQTZ48udrjrFixQn369NFvf/tbDRgwQIZhaMOGDTXOXAFwDYvBxV0AAGAizNwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABTIdwAAABT+X8rUl+oucHktAAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "data = df_host_multi.cpu_utilization\n", - "plt.hist(data, weights=np.ones_like(data) / len(data),\n", - " alpha=0.7, label=\"multi\", bins=30)\n", - "\n", - "\n", - "data = df_host_single.cpu_utilization\n", - "plt.hist(data, weights=np.ones_like(data) / len(data),\n", - " alpha=0.7, label=\"single\", bins=30)\n", - "\n", - "plt.xlabel(\"CPU utilization\")\n", - "plt.ylabel(\"Frequency\")\n", - "plt.legend()\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 154, - "id": "42c0c638", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 154, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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qvBhtVo1c+ZMWa1WV5fS4NC2tYe2rT20be2hbWtPQ2jbOjfgFAAANGyNqucDAAC4HuEDAACYivABAABMRfgAAACmajThY+HChbruuuvk5eWlvn376pNPPnF1SXXKE088IYvFYvfo2LGjbXtxcbGmTJmiFi1aqFmzZho1apTy8vLsjnHkyBH96le/ko+Pj4KCgjRt2jRduHDBbp/MzEz17NlTVqtV7dq107Jly8x4e6basmWLhg0bprCwMFksFq1evdpuu2EYSk1NVWhoqLy9vRUXF6evvvrKbp9Tp04pKSlJfn5+CggI0IQJE3T27Fm7ffbv368BAwbIy8tLERERmjdv3mW1vPXWW+rYsaO8vLwUExOjdevWOf39mulabTt+/PjLfo8TEhLs9qFtKzd37lz17t1bvr6+CgoK0ogRI5SVlWW3j5mfAw3pM7sqbTto0KDLfncnT55st0+DalujEXj99dcNT09P4+9//7tx8OBBY+LEiUZAQICRl5fn6tLqjJkzZxpdunQxjh07ZnucPHnStn3y5MlGRESEkZGRYezatcvo16+fcdNNN9m2X7hwwejatasRFxdn7Nmzx1i3bp3RsmVLIyUlxbbP119/bfj4+BjJycnGoUOHjBdeeMFo0qSJsX79elPfa21bt26d8eijjxorV640JBmrVq2y2/7UU08Z/v7+xurVq419+/YZv/71r43o6Gjjxx9/tO2TkJBgdO/e3dixY4exdetWo127dsbYsWNt2/Pz843g4GAjKSnJOHDggPHaa68Z3t7exksvvWTbZ9u2bUaTJk2MefPmGYcOHTIee+wxw8PDw/j8889rvQ1qy7Xadty4cUZCQoLd7/GpU6fs9qFtKxcfH28sXbrUOHDggLF3715j6NChRmRkpHH27FnbPmZ9DjS0z+yqtO0tt9xiTJw40e53Nz8/37a9obVtowgfffr0MaZMmWJ7XlZWZoSFhRlz5851YVV1y8yZM43u3btXuu3MmTOGh4eH8dZbb9le++KLLwxJxvbt2w3DuPil4ObmZhw/fty2z+LFiw0/Pz+jpKTEMAzDmD59utGlSxe7Y48ePdqIj4938rupO375BVleXm6EhIQYTz/9tO21M2fOGFar1XjttdcMwzCMQ4cOGZKMTz/91LbPe++9Z1gsFuM///mPYRiGsWjRIqN58+a2tjUMw5gxY4bR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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "plt.plot(df_service_single.servers_pending, label=\"servers pending\")\n", - "plt.plot(df_service_single.servers_active, label=\"servers active\")\n", - "\n", - "plt.legend()" - ] - }, - { - "cell_type": "code", - "execution_count": 155, - "id": "1a688c2d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 155, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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mZmZF+y7b9++iomJUXp6uuLj411GT9LT0/XUU09p6NChmjFjhlq1aqV//vOfWrFihSZNmqRWrVqds89Vq1bpwIED6tu3r5o1a6Z3331X1dXVFzwU4e/vr/Hjx2vevHny8/PTfffdp169eplhZOrUqRoyZIji4uJ0++23y8fHRzt37tSuXbtcAtOF3HvvvZozZ44efPBB3X333crLy1NWVtZFLXs+4eHhGjNmjB588EFFRkYqKipK06ZNk4+PD7dRB4B6wjkfFrDb7dqwYYMGDx6sq666Sg8//LDmzJmjQYMGSZLuvvtuLV68WEuWLFFSUpJuuOEGZWVlKT4+/mf7ttlsGjVqlHbu3HnWyElISIg2bNiguLg4paWlKTExUePGjVNZWdkFR0IcDodWrFihfv36KTExUS+88IJeeeUVXXPNNeddJiQkRA899JB++ctfqnfv3goLC9Py5cvN+ampqVq1apU++OADde/eXb169dLcuXPNE3AvRlxcnF5//XW98cYb6tSpk1544QU98cQTF738+Tz99NNKTk7WkCFDlJKSot69e5uXPQMA6p7NuNjrRS3idDoVERGhkpKSs74gy8rKdPDgQcXHx/PF0IBkZWVp4sSJ5i3Ovd3Jkyd1+eWXa86cORo3btxZ8/k9BOC19q+V/nqbFH2t9LuP67TrC31//xSHXdDkffrpp/riiy/Uo0cPlZSUaMaMGZKkoUOHergyAKhrDeNwMuEDkPR///d/ys/PV0BAgLp27aqNGzeqRYsWni4LABolwgcu2dixYzV27FhPl1FrnTt3Vl5enqfLAIAmgxNOAQCApQgfAADAUoQPAABgKcIHAACwFOEDAABYivABAAAsRfhAgzV27FgNGzbM02UAAOoY9/mAxx06dEjx8fH69NNPdd1115nTn332WTWwu/8DQOPg4X9bCR9eqrKyUv7+/nXeb0VFhQICAuq839qIiIjwdAkAgHrAYReLvPbaa0pKSlJwcLCaN2+ulJQUnTx50py/ePFi80mqCQkJWrBggTnv0KFDstlsWr58uW644QYFBQVp4cKFCg4O1nvvveeynpUrVyo8PFynTp2SJB05ckR33nmnHA6HIiMjNXToUB06dMhsX3NoY+bMmYqNjVWHDh0kSQsWLFD79u0VFBSk6Oho3X777efdtm+//VajRo3S5ZdfrpCQECUlJemVV15xaVNdXa0nn3xS7dq1U2BgoOLi4jRz5kxJMp/e27lzZ9lsNt14440utUnSn/70J8XGxqq6utql36FDh+o3v/mN+f7NN99Uly5dFBQUpLZt22r69Ok6ffr0eWsHAFjP+0c+DEOqPOWZdfuHSLaff0hPQUGBRo0apSeffFK33XabSktLtXHjRvOQwtKlSzV16lQ9//zz6ty5sz799FPdc889Cg0N1ZgxY8x+Jk+erDlz5qhz584KCgrSxo0blZ2drUGDBpltli5dqmHDhikkJESVlZVKTU1VcnKyNm7cKD8/Pz3++OMaOHCgPvvsM3OEIycnR3a7XWvWrJEkbdu2Tffff7/++te/6he/+IWOHz+ujRs3nnf7ysrK1LVrVz300EOy2+165513NHr0aF155ZXq0aOHJGnKlClatGiR5s6dqz59+qigoEBffPGFJGnLli3q0aOH/vGPf+iaa64558jLHXfcofHjx+vDDz9U//79JUnHjx/X6tWr9e6770qSNm7cqF//+teaN2+err/+eu3fv1+//e1vJUnTpk372f0EALCG94ePylPSE7GeWff/HJUCQn+2WUFBgU6fPq20tDS1adNGkpSUlGTOnzZtmubMmaO0tDRJZ0YC9uzZoxdffNElfEycONFsI0np6ekaPXq0Tp06pZCQEDmdTr3zzjtauXKlJGn58uWqrq7W4sWLZftPSFqyZIkcDofWrVunm2++WZIUGhqqxYsXm1/6K1asUGhoqIYMGaLw8HC1adNGnTt3Pu/2XX755frDH/5gvh8/frzef/99/f3vf1ePHj1UWlqqZ599Vs8//7y5PVdeeaX69OkjSbrsssskSc2bN1dMTMw519GsWTMNGjRI2dnZZvh47bXX1KJFC910002SpOnTp2vy5MnmOtq2bavHHntMkyZNInwAQAPCYRcLdOrUSf3791dSUpLuuOMOLVq0SN99950k6eTJk9q/f7/GjRunsLAw8/X4449r//79Lv1069bN5f3gwYPl7++vt956S5L0+uuvy263KyUlRZK0c+dO7du3T+Hh4Wa/kZGRKisrc+k7KSnJZbRhwIABatOmjdq2bavRo0dr6dKl5mGcc6mqqtJjjz2mpKQkRUZGKiwsTO+//74OHz4sSdq7d6/Ky8vN0FBb6enpev3111VeXi7pzCjPyJEj5ePjY27vjBkzXD7H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AACApQgfAAA0NRfxuJT6RPgAAACWInwAAABLET4AAIClCB8AAMBShA8AAGApwgcAALAU4QMAAFiK8AEAQFNhs3m6AkmEDwAAYDHCBwAAsBThAwAAWIrwAQAALEX4AAAAliJ8AAAASxE+AACApQgfAADAUoQPAABgKcIHAACwFOEDAABYivABAAAsRfgAAACWInwAAABLET4AAGhyDI+unfABAAAsRfgAAACWInwAAABLET4AAIClCB8AAMBShA8AAJoMm6cLkET4AAAAFiN8AAAASxE+AACApQgfAADAUoQPAABgKcIHAACwFOEDAABYivABAAAsRfgAAACWInwAAABLET4AAIClCB8AAMBShA8AAGApwgcAALAU4QMAAFiK8AEAQFNjGB5dvdvhY8OGDbr11lsVGxsrm82mN954w2W+YRiaOnWqWrZsqeDgYKWkpOirr76qq3oBAICXczt8nDx5Up06ddL8+fPPOf/JJ5/UvHnz9MILLyg3N1ehoaFKTU1VWVnZJRcLAAC8n5+7CwwaNEiDBg065zzDMPTMM8/o4Ycf1tChQyVJf/nLXxQdHa033nhDI0eOvLRqAQCA16vTcz4OHjyowsJCpaSkmNMiIiLUs2dPbdq06ZzLlJeXy+l0urwAAEDjVafho7CwUJIUHR3tMj06Otqc91OzZs1SRESE+WrdunVdlgQAAGrYbJ6uQFIDuNplypQpKikpMV9HjhzxdEkAAKAe1Wn4iImJkSQVFRW5TC8qKjLn/VRgYKDsdrvLCwAANF51Gj7i4+MVExOjnJwcc5rT6VRubq6Sk5PrclUAAMBLuX21y4kTJ7Rv3z7z/cGDB7Vjxw5FRkYqLi5OEydO1OOPP6727dsrPj5ejzzyiGJjYzVs2LC6rBsAAHgpt8PHtm3bdNNNN5nvMzMzJUljxoxRVlaWJk2apJMnT+q3v/2tiouL1adPH61evVpBQUF1VzUAAPBaNsPw8D1Wf8LpdCoiIkIlJSWc/wEAQF069JGUdYvUooN035Y67dqd72+PX+0CAACaFsIHAACwFOEDAABYivABAAAsRfgAAACWInwAAABLET4AAIClCB8AAMBShA8AAGApwgcAALAU4QMAAFiK8AEAQJPj2ce6ET4AAIClCB8AAMBShA8AAJoMm6cLkET4AAAAFiN8AAAASxE+AACApQgfAADAUoQPAABgKcIHAACwFOEDAABYivABAAAsRfgAAACWInwAAABLET4AAIClCB8AAMBShA8AAGApwgcAALAU4QMAAFiK8AEAACxF+AAAAJYifAAAAEsRPgAAgKX8PF0AAACwSOhlUtKdUni0R8sgfAAA0FRcdpU0fJGnq+CwCwAAsBbhAwAAWIrwAQAALEX4AAAAliJ8AAAASxE+AACApQgfAADAUoQPAABgKcIHAACwFOEDAABYivABAAAsRfgAAACWInwAAABLET4AAIClCB8AAMBShA8AAGApwgcaha+KSvV9RZXbyxmGob0FTlVWVddq2fzCUpVVur9eWO9YaZkKSr73dBmNzjel5XyucBvhA15vw5ffaMDcDfqv5z9ye9msTw5p0LMbdf8rn7q97Hu7CpX6zAb9ctFmt5eFtaqrDfWYmaPkWWt1quK0p8tpNAzDUPeZ/1DyrLU6Uc7niotH+IDXW/np15Kkr46dcHvZP204IOlMkHDXK1sOS5K2Hy52e1lYq+JHI1tFznIPVtK4GMYPfy5k9ANuIHwAaPROVxs/3whuqzb4XFE79RY+5s+fryuuuEJBQUHq2bOntmzZUl+rAoALqjz9w8iHwRdmnSHTobbqJXwsX75cmZmZmjZtmrZv365OnTopNTVVx44dq4/VAcAF/fiEYv63Xnf4LFFb9RI+nn76ad1zzz266667dPXVV+uFF15QSEiI/vznP9fH6gDggn58zkfFab4w6wrhA7XlV9cdVlRUKC8vT1OmTDGn+fj4KCUlRZs2bTqrfXl5ucrLfzgBzOl01nVJkqR/nyjX/A/31Uvf8KyaE04lafrbu91atqCkrNbLbvzq37VeFtZyfv/DlRgL1+9Xi7AAD1bTePx4ROnZnH18rl6kRVigMm5q57H113n4+Pe//62qqipFR0e7TI+OjtYXX3xxVvtZs2Zp+vTpdV3GWZzfV2rJx4fqfT3wrEvZx55aFtZ6e+dRT5fQKPG5epe2l4U2rvDhrilTpigzM9N873Q61bp16zpfjyMkQBk3XVnn/cLzDEN6ffu/1CO+ueIig91atryyWm/s+Fr9E6LVIty9/7VVVZ9Zb592LRTrCHJrWVhvz1GnKqqqdV1rh6dLaVS2HvpOZZVVur59C0+XAjc0C/HsKFWdh48WLVrI19dXRUVFLtOLiooUExNzVvvAwEAFBgbWdRlniQwN0IOpCfW+HnjGpIG137cPD7m61stOHsTvFAC4q85POA0ICFDXrl2Vk5NjTquurlZOTo6Sk5PrenUAAMDL1Mthl8zMTI0ZM0bdunVTjx499Mwzz+jkyZO666676mN1AADAi9RL+BgxYoS++eYbTZ06VYWFhbruuuu0evXqs05CBQAATY/NaGC3+3M6nYqIiFBJSYnsdrunywEAABfBne9vnu0CAAAsRfgAAACWInwAAABLET4AAIClCB8AAMBShA8AAGApwgcAALAU4QMAAFiK8AEAACxVL7dXvxQ1N1x1Op0ergQAAFysmu/ti7lxeoMLH6WlpZKk1q1be7gSAADgrtLSUkVERFywTYN7tkt1dbWOHj2q8PBw2Wy2Ou3b6XSqdevWOnLkCM+NaYDYPw0f+6hhY/80bI19/xiGodLSUsXGxsrH58JndTS4kQ8fHx+1atWqXtdht9sb5Y5vLNg/DR/7qGFj/zRsjXn//NyIRw1OOAUAAJYifAAAAEs1qfARGBioadOmKTAw0NOl4BzYPw0f+6hhY/80bOyfHzS4E04BAEDj1qRGPgAAgOcRPgAAgKUIHwAAwFKEDwAAYKkmEz7mz5+vK664QkFBQerZs6e2bNni6ZIapVmzZql79+4KDw9XVFSUhg0bpvz8fJc2ZWVlysjIUPPmzRUWFqbhw4erqKjIpc3hw4d1yy23KCQkRFFRUXrwwQd1+vRplzbr1q1Tly5dFBgYqHbt2ikrK6u+N6/RmT17tmw2myZOnGhOY/941tdff61f/epXat68uYKDg5WUlKRt27aZ8w3D0NSpU9WyZUsFBwcrJSVFX331lUsfx48fV3p6uux2uxwOh8aNG6cTJ064tPnss890/fXXKygoSK1bt9aTTz5pyfZ5u6qqKj3yyCOKj49XcHCwrrzySj322GMuzzNhH10EowlYtmyZERAQYPz5z382du/ebdxzzz2Gw+EwioqKPF1ao5OammosWbLE2LVrl7Fjxw5j8ODBRlxcnHHixAmzzb333mu0bt3ayMnJMbZt22b06tXL+MUvfmHOP336tHHttdcaKSkpxqeffmq8++67RosWLYwpU6aYbQ4cOGCEhIQYmZmZxp49e4znnnvO8PX1NVavXm3p9nqzLVu2GFdccYXRsWNHY8KECeZ09o/nHD9+3GjTpo0xduxYIzc31zhw4IDx/vvvG/v27TPbzJ4924iIiDDeeOMNY+fOncZ//dd/GfHx8cb3339vthk4cKDRqVMnY/PmzcbGjRuNdu3aGaNGjTLnl5SUGNHR0UZ6erqxa9cu45VXXjGCg4ONF1980dLt9UYzZ840mjdvbqxatco4ePCg8eqrrxphYWHGs88+a7ZhH/28JhE+evToYWRkZJjvq6qqjNjYWGPWrFkerKppOHbsmCHJWL9+vWEYhlFcXGz4+/sbr776qtlm7969hiRj06ZNhmEYxrvvvmv4+PgYhYWFZpuFCxcadrvdKC8vNwzDMCZNmmRcc801LusaMWKEkZqaWt+b1CiUlpYa7du3N9asWWPccMMNZvhg/3jWQw89ZPTp0+e886urq42YmBjjqaeeMqcVFxcbgYGBxiuvvGIYhmHs2bPHkGRs3brVbPPee+8ZNpvN+Prrrw3DMIwFCxYYzZo1M/dXzbo7dOhQ15vU6Nxyyy3Gb37zG5dpaWlpRnp6umEY7KOL1egPu1RUVCgvL08pKSnmNB8fH6WkpGjTpk0erKxpKCkpkSRFRkZKkvLy8lRZWemyPxISEhQXF2fuj02bNikpKUnR0dFmm9TUVDmdTu3evdts8+M+atqwTy9ORkaGbrnllrM+Q/aPZ7311lvq1q2b7rjjDkVFRalz585atGiROf/gwYMqLCx0+WwjIiLUs2dPl/3jcDjUrVs3s01KSop8fHyUm5trtunbt68CAgLMNqmpqcrPz9d3331X35vp1X7xi18oJydHX375pSRp586d+uijjzRo0CBJ7KOL1eAeLFfX/v3vf6uqqsrlH0pJio6O1hdffOGhqpqG6upqTZw4Ub1799a1114rSSosLFRAQIAcDodL2+joaBUWFpptzrW/auZdqI3T6dT333+v4ODg+tikRmHZsmXavn27tm7detY89o9nHThwQAsXLlRmZqb+53/+R1u3btX999+vgIAAjRkzxvx8z/XZ/vizj4qKcpnv5+enyMhIlzbx8fFn9VEzr1mzZvWyfY3B5MmT5XQ6lZCQIF9fX1VVVWnmzJlKT0+XJPbRRWr04QOek5GRoV27dumjjz7ydCn4jyNHjmjChAlas2aNgoKCPF0OfqK6ulrdunXTE088IUnq3Lmzdu3apRdeeEFjxozxcHWQpL///e9aunSpsrOzdc0112jHjh2aOHGiYmNj2UduaPSHXVq0aCFfX9+zztYvKipSTEyMh6pq/O677z6tWrVKH374oVq1amVOj4mJUUVFhYqLi13a/3h/xMTEnHN/1cy7UBu73c7/qi8gLy9Px44dU5cuXeTn5yc/Pz+tX79e8+bNk5+fn6Kjo9k/HtSyZUtdffXVLtMSExN1+PBhST98vhf69ywmJkbHjh1zmX/69GkdP37crX2Ic3vwwQc1efJkjRw5UklJSRo9erQeeOABzZo1SxL76GI1+vAREBCgrl27Kicnx5xWXV2tnJwcJScne7CyxskwDN13331auXKl1q5de9awYdeuXeXv7++yP/Lz83X48GFzfyQnJ+vzzz93+cu5Zs0a2e128x/m5ORklz5q2rBPL6x///76/PPPtWPHDvPVrVs3paenm39m/3hO7969z7o0/csvv1SbNm0kSfHx8YqJiXH5bJ1Op3Jzc132T3FxsfLy8sw2a9euVXV1tXr27Gm22bBhgyorK802a9asUYcOHbx+OL++nTp1Sj4+rl+dvr6+qq6ulsQ+umiePuPVCsuWLTMCAwONrKwsY8+ePcZvf/tbw+FwuJytj7rxu9/9zoiIiDDWrVtnFBQUmK9Tp06Zbe69914jLi7OWLt2rbFt2zYjOTnZSE5ONufXXMp58803Gzt27DBWr15tXHbZZee8lPPBBx809u7da8yfP59LOWvpx1e7GAb7x5O2bNli+Pn5GTNnzjS++uorY+nSpUZISIjxt7/9zWwze/Zsw+FwGG+++abx2WefGUOHDj3nZZydO3c2cnNzjY8++sho3769y2WcxcXFRnR0tDF69Ghj165dxrJly4yQkJBGcxlnfRozZoxx+eWXm5farlixwmjRooUxadIksw376Oc1ifBhGIbx3HPPGXFxcUZAQIDRo0cPY/PmzZ4uqVGSdM7XkiVLzDbff/+98d///d9Gs2bNjJCQEOO2224zCgoKXPo5dOiQMWjQICM4ONho0aKF8fvf/96orKx0afPhhx8a1113nREQEGC0bdvWZR24eD8NH+wfz3r77beNa6+91ggMDDQSEhKMP/3pTy7zq6urjUceecSIjo42AgMDjf79+xv5+fkubb799ltj1KhRRlhYmGG324277rrLKC0tdWmzc+dOo0+fPkZgYKBx+eWXG7Nnz673bWsMnE6nMWHCBCMuLs4ICgoy2rZta/zxj390uSSWffTzbIbxo9uyAQAA1LNGf84HAABoWAgfAADAUoQPAABgKcIHAACwFOEDAABYivABAAAsRfgAAACWInwAAABLET4AAIClCB8AAMBShA8AAGApwgcAALDU/wfbnjItaCtKlQAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "plt.plot(df_service_multi.servers_pending, label=\"servers pending\")\n", - "plt.plot(df_service_multi.servers_active, label=\"servers active\")\n", - "\n", - "plt.legend()" - ] - }, - { - "cell_type": "code", - "execution_count": 156, - "id": "dc4e17cd", - "metadata": {}, - "outputs": [ - { - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
timestampserver_idhost_idmem_capacitycpu_countcpu_limitcpu_time_activecpu_time_idlecpu_time_stealcpu_time_lostuptimedowntimeprovision_timeboot_timeabsolute_timestamp
01970-01-01 00:05:00+00:00b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x06\\xc4]\\x1...b'\\xe2 \\xa89{\\x1d\\xcd\\xaf\\x00\\x00\\x00\\x00\\x00\\...181125600.0026240030000001970-01-01 00:00:00+00:001970-01-01 00:00:00+00:002013-08-12 13:35:46+00:00
11970-01-01 00:05:00+00:00b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x1b9\\x89jQ\\...b'\\xe2 \\xa89{\\x1d\\xcd\\xaf\\x00\\x00\\x00\\x00\\x00\\...260125600.0026240030000001970-01-01 00:00:00+00:001970-01-01 00:00:00+00:002013-08-12 13:35:46+00:00
21970-01-01 00:05:00+00:00b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00,\\x82\\x9a\\xb...b'\\xe2 \\xa89{\\x1d\\xcd\\xaf\\x00\\x00\\x00\\x00\\x00\\...250125600.0226220030000001970-01-01 00:00:00+00:001970-01-01 00:00:00+00:002013-08-12 13:35:46+00:00
31970-01-01 00:05:00+00:00b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00>\\xe5x\\x90A\\...b'\\xe2 \\xa89{\\x1d\\xcd\\xaf\\x00\\x00\\x00\\x00\\x00\\...125125600.0026240030000001970-01-01 00:00:00+00:001970-01-01 00:00:00+00:002013-08-12 13:35:46+00:00
41970-01-01 00:05:00+00:00b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00e~\\xec\\xdd<\\...b'\\xe2 \\xa89{\\x1d\\xcd\\xaf\\x00\\x00\\x00\\x00\\x00\\...157125600.0229510030000001970-01-01 00:00:00+00:001970-01-01 00:00:00+00:002013-08-12 13:35:46+00:00
\n", - "
" - ], - "text/plain": [ - " timestamp \\\n", - "0 1970-01-01 00:05:00+00:00 \n", - "1 1970-01-01 00:05:00+00:00 \n", - "2 1970-01-01 00:05:00+00:00 \n", - "3 1970-01-01 00:05:00+00:00 \n", - "4 1970-01-01 00:05:00+00:00 \n", - "\n", - " server_id \\\n", - "0 b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x06\\xc4]\\x1... \n", - "1 b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x1b9\\x89jQ\\... \n", - "2 b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00,\\x82\\x9a\\xb... \n", - "3 b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00>\\xe5x\\x90A\\... \n", - "4 b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00e~\\xec\\xdd<\\... \n", - "\n", - " host_id mem_capacity cpu_count \\\n", - "0 b'\\xe2 \\xa89{\\x1d\\xcd\\xaf\\x00\\x00\\x00\\x00\\x00\\... 181 1 \n", - "1 b'\\xe2 \\xa89{\\x1d\\xcd\\xaf\\x00\\x00\\x00\\x00\\x00\\... 260 1 \n", - "2 b'\\xe2 \\xa89{\\x1d\\xcd\\xaf\\x00\\x00\\x00\\x00\\x00\\... 250 1 \n", - "3 b'\\xe2 \\xa89{\\x1d\\xcd\\xaf\\x00\\x00\\x00\\x00\\x00\\... 125 1 \n", - "4 b'\\xe2 \\xa89{\\x1d\\xcd\\xaf\\x00\\x00\\x00\\x00\\x00\\... 157 1 \n", - "\n", - " cpu_limit cpu_time_active cpu_time_idle cpu_time_steal cpu_time_lost \\\n", - "0 25600.0 0 2624 0 0 \n", - "1 25600.0 0 2624 0 0 \n", - "2 25600.0 2 2622 0 0 \n", - "3 25600.0 0 2624 0 0 \n", - "4 25600.0 2 2951 0 0 \n", - "\n", - " uptime downtime provision_time boot_time \\\n", - "0 300000 0 1970-01-01 00:00:00+00:00 1970-01-01 00:00:00+00:00 \n", - "1 300000 0 1970-01-01 00:00:00+00:00 1970-01-01 00:00:00+00:00 \n", - "2 300000 0 1970-01-01 00:00:00+00:00 1970-01-01 00:00:00+00:00 \n", - "3 300000 0 1970-01-01 00:00:00+00:00 1970-01-01 00:00:00+00:00 \n", - "4 300000 0 1970-01-01 00:00:00+00:00 1970-01-01 00:00:00+00:00 \n", - "\n", - " absolute_timestamp \n", - "0 2013-08-12 13:35:46+00:00 \n", - "1 2013-08-12 13:35:46+00:00 \n", - "2 2013-08-12 13:35:46+00:00 \n", - "3 2013-08-12 13:35:46+00:00 \n", - "4 2013-08-12 13:35:46+00:00 " - ] - }, - "execution_count": 156, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_server_single.head()" - ] - }, - { - "cell_type": "code", - "execution_count": 157, - "id": "b0e6c7bf", - "metadata": {}, - "outputs": [], - "source": [ - "utilization = df_host_single.cpu_utilization.to_numpy()" - ] - }, - { - "cell_type": "code", - "execution_count": 161, - "id": "aea7b79d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 161, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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8isMN0RERORXGG6IiIjIrzDcEBERkV9huCEiIiK/wnBDREREfoXhhoiIiPwKww0RERH5FZ+oCi4IAgBAp9N5uCVEREQ0UOLntvg57i4+EW6am5sBACkpKR5uCRERETmrubkZERERbrueTHB3nBoEs9mMixcvIiwsDDKZzGXvq9PpkJKSgrKyMoSHh7vsfal/vPeewfvuGbzvnsH77hm29z0sLAzNzc1ISkqCXO6+mTA+0XMjl8sxatSoYXv/8PBw/sX3EN57z+B99wzed8/gffcM8b67s8dGxAnFRERE5FcYboiIiMivjOhwo1KpsHbtWqhUKk83ZcThvfcM3nfP4H33DN53z/CG++4TE4qJiIiIBmpE99wQERGR/2G4ISIiIr/CcENERER+heGGiIiI/MqIDjcbNmxAamoq1Go1srKysG/fPk83yWf89re/hUwms/uaPHmy9HpHRwfuu+8+xMTEIDQ0FD/+8Y9RXV1t9x6lpaVYsmQJgoODER8fj4ceeghGo9HumN27d+OSSy6BSqXC+PHj8dZbb7njx/MaX331FZYuXYqkpCTIZDJ8/PHHdq8LgoA1a9YgMTERQUFByMnJwZkzZ+yOaWhowG233Ybw8HBERkbirrvuQktLi90xR44cwbx586BWq5GSkoIXXnihR1s++OADTJ48GWq1GjNmzMC2bdtc/vN6k/7u/Z133tnj38CiRYvsjuG9d866deswZ84chIWFIT4+HjfeeCOKiorsjnHn75aR9BkxkHu/YMGCHn/n77nnHrtjvObeCyPUe++9JyiVSmHTpk3C8ePHhRUrVgiRkZFCdXW1p5vmE9auXStMmzZNqKyslL5qa2ul1++55x4hJSVFyM/PF/bv3y9ceumlwmWXXSa9bjQahenTpws5OTnCwYMHhW3btgmxsbHC6tWrpWOKi4uF4OBgIS8vTzhx4oTwyiuvCAqFQti+fbtbf1ZP2rZtm/D4448LW7ZsEQAIH330kd3rzz//vBARESF8/PHHwuHDh4Uf/vCHwtixY4X29nbpmEWLFgnp6enCd999J3z99dfC+PHjhVtuuUV6XavVChqNRrjtttuEY8eOCe+++64QFBQkvPbaa9Ix33zzjaBQKIQXXnhBOHHihPDEE08IgYGBwtGjR4f9HnhKf/f+jjvuEBYtWmT3b6ChocHuGN575yxcuFB48803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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "window = 2000\n", - "avg_utilization = []\n", - "\n", - "for ind in range(len(utilization) - window + 1):\n", - " avg_utilization.append(np.mean(utilization[ind:ind+window]))\n", - " \n", - "plt.plot(avg_utilization)" - ] - }, - { - "cell_type": "code", - "execution_count": 129, - "id": "575f824b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 129, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "sum_util = []\n", - "\n", - "last_util = 0\n", - "for util in utilization:\n", - " sum_util.append(util + last_util)\n", - " last_util = sum_util[-1]\n", - " \n", - "plt.plot(sum_util)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d99dfce2", - "metadata": {}, - "outputs": [], - "source": [ - "output_file = \"../Python_scripts/meta_small.parquet\"\n", - "output_file_path = Path(output_file)\n", - "\n", - "df_meta_new.to_parquet(output_file_path, index=False)\n", - "\n", - "output_file = \"../Python_scripts/trace_small.parquet\"\n", - "output_file_path = Path(output_file)\n", - "df_trace_new.to_parquet(output_file_path, index=False)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} -- cgit v1.2.3