From c4873faa9bca19ad95fb1b170828753641c684ca Mon Sep 17 00:00:00 2001 From: Ray Andrew Date: Mon, 8 Jul 2019 08:58:33 +0700 Subject: [PATCH 1/5] initialize more nodes for cassandra --- cassandra/deploy.py | 51 ++-- vizualization/Visualization.ipynb | 472 ++++++++++++++++++++++++++++++ vizualization/data.csv | 11 + 3 files changed, 517 insertions(+), 17 deletions(-) create mode 100644 vizualization/Visualization.ipynb create mode 100644 vizualization/data.csv diff --git a/cassandra/deploy.py b/cassandra/deploy.py index ebfe2b0..5e7e015 100644 --- a/cassandra/deploy.py +++ b/cassandra/deploy.py @@ -9,6 +9,7 @@ from ccmlib import common, extension, repository from ccmlib.node import Node, NodeError, TimeoutError + class CustomCluster(Cluster): def __update_pids(self, started): for node, p, _ in started: @@ -38,7 +39,8 @@ def start(self, no_wait=False, verbose=False, wait_for_binary_proto=True, if os.path.exists(node.logfilename()): mark = node.mark_log() - p = node.start(update_pid=False, jvm_args=jvm_args, profile_options=profile_options, verbose=verbose, quiet_start=quiet_start, allow_root=allow_root) + p = node.start(update_pid=False, jvm_args=jvm_args, profile_options=profile_options, + verbose=verbose, quiet_start=quiet_start, allow_root=allow_root) # Prior to JDK8, starting every node at once could lead to a # nanotime collision where the RNG that generates a node's tokens @@ -48,17 +50,20 @@ def start(self, no_wait=False, verbose=False, wait_for_binary_proto=True, # [RAYANDREW] modify this # print('Waiting 10s before starting other node') - time.sleep(10) # wait 10 seconds before starting other node + time.sleep(10) # wait 10 seconds before starting other node started.append((node, p, mark)) if no_wait: - time.sleep(2) # waiting 2 seconds to check for early errors and for the pid to be set + # waiting 2 seconds to check for early errors and for the pid to be set + time.sleep(2) else: for node, p, mark in started: try: - start_message = "Listening for thrift clients..." if self.cassandra_version() < "2.2" else "Starting listening for CQL clients" - node.watch_log_for(start_message, timeout=kwargs.get('timeout',60), process=p, verbose=verbose, from_mark=mark) + start_message = "Listening for thrift clients..." if self.cassandra_version( + ) < "2.2" else "Starting listening for CQL clients" + node.watch_log_for(start_message, timeout=kwargs.get( + 'timeout', 60), process=p, verbose=verbose, from_mark=mark) except RuntimeError: return None @@ -75,12 +80,13 @@ def start(self, no_wait=False, verbose=False, wait_for_binary_proto=True, if wait_for_binary_proto: for node, p, mark in started: - node.wait_for_binary_interface(process=p, verbose=verbose, from_mark=mark) + node.wait_for_binary_interface( + process=p, verbose=verbose, from_mark=mark) extension.post_cluster_start(self) return started - + def _read_logs(filename, text='Used Memory'): line = None @@ -90,27 +96,31 @@ def _read_logs(filename, text='Used Memory'): return line + def _read_logs_2(filename, text='Used Memory'): with open(filename, 'r') as f: # memory-map the file, size 0 means whole file - m = mmap.mmap(f.fileno(), 0, prot=mmap.PROT_READ) - # prot argument is *nix only + m = mmap.mmap(f.fileno(), 0, prot=mmap.PROT_READ) + # prot argument is *nix only i = m.rfind(b'Used Memory') # search for last occurrence of 'word' m.seek(i) # seek to the location line = m.readline() # read to the end of the line return str(line) + def log_parser(args, node_count): mems = [] for i in range(node_count): - line = _read_logs(os.path.join(args.cluster_path, args.cluster_name, 'node{}'.format(i + 1), 'logs', 'system.log')) + line = _read_logs(os.path.join( + args.cluster_path, args.cluster_name, 'node{}'.format(i + 1), 'logs', 'system.log')) if line is not None: mem_digits = [int(s) for s in line.split(' ') if s.isdigit()] mems.append(mem_digits[0]) return mems + def deploy_cluster(args, node_count): cluster = CustomCluster( path=args.cluster_path, @@ -120,21 +130,27 @@ def deploy_cluster(args, node_count): return cluster + def stop_remove_cluster(cluster): cluster.stop() cluster.remove() + if __name__ == '__main__': parser = argparse.ArgumentParser( description='[Cassandra] - Memory Reader') - parser.add_argument('--node_count', '-nc', default=5, type=int, help='Cassandra Node Count') - parser.add_argument('--cassandra_dir', '-cd', default='/mnt/extra/cassandra', help='cassandra source dir') - parser.add_argument('--cluster_name', '-cn', default='test', help='cluster name') - parser.add_argument('--cluster_path', '-cp', default='/mnt/extra/working', help='ccm conf dir') + parser.add_argument('--node_count', '-nc', default=5, + type=int, help='Cassandra Node Count') + parser.add_argument('--cassandra_dir', '-cd', + default='/mnt/extra/cassandra', help='cassandra source dir') + parser.add_argument('--cluster_name', '-cn', + default='test', help='cluster name') + parser.add_argument('--cluster_path', '-cp', + default='/mnt/extra/working', help='ccm conf dir') args = parser.parse_args() - for node_count in range(-5, args.node_count - 5, 5): + for node_count in range(0, args.node_count + 10, 10): print('Starting Cluster consists of {} nodes'.format(node_count + 10)) cluster = deploy_cluster(args, node_count + 10) @@ -152,10 +168,11 @@ def stop_remove_cluster(cluster): break print('List of mem used ', mems) - print('Total memory used for {} nodes is : {} MB'.format(node_count + 10, sum(mems))) + print('Total memory used for {} nodes is : {} MB'.format( + node_count + 10, sum(mems))) print('Stopping and Remove Cluster') stop_remove_cluster(cluster) print('Delaying 10 secs before spawning another cluster\n') - time.sleep(10) \ No newline at end of file + time.sleep(10) diff --git a/vizualization/Visualization.ipynb b/vizualization/Visualization.ipynb new file mode 100644 index 0000000..b38a429 --- /dev/null +++ b/vizualization/Visualization.ipynb @@ -0,0 +1,472 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Populating the interactive namespace from numpy and matplotlib\n" + ] + } + ], + "source": [ + "# This line configures matplotlib to show figures embedded in the notebook, \n", + "# instead of poping up a new window. More about that later. \n", + "%pylab inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from pylab import *\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from scipy.interpolate import interp1d\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv('./data.csv')\n", + "df = df.set_index('nodes')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "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", + "
memory
nodes
11
22
33
44
55
\n", + "
" + ], + "text/plain": [ + " memory\n", + "nodes \n", + "1 1\n", + "2 2\n", + "3 3\n", + "4 4\n", + "5 5" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Int64Index([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n", + " 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,\n", + " 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50],\n", + " dtype='int64', name='nodes')" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.index" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Memory (MB)')" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ax = df.plot.line()\n", + "ax.set_title('Before interpolation')\n", + "ax.set_xlabel(\"Nodes\")\n", + "ax.set_ylabel(\"Memory (MB)\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "f = interp1d(df.index, df['memory'], kind='cubic')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "df_int = pd.DataFrame()\n", + "new_index = np.arange(1,50)\n", + "df_int['memory'] = f(new_index)\n", + "df_int.index = new_index" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3gAAAHwCAYAAAD0Es3SAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xm81XPix/HXp7q3RUmSJFL2pRSlyRhaRFMqEXXLTj9mLIXRIHsIY99mDFkaQ7coo1BqmGsZMlSWGoYkpEK57fvt8/vjnJo0dbst537v8no+HvfRPef7Pd/v+5zztbz7fL7fb4gxIkmSJEkq/SokHUCSJEmStH1Y8CRJkiSpjLDgSZIkSVIZYcGTJEmSpDLCgidJkiRJZYQFT5IkSZLKCAueJCkRIYQZIYT2SeeQJKksseBJUikWQugdQvgghLA4hDA7hDAmhPCrpHMlIYQQQwj7hhB6pctj2GB5pRDCDyGEziGENun1R26wTtP083mb2EfD9PJJGzy/SwhhZQhhxvZ+X5kWQngqhHDLBs+tfZ+VksolSdo6FjxJKqVCCJcD9wGDgLpAA+CPwIlJ5toetrFYvADsBLTe4PlfAxEYm378I/DLEELt9dY5C/i8CPvYIYTQeL3HvYGvti7u9mUpk6TyzYInSaVQCKEmMBC4KMY4Msa4JMa4KsY4OsbYP71OyxDCuyGE+enRvYdCCNnpZSGEcG96RGtBCOHjtYUlhNAphPDvEMKiEMJ3IYQr0s/XCiG8FEL4MYSQn/59j/Uy5YUQbg4h/DP92nEhhF3WW35GCOHrEMK8EMI1G7yfG0MIz4cQ/hpCWAicXVj+wsQYlwPDgTM3WHQm8EyMcXX68Urgb0BOOkNFoAfwTBG+gqdJlcH1t/2XDd7T7iGEEenP66sQQt8N3u9z6fe7KITwSQhh/xDC1env5NsQwvEbbGtUCOGnEMK0EML/bbCt9T+7q0IIS9cvriGE5ukcWUV4b/8jhHBl+lhYFEL4Twjh2PTzhX5HIYTj0+svCCH8MYTwRgihz3rLzw0hfJo+nl4NIey1NfkkSf9lwZOk0ulIoAqp0apNKQAuA3ZJr38scGF62fHAMcD+pEa7egLz0sseBy6IMdYAGgOvp5+vADwJ7EVqtHAZ8NAG++wNnAPsCmQDa8vhwcCfgDOA3YHawB4bvPZE4Pl0nmc2k39zhgCnhBCqpvdfE+jCBiUs/XhtEewATAVmFWH7fwVyQggVQwgHATWA99YuDCFUAEYDHwH109kvDSF0WG8bXUgVxVrAZOBVUp9xfVLl/c/rrTsUmEnqszsFGLS2ZKWt/9ndDeSRKqtrnQ7kxhhXFeG9/UwI4QDgYuCI9DHRAZiRXrzJ7yhd7p8Hrib1ff8H+OV62+0GDABOBuoAb6XfpyRpG1jwJKl0qg3MXW806n/EGCfGGCfEGFfHGGeQKgxrpy2uIlVKDgRCjPHTGOPs9ZYdHELYMcaYH2OclN7evBjjiBjj0hjjIuBW/nca5JMxxs9jjMtIjaI1Sz9/CvBSjPHNGOMK4DpgzQavfTfG+LcY45oY47LN5C9UjPGfwPfASemnegCfxxg/3GC9d4Cd0yXmf0bhCjGTVGFpT2okb8PXHQHUiTEOjDGujDFOBx4jPVqY9laM8dX0d/gcqZJze7qE5QINQwg7hRD2BH4FXBljXJ5+D4NJleW1fvbZkSq4p8O6kclepMrk1igAKpM6JrJijDNijF/CZo+xTsDU9AjzauABYM56270AuC197K0mNdW4maN4krRtLHiSVDrNA3Yp7Hyr9JS/l0IIc9JT9waRGmkhxvg6qdG3h4HvQwiPhhB2TL+0O6n/Of86PaXuyPT2qoUQ/pyeZrkQeBPYKV0g1lr/f+CXAtXTv+8OfLt2QYxxCf8dMVzr2/UfFJa/iNYfnTuDVOnZmKdJjVC1pfAR0Y1t/2xS5emvGyzbC9g9PXVxfghhPqnRqrrrrfP9er8vI1XYC9Z7DKnPb3fgp3SpXutrUiN9a/3sswNeJFXI9gaOAxbEGP+1ifexGthw6mYWqQK+JsY4DbgUuBH4IYSQG0LYHTb7HW34nUdSxXitvYD71/t8fgLCBu9LkrSFLHiSVDq9CywHuhWyzp+Az4D9Yow7kioY664sGWN8IMbYHDiE1FTN/unn348xnkhqmuXfSI3EAfwOOAD4RXp7x6Sf/9nVKjdhNrDn2gchhGqkRiHXF7ckfxH8BTg2XVBbAc9uYr2nSU0rfCXGuHQLtj8COAGYHmP8eoNl3wJfxRh3Wu+nRoyx0xZsf61ZpEYZa6z3XAPgu/Ue/+yzW+88xNNIldvCRu++ARpu8Fwj4NsY45r09p6NMf6KVCmLwB3p9Qr7jmaz3jTcEELg59NyvyU1FXj9z6hqelRVkrSVLHiSVArFGBcA1wMPhxC6pUfXskIIHUMIf0ivVgNYCCwOIRwI/Hbt60MIR4QQfpG+6MYSUmWxIISQHUI4LYRQMz1VcCGpKXprt7cMmB9C2Bm4YQsiPw90DiH8Kn0RjoFs/r9Bm8xfFOnS9Tap87rGxxjnbGK9r0hNK7xmY8sL2f4SoB3QZyOL/wUsTF+cpGr6XL3GIYQjtmQf6f18C7wD3BZCqBJCOBQ4j81fDGbtCGNX/neEcX0jgBPSF0SpmB6du5bUNFFCCAeEENqFECqTOk6W8fNjYlPf0ctAk/TxWQm4CNhtveWPAFeHEA5J76dmCOHUzbwnSdJmWPAkqZSKMd4DXE7qf8Z/JDUicjGpUTdIXeCkN7CI1Plfw9Z7+Y7p5/JJTfebB9yVXnYGMCM95e43pM/lInVLhqrAXGAC/73dQFGyTiX1P/jPkhrZyefn0/U2prD8m9zVBo+HkBp1KvTcuhjj2zHGolxcZcPXfbD2fLQNni8gdRGVZqRunzCX1HlzNbd0H2m9SI2yzSI1jfSGGOP4zWT7J6lplpPS58dtar2p6e3fRmqa5LukLhhzU3qVysDt6fcwh9TI7oD0sk1+RzHGucCpwB9IHV8HAx8AK9LLXyA1EpibPtamAB038zlIkjYjpKbES5JUeqXPH1wA1Ioxzk86T0kRQngdeDbGOLgEZKlAqtSfFmP8R9J5JKmscgRPklQW9AS+tNz9V3o66OEUbeQzUxk6pK8EWpn/np83Iak8klQebPLqa5IklQYhhHdI3f9tY+fClUshhCGkLsDTb4Orbxa3I0lNy80G/g10S9/GQZKUIU7RlCRJkqQyImNTNNNX3fpwvZ+FIYRLQwg7hxDGhxC+SP9ZK1MZJEmSJKk8KZYRvPRNcL8DfkHqKmo/xRhvDyFcReqE+CszHkKSJEmSyrjiKnjHk7qk81EhhP8AbWKMs0MI9YC8GOMBhb1+l112iQ0bNsx4TmmtJUuWsMMOOyQdQ9oiHrcqrTx2VRp53Kq4TZw4cW6Msc7m1iuui6zkkLrRLEDdGONsgHTJ23VzL27YsCEffPBBJvNJP5OXl0ebNm2SjiFtEY9blVYeuyqNPG5V3EIIXxdpvUyP4IUQskndmPWQGOP3IYT5Mcad1lueH2P8n/PwQgjnA+cD1K1bt3lubm5Gc0rrW7x4MdWrV086hrRFPG5VWnnsqjTyuFVxa9u27cQYY4vNrVccI3gdgUkxxu/Tj78PIdRbb4rmDxt7UYzxUeBRgBYtWkT/hkTFyb+VU2nkcavSymNXpZHHrUqq4rjReS/+Oz0TYBRwVvr3s4AXiyGDJEmSJJV5GR3BCyFUA44DLljv6duB4SGE84BvgFMzmUGSJElSMlatWsXMmTNZvnx50lFKjSpVqrDHHnuQlZW1Va/PaMGLMS4Fam/w3Dzg2EzuV5IkSVLyZs6cSY0aNWjYsCEhhKTjlHgxRubNm8fMmTNp1KjRVm2jOKZoSpIkSSqHli9fTu3atS13RRRCoHbt2ts04mnBkyRJkpQxlrsts62flwVPkiRJksoIC54kSZIkZdjq1auLZT8WPEmSJEll1owZMzjwwAPp06cPjRs35rTTTuPvf/87Rx11FPvttx//+te/WLJkCeeeey5HHHEEhx12GC++mLqT21NPPUW3bt3o0qULjRo14qGHHuKee+7hsMMOo1WrVvz0008AfPjhh7Rq1YpDDz2Uk046ifz8fADatGnDgAEDaN26NbfeeiuNGjVi1apVACxcuJCGDRuue7y9FMeNziVJkiRpozeH79GjBxdeeCFLly6lU6dO/7P87LPP5uyzz2bu3LmccsopP1uWl5dXpP1OmzaN5557jkcffZQjjjiCZ599lrfffptRo0YxaNAgDj74YNq1a8cTTzzB/PnzadmyJe3btwdgypQpTJ48meXLl7Pvvvtyxx13MHnyZC677DL+8pe/cOmll3LmmWfy4IMP0rp1a66//npuuukm7rvvPgDmz5/PG2+8AaTK5ssvv0y3bt3Izc2le/fuW307hE1xBE+SJElSmdaoUSOaNGlChQoVOOSQQzj22GMJIdCkSRNmzJjBuHHjuP3222nWrBlt2rRh+fLlfPPNNwC0bduWGjVqUKdOHWrWrEmXLl0A1r12wYIFzJ8/n9atWwNw1lln8eabb67bd8+ePdf93qdPH5588kkAnnzySc4555zt/l4dwZMkSZJULAobcatWrVqhy3fZZZcij9htqHLlyut+r1ChwrrHFSpUYPXq1VSsWJERI0ZwwAEH/Ox177333mZfuzk77LDDut+POuooZsyYwRtvvEFBQQGNGzfeqvdTGEfwJEmSJJVrHTp04MEHHyTGCMDkyZOL/NqaNWtSq1Yt3nrrLQCefvrpdaN5G3PmmWfSq1evjIzegQVPkiRJUjl33XXXsWrVKg499FAaN27Mddddt0WvHzJkCP379+fQQw/lww8/5Prrr9/kuqeddhr5+fn06tVrW2NvVFjbUkuyFi1axA8++CDpGCpH8vLyNnoSsFSSedyqtPLYVWnkcVs0n376KQcddFDSMUqU559/nhdffJGnn356k+ts7HMLIUyMMbbY3PY9B0+SJEmSisEll1zCmDFjeOWVVzK2DwueJEmSJBWDBx98cKteN2LEiCKv6zl4kiRJklSCbez+gJtiwZMkSZKUMaXhmh8lyfqf17hx41i0aBFVq1Yt8usteJIkSZIyokqVKsybN8+SV0QxRubNm0eVKlX46KOP6NKlC7///e+3aBuegydJkiQpI/bYYw9mzpzJjz/+mHSUUqNKlSrsvPPOdOzYkdq1azNw4MAter0FT5IkSVJGZGVl0ahRo6RjlDp9+vTh888/Z/z48dSpU2eLXusUTUmSJEkqIYYPH87jjz/OVVddxbHHHrvFr7fgSZIkSVIJ0apVKy6++GJuuummrXq9UzQlSZIkKWEFBQWEEGjQoMFW3y8PHMGTJEmSpMTdcMMNdOnShZUrV27Tdix4kiRJkpSg119/nUGDBlGvXj2ys7O3aVsWPEmSJElKyNy5czn99NPZf//9uf/++7d5e56DJ0mSJEkJiDFyzjnnMG/ePF555RV22GGHbd6mI3iSJEmSlICZM2cyadIk7rrrLpo1a7ZdtukIniRJkiQlYM8992TKlCnstNNO222bjuBJkiRJUjFasmQJd999N6tWraJWrVqEELbbti14kiRJklSM+vbtS//+/Zk4ceJ237YFT5IkSZKKSW5uLk888QQDBgygVatW2337FjxJkiRJKgZfffUVF1xwAUceeSQ33nhjRvZhwZMkSZKkDIsxcvbZZxNC4Nlnn6VSpcxc79KraEqSJElShoUQuPfee5kzZw4NGzbM2H4seJIkSZKUQfPmzaN27docfvjhGd+XUzQlSZIkKUN+/PFHGjduzK233los+7PgSZIkSVIGrD3vLj8/n86dOxfLPp2iKUmSJEkZMHjwYF555RUefPBBmjZtWiz7dARPkiRJkraz/Px8BgwYwNFHH81FF11UbPu14EmSJEnSdvbxxx+zZs0aHnjgAUIIxbZfp2hKkiRJ0nbWunVrvv32W6pVq1as+3UET5IkSZK2kxgjY8aMYc2aNcVe7sCCJ0mSJEnbzahRo+jUqRNDhw5NZP8WPEmSJEnaDpYvX87ll1/OwQcfTI8ePRLJ4Dl4kiRJkrQd3HvvvUyfPp3x48eTlZWVSAZH8CRJkiRpG3333XfceuutdOvWjfbt2yeWw4InSZIkSdto1qxZNGzYkLvvvjvRHE7RlCRJkqRtdMQRR/DJJ58U6z3vNsYRPEmSJEnaSmvWrOGPf/wjS5cuTbzcgQVPkiRJkrbaU089xUUXXcTo0aOTjgJY8CRJkiRpqyxYsICrr76aX/7yl4ndFmFDnoMnSZIkSVth4MCB/Pjjj7zyyislYnomZHgEL4SwUwjh+RDCZyGET0MIR4YQdg4hjA8hfJH+s1YmM0iSJEnS9vbZZ5/xwAMPcO6559K8efOk46yT6Sma9wNjY4wHAk2BT4GrgNdijPsBr6UfS5IkSVKp0qFDBwYNGpR0jJ/J2BTNEMKOwDHA2QAxxpXAyhDCiUCb9GpDgDzgykzlkCRJkqTt7cADD+Sll15KOsb/yOQI3t7Aj8CTIYTJIYTBIYQdgLoxxtkA6T93zWAGSZIkSdpuVqxYwRVXXMGsWbOSjrJRmbzISiXgcOCSGON7IYT72YLpmCGE84HzAerWrUteXl5GQkobs3jxYo85lToetyqtPHZVGnncll9Dhw7l0UcfZdddd6Vly5ZJx/kfIcaYmQ2HsBswIcbYMP34aFIFb1+gTYxxdgihHpAXYzygsG21aNEifvDBBxnJKW1MXl4ebdq0STqGtEU8blVaeeyqNPK4LZ9mz57N/vvvT5s2bYr9vnchhIkxxhabWy9jUzRjjHOAb0MIa8vbscC/gVHAWennzgJezFQGSZIkSdperr76alauXMm9996bdJRNyvR98C4BngkhZAPTgXNIlcrhIYTzgG+AUzOcQZIkSZK2yXvvvceQIUO48sor2XfffZOOs0kZLXgxxg+BjQ0jHpvJ/UqSJEnS9tSgQQMuueQSrrnmmqSjFCrTI3iSJEmSVOrVq1ePBx54IOkYm5XpG51LkiRJUqm1aNEiunfvzpQpU5KOUiQWPEmSJEnahFtuuYWRI0eydOnSpKMUiQVPkiRJkjbiiy++4N577+Xss88ukfe82xgLniRJkiRtxOWXX06VKlW47bbbko5SZF5kRZIkSZI2MH78eF566SX+8Ic/sNtuuyUdp8gcwZMkSZIkUhdUGTNmDABHHXUU99xzD/369Us41ZZxBE+SJElSubVs2TJefvllhg0bxksvvcTy5cv55ptv2HPPPbnsssuSjrfFLHiSJEmSyqVx48bRvXt3Fi9ezK677kqfPn3Iycmhfv36SUfbahY8SZIkSWXe6tWrycvLY9iwYbRr145evXrRtGlTevbsSa9evWjdujWVKpX+elT634EkSZIkbcI///lPhg4dynPPPccPP/xA9erV2X///QGoW7cugwcPTjjh9mXBkyRJklSmzJgxg4YNGwLQr18/pk6dSpcuXcjJyaFjx45UrVo12YAZZMGTJEmSVCbMnz+fvn37rhutq1GjBn/961+pX78+NWrUSDpesbDgSZIkSSr1/v73v3POOecwe/Zsrr76aipWrAjAgQcemHCy4mXBkyRJklRqrVmzhksvvZQHH3yQ/fffn3feeYeWLVsmHSsx3uhckiRJUqlVoUIFli5dSt++fZk8eXK5LnfgCJ4kSZKkUmbVqlXccsstnHTSSTRr1oxHH32UChUcuwILniRJkqRS5N///jdnnHEGkyZNokKFCjRr1sxytx4/CUmSJEkl3po1a7jnnns4/PDD+eabbxg5ciQ33HBD0rFKHAueJEmSpBLv8ccf53e/+x2//vWvmTJlCieddFLSkUokp2hKkiRJKpFijMyaNYv69etz1llnsfPOO3PyyScTQkg6WonlCJ4kSZKkEmfOnDl07dqVX/ziFyxYsIDs7Gy6d+9uudsMC54kSZKkEmXEiBE0btyYv//971xxxRXUqFEj6UilhgVPkiRJUomwbNkyzjjjDE455RQaNmzIpEmTuPTSS71K5hbwk5IkSZJUIlSpUoX8/HxuuOEG3n33XQ466KCkI5U6XmRFkiRJUmKWLl3KddddR79+/WjQoAGjRo1yxG4b+MlJkiRJSsSECRNo1qwZ99xzD2PHjgWw3G0jPz1JkiRJxWrlypVcd911HHXUUaxYsYLXX3+d888/P+lYZYIFT5IkSVKxGjRoELfccgtnnXUWH3/8MW3btk06UpnhOXiSJEmSMq6goIAff/yR3Xbbjcsuu4wjjjiCE044IelYZY4jeJIkSZIyavr06bRp04bjjz+elStXUrNmTctdhljwJEmSJGVEjJHHHnuMQw89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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ax2 = df_int.plot.line(figsize=(15,8), style='k--', grid=True)\n", + "ax2.set_title('Cassandra JVM Memory Usage')\n", + "ax2.set_xlabel(\"Nodes\")\n", + "ax2.set_ylabel(\"Memory (MB)\")\n", + "plt.savefig('plot.png')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "df_after = pd.read_csv('./data2_after_heap.csv')\n", + "df_after = df_after.set_index('nodes')" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "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", + "
memory
nodes
55
1010
1516
2035
2543
\n", + "
" + ], + "text/plain": [ + " memory\n", + "nodes \n", + "5 5\n", + "10 10\n", + "15 16\n", + "20 35\n", + "25 43" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_after.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Int64Index([5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85,\n", + " 90, 100],\n", + " dtype='int64', name='nodes')" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_after.index" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Memory (MB)')" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ax3 = df_after.plot.line()\n", + "ax3.set_title('Before interpolation')\n", + "ax3.set_xlabel(\"Nodes\")\n", + "ax3.set_ylabel(\"Memory (MB)\")" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "f = interp1d(df_after.index, df_after['memory'], kind='cubic')" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "df_int_after = pd.DataFrame()\n", + "new_index = np.arange(5, 100, 5)\n", + "# print(new_index)\n", + "df_int_after['memory'] = f(new_index)\n", + "df_int_after.index = new_index" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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JCmjNm7cyLhx4/jzn//Mv//9bz766CP2228/Ro8enelo5Yrn/EmSJEnKiNzcXG699Vb2339/hgwZQvXq1XnkkUfYd999Mx2tXHLmT5IkSVJaxRgJIbBixQp+85vf0LlzZx544AGOP/54b9eQQpY/SZIkSWmxePFibr75ZhYvXsyUKVNo1KgRH374IU2bNs10tArBZZ+SJEmSUmrhwoUMHDiQZs2acffdd7PrrruyadMmAItfGjnzJ0mSJCllnnjiCfr27UutWrW46KKLuOSSS2jUqFGmY1VIlj9JkiRJO02Mkeeee45q1apx3HHH0b17d6677jrOO+88dtttt0zHq9Bc9ilJkiTpJ8vPz2fcuHEcdthhnHjiidx6660A7LLLLvzud7+z+JUClj9JkiRJP8njjz9O8+bNGTBgAIWFhYwdO5YpU6ZkOpa24LJPSZIkSTts5cqVVKtWjVq1apGXl8c+++zDbbfdxoknnkilSs4xlUb+VCRJkiSV2Oeff87//d//0bhxY+6++24ABg4cyKuvvspJJ51k8SvFnPmTJEmStF0ffPABN910E2PHjqWwsJDTTz+dHj16AHhj9jLC8idJkiRpuy644AJeffVVzj33XC677DLvz1cGOScrSZIk6XtijLzwwgt0796dpUuXAnDnnXeyePFicnJyLH5llOVPkiRJEgAFBQU88cQTtG/fnuOPP56FCxeyaNEiAFq0aMEee+yR4YT6KVz2KUmSJIkNGzbQpk0b3n//fQ488EDuv/9+BgwYQFZWVqajaSex/EmSJEkV1OrVq5k+fTp9+/YlKyuLM844g1atWnHKKadQuXLlTMfTTmb5kyRJkiqYr776ittuu4277rqLNWvW0K5dO5o1a8bVV1+d6WhKIc/5kyRJkiqIr7/+mvPPP58mTZpw44030r17d958802aNWuW6WhKA2f+JEmSpHIuNzeXWrVqUaVKFR577DEGDRrE5ZdfTvPmzTMdTWlk+ZMkSZLKoRgjL730EiNHjuSbb77hjTfeYNddd2XJkiXUrFkz0/GUAS77lCRJksqRwsJCJk+ezJFHHkm3bt2YP38+vXv3Jj8/H8DiV4E58ydJkiSVIxMmTKB///7sv//+3H333Zx55pnUqFEj07FUClj+JEmSpDJs7dq13H///ey2224MHDiQ3r17U6VKFX75y19SpYp/3dd/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cNmnJH1JF154IdOnT+enP/0pP/zhD9l1112zjiRJkvR3LH+S9Dlt2rSJW2+9laOPPpr999+fG2+8kYYNG9KmTZuso0mSJP1DLvuUpB2UUuLRRx+lS5cunHfeeVs/r2/fffe1+EmSpBrP8idJO+CFF17gqKOO4thjjyWlxCOPPMLYsWOzjiVJkrTDXPYpSTvgjjvu4IUXXuA//uM/OPvss2nYsGHWkSRJkj4Xj/xJ0mdYv349V1xxBc888wwAV1xxBa+99hrnnXeexU+SJNVKlj9J2saWLVv4r//6L9q3b8/YsWOZPn06AM2aNaN58+YZp5MkSfriLH+SlHPzzTez7777cvrpp9O6dWtmz57NlVdemXUsSZKkamH5k1S0Vq9eze2338769esB2LhxIwcddBBTp05l/vz5HH744RknlCRJqj5e8EVSUdmyZQszZ85k0qRJPPjgg9cOrlQAAB3qSURBVHzyySfssccefOc732H06NGMHj0664iSJEl5YfmTVDSWL19OSUkJ7733Hi1atGD48OGUl5dTUlKSdTRJkqS8s/xJqrNWrVrFfffdx+rVq7nkkkto2bIlgwcPpk+fPgwaNIidd94564iSJEkFY/mTVKds2bKFJ598krvuuouHHnqIjRs30qNHDy6++GIigokTJ2YdUZIkKRNe8EVSnTJ27FjKysqYMWMGZ511FgsWLGDevHlERNbRJEmSMmX5k1RrrVq1iltuuYUePXowa9YsAMrLy5k6dSpLly7lP//zPykpKbH4SZIk4bJPSbXMli1beOKJJ5g0aRIPP/wwGzdupHPnznzyyScAtG/fnvbt22ecUpIkqeax/EmqFVatWkXz5s2prKxk2LBhbN68mREjRjBs2DC6devm0T1JkqR/wfInqcZatWoVkydPZtKkSbz//vu88cYbNGzYkCeffJL27dt7tU5JkqTPwXP+JNU4zz//PCeccAJ77bUXI0eOZMOGDYwaNYpNmzYB0KVLF4ufJEnS5+SRP0k1wqJFi2jWrBlt2rTh/fff56mnnuLss89m2LBhdO3a1WWdkiRJX5JH/iRlZuXKldx8880ccsghdOrUaetn8JWVlbF06VImTJjg+XySJEnVxCN/kgoupUR5eTn33XcfFRUVfOMb3+DGG2/k5JNPBqB+/frUr18/45SSJEl1i+VPUkG88sorPPnkk4waNYqIoGnTpnz/+9/fuqxTkiRJ+WX5k5Q3a9as4aabbmLSpEksWLCABg0aMHToUNq0acNNN92UdTxJkqSi4jl/kvLigQceYOjQoZx77rls3ryZ8ePHs3TpUtq0aZN1NEmSpKLkkT9J1WbTpk28/fbb7L///gwcOJChQ4cyZswYl3VKkiTVAB75k1QtZs+eTbdu3RgwYAAVFRU0btyYs846y+InSZJUQ1j+JH0pK1asoLy8nH//939n7dq13HDDDey0005Zx5IkSdJ2XPYp6QtbvHgxhx12GOvWrePSSy/lsssuo3HjxlnHkiRJ0mew/En63FavXk2zZs3o0KED5eXlnH322XTs2DHrWJIkSfonXPYpaYetWrWKkSNHcsABB7BixQrq1avH+PHjLX6SJEm1gOVP0r+UUuLuu++mQ4cO3HrrrZx66qk0atQo61iSJEn6HFz2Kemf2rBhA2VlZcyePZsePXrwxBNPeAVPSZKkWsjyJ+kzbdmyhfr167PLLrvQqVMnTjvtNM4880zq1XPBgCRJUm2U2bu4iHgzIl6OiBciYkFuW4uImBERf859b55VPqlYpZSYOnUq7dq1Y9GiRQDcfPPNDB8+3OInSZJUi2X9Tq5PSqlrSql77v4lwMyUUjtgZu6+pAJ57bXXOProozn++OPZbbfdqKioyDqSJEmSqknW5W973wZ+mbv9S2BwhlmkonL11VfTuXNn5s2bx4QJE1iwYIHn9kmSJNUhWZa/BDwREc9HxIjctlYppWUAue8tM0snFZmPP/6Y4447jldffZXzzz+fBg08JViSJKkuiZRSNr84ok1KaWlEtARmAOcBj6SUmm3znFUppebb/dwIYARAq1atSiZPnlzI2NVm7dq1NGnSJOsYRcWZ/60VK1YwceJEBg0axCGHHEJlZWW1n9PnzAvPmReeMy88Z154zrzwnHnh1daZ9+nT5/ltTqP7pzL7X/sppaW57ysi4kHgEGB5RLROKS2LiNbAis/4uduA2wC6d++eevfuXcDU1WfWrFnU1uy1lTOvsmnTJsaPH89Pf/pTKisrOf300/M2F2deeM688Jx54TnzwnPmhefMC68YZp7Jss+I2DUimn56G+gPLAQeAcpzTysHHs4in1RXzZkzh27dunHRRRfRt29fFi1axPDhw7OOJUmSpALI6shfK+DBiPg0w69TStMi4jng/oj4LvA2MDSjfFKd9Morr7Bu3ToeeeQRjj322KzjSJIkqYAyKX8ppdeBgz5j+4dA38InkuqmLVu2cOutt9KkSRNOP/10zjrrLE477TQaN26cdTRJkiQVWE37qAdJ1eS5557j0EMP5ZxzzuG3v/0tAPXq1bP4SZIkFSnLn1THrFq1ipEjR3LooYeydOlS7r33Xu6///6sY0mSJCljlj+pjlmwYAG33XYbo0aNYsmSJZx44onkzq+VJElSEfNTnKU6YOHChTz77LOceeaZ9OvXj9dee422bdtmHUuSJEk1iEf+pFps7dq1jBkzhq5du/KjH/2I9evXA1j8JEmS9Hcsf1ItlFLigQceoGPHjlx//fWcccYZvPTSS17MRZIkSf+Qyz6lWujNN9/kpJNOonPnzkyZMoWePXtmHUmSJEk1nEf+pFpiw4YNTJkyBYD99tuPWbNm8dxzz1n8JEmStEMsf1It8Pjjj9O5c2dOOOEEXn75ZQB69epFgwYevJckSdKOsfxJNdiLL77IkCFDGDhwIA0bNmTmzJl06dIl61iSJEmqhTxsINUwmzZtomHDhmzatIl+/fqxdu1arr76ai644AJ23nnnrONJkiSplrL8STVARUUFjz32GJMmTWLRokUsWbKEhg0bMnXqVA488EB23333rCNKkiSplrP8SRn685//zE033cQ999zDBx98QKtWrTjttNPYsGEDu+66K4cffnjWESVJklRHWP6kAluxYgX16tVjjz32YMmSJdxyyy1861vfYtiwYQwYMMCLuEiSJCkvvOCLVAAVFRU8+OCDDB48mL333psJEyYAUFZWxrJly5gyZQrHHHOMxU+SJEl54ztNKc8uuugi7rzzTj788EP22msvRo8ezcknnwxAw4YNadGiRcYJJUmSVAwsf1I1W7FiBTNmzOCUU04BYNmyZRx55JEMGzaM/v37e3RPkiRJmfBdqFQNKioq+N3vfsekSZN47LHH2Lx5M7169aJt27bcfffdRETWESVJklTkPOdP+pLmzp1LmzZtOO6443juuee44IILeOWVV2jbti2AxU+SJEk1gkf+pM9p+fLl3HPPPey7774MGTKEAw88kH79+nH66afTr18/l3VKkiSpRvJdqrQDKioqePTRR7cu69yyZQvDhw9nyJAhNG/enHvvvTfriJIkSdI/ZfmTdsDgwYN5/PHH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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ax4 = df_int_after.plot.line(figsize=(15,8), style='k--', grid=True)\n", + "ax4.set_title('Cassandra JVM Memory Usage')\n", + "ax4.set_xlabel(\"Nodes\")\n", + "ax4.set_ylabel(\"Memory (MB)\")\n", + "plt.savefig('plot2.png')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/vizualization/data.csv b/vizualization/data.csv new file mode 100644 index 0000000..7c0f896 --- /dev/null +++ b/vizualization/data.csv @@ -0,0 +1,11 @@ +nodes,cassandra,hdfs +10,10,26 +20,20,46 +30,30,66 +40,46,66 +50,74,89 +60, +70, +80, +90, +100, From 4bd84208f3eaa9f462c2ee943f807673f7a67bb0 Mon Sep 17 00:00:00 2001 From: Ray Andrew Date: Mon, 8 Jul 2019 09:01:44 +0700 Subject: [PATCH 2/5] change the loop initialization to 10 --- cassandra/deploy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cassandra/deploy.py b/cassandra/deploy.py index 5e7e015..7cb5ef2 100644 --- a/cassandra/deploy.py +++ b/cassandra/deploy.py @@ -150,7 +150,7 @@ def stop_remove_cluster(cluster): default='/mnt/extra/working', help='ccm conf dir') args = parser.parse_args() - for node_count in range(0, args.node_count + 10, 10): + for node_count in range(10, args.node_count + 10, 10): print('Starting Cluster consists of {} nodes'.format(node_count + 10)) cluster = deploy_cluster(args, node_count + 10) From 37f99d905500ad49ac843ddeb856b6b93e9a6823 Mon Sep 17 00:00:00 2001 From: Ray Andrew Date: Mon, 8 Jul 2019 09:09:57 +0700 Subject: [PATCH 3/5] change the loop --- cassandra/deploy.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/cassandra/deploy.py b/cassandra/deploy.py index 7cb5ef2..a00e875 100644 --- a/cassandra/deploy.py +++ b/cassandra/deploy.py @@ -151,8 +151,8 @@ def stop_remove_cluster(cluster): args = parser.parse_args() for node_count in range(10, args.node_count + 10, 10): - print('Starting Cluster consists of {} nodes'.format(node_count + 10)) - cluster = deploy_cluster(args, node_count + 10) + print('Starting Cluster consists of {} nodes'.format(node_count)) + cluster = deploy_cluster(args, node_count) print('Delay about 1 minute before trying to read memory logs') time.sleep(60) @@ -162,14 +162,14 @@ def stop_remove_cluster(cluster): mems = [] while True: - mems = log_parser(args, node_count + 10) + mems = log_parser(args, node_count) time.sleep(2) - if len(mems) == (node_count + 10): + if len(mems) == node_count: break print('List of mem used ', mems) print('Total memory used for {} nodes is : {} MB'.format( - node_count + 10, sum(mems))) + node_count, sum(mems))) print('Stopping and Remove Cluster') stop_remove_cluster(cluster) From 3908f704032899a6dc7f3bd1405dd3f123fc9149 Mon Sep 17 00:00:00 2001 From: Ray Andrew Date: Mon, 8 Jul 2019 09:22:44 +0700 Subject: [PATCH 4/5] add csv for better log --- cassandra/deploy.py | 48 +++++++++++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/cassandra/deploy.py b/cassandra/deploy.py index a00e875..aa78b19 100644 --- a/cassandra/deploy.py +++ b/cassandra/deploy.py @@ -2,6 +2,7 @@ import argparse import mmap import time +import csv import itertools @@ -150,29 +151,38 @@ def stop_remove_cluster(cluster): default='/mnt/extra/working', help='ccm conf dir') args = parser.parse_args() - for node_count in range(10, args.node_count + 10, 10): - print('Starting Cluster consists of {} nodes'.format(node_count)) - cluster = deploy_cluster(args, node_count) + # result = [] - print('Delay about 1 minute before trying to read memory logs') - time.sleep(60) + with open('result.csv', mode='w') as csv_file: + writer = csv.DictWriter(csv_file, fieldnames=['nodes', 'mems']) + writer.writeheader() - print('Start reading the logs') + for node_count in range(10, args.node_count + 10, 10): + print('Starting Cluster consists of {} nodes'.format(node_count)) + cluster = deploy_cluster(args, node_count) - mems = [] + print('Delay about 1 minute before trying to read memory logs') + time.sleep(60) - while True: - mems = log_parser(args, node_count) - time.sleep(2) - if len(mems) == node_count: - break + print('Start reading the logs') + + mems = [] + + while True: + mems = log_parser(args, node_count) + time.sleep(2) + if len(mems) == node_count: + break + + total_mems = sum(mems) + print('List of mem used ', mems) + print('Total memory used for {} nodes is : {} MB'.format( + node_count, total_mems)) - print('List of mem used ', mems) - print('Total memory used for {} nodes is : {} MB'.format( - node_count, sum(mems))) + writer.writerow({'nodes': node_count, 'mems': total_mems}) - print('Stopping and Remove Cluster') - stop_remove_cluster(cluster) + print('Stopping and Remove Cluster') + stop_remove_cluster(cluster) - print('Delaying 10 secs before spawning another cluster\n') - time.sleep(10) + print('Delaying 10 secs before spawning another cluster\n') + time.sleep(10) From 29ce35de0cf46dd34a462c67b4a26794362f191c Mon Sep 17 00:00:00 2001 From: Ray Andrew Date: Mon, 8 Jul 2019 12:17:37 +0700 Subject: [PATCH 5/5] [FEATS] add more nodes and visualization --- cassandra/log_100.txt | 82 ++++++ cassandra/result.csv | 11 + test.csv | 2 + visualization/README.md | 21 ++ visualization/Visualization.ipynb | 293 +++++++++++++++++++ visualization/data.csv | 11 + visualization/plot.png | Bin 0 -> 38464 bytes vizualization/Visualization.ipynb | 472 ------------------------------ vizualization/data.csv | 11 - 9 files changed, 420 insertions(+), 483 deletions(-) create mode 100644 cassandra/log_100.txt create mode 100644 cassandra/result.csv create mode 100644 test.csv create mode 100644 visualization/README.md create mode 100644 visualization/Visualization.ipynb create mode 100644 visualization/data.csv create mode 100644 visualization/plot.png delete mode 100644 vizualization/Visualization.ipynb delete mode 100644 vizualization/data.csv diff --git a/cassandra/log_100.txt b/cassandra/log_100.txt new file mode 100644 index 0000000..e9e11ff --- /dev/null +++ b/cassandra/log_100.txt @@ -0,0 +1,82 @@ +Starting Cluster consists of 10 nodes +/usr/local/lib/python3.4/dist-packages/ccmlib/node.py:1501: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details. + data = yaml.load(f) +Delay about 1 minute before trying to read memory logs +Start reading the logs +List of mem used [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] +Total memory used for 10 nodes is : 10 MB +Stopping and Remove Cluster +Delaying 10 secs before spawning another cluster + +Starting Cluster consists of 20 nodes +Delay about 1 minute before trying to read memory logs +Start reading the logs +List of mem used [2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 2] +Total memory used for 20 nodes is : 34 MB +Stopping and Remove Cluster +Delaying 10 secs before spawning another cluster + +Starting Cluster consists of 30 nodes +Delay about 1 minute before trying to read memory logs +Start reading the logs +List of mem used [2, 2, 1, 2, 1, 2, 2, 2, 1, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2] +Total memory used for 30 nodes is : 54 MB +Stopping and Remove Cluster +Delaying 10 secs before spawning another cluster + +Starting Cluster consists of 40 nodes +Delay about 1 minute before trying to read memory logs +Start reading the logs +List of mem used [2, 2, 1, 2, 2, 2, 2, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2] +Total memory used for 40 nodes is : 74 MB +Stopping and Remove Cluster +Delaying 10 secs before spawning another cluster + +Starting Cluster consists of 50 nodes +Delay about 1 minute before trying to read memory logs +Start reading the logs +List of mem used [2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2] +Total memory used for 50 nodes is : 96 MB +Stopping and Remove Cluster +Delaying 10 secs before spawning another cluster + +Starting Cluster consists of 60 nodes +Delay about 1 minute before trying to read memory logs +Start reading the logs +List of mem used [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2] +Total memory used for 60 nodes is : 117 MB +Stopping and Remove Cluster +Delaying 10 secs before spawning another cluster + +Starting Cluster consists of 70 nodes +Delay about 1 minute before trying to read memory logs +Start reading the logs +List of mem used [2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2] +Total memory used for 70 nodes is : 136 MB +Stopping and Remove Cluster +Delaying 10 secs before spawning another cluster + +Starting Cluster consists of 80 nodes +Delay about 1 minute before trying to read memory logs +Start reading the logs +List of mem used [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2] +Total memory used for 80 nodes is : 155 MB +Stopping and Remove Cluster +Delaying 10 secs before spawning another cluster + +Starting Cluster consists of 90 nodes +Delay about 1 minute before trying to read memory logs +Start reading the logs +List of mem used [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2] +Total memory used for 90 nodes is : 176 MB +Stopping and Remove Cluster +Delaying 10 secs before spawning another cluster + +Starting Cluster consists of 100 nodes +Delay about 1 minute before trying to read memory logs +Start reading the logs +List of mem used [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2] +Total memory used for 100 nodes is : 199 MB +Stopping and Remove Cluster +Delaying 10 secs before spawning another cluster + diff --git a/cassandra/result.csv b/cassandra/result.csv new file mode 100644 index 0000000..95a9390 --- /dev/null +++ b/cassandra/result.csv @@ -0,0 +1,11 @@ +nodes,mems +10,10 +20,34 +30,54 +40,74 +50,96 +60,117 +70,136 +80,155 +90,176 +100,199 diff --git a/test.csv b/test.csv new file mode 100644 index 0000000..289f3bd --- /dev/null +++ b/test.csv @@ -0,0 +1,2 @@ +nodes,mems +0,1 diff --git a/visualization/README.md b/visualization/README.md new file mode 100644 index 0000000..0a0df08 --- /dev/null +++ b/visualization/README.md @@ -0,0 +1,21 @@ +# Visualization Memory Usage + +This project uses matplotlib to plot memory usage of distributed systems + +## Distributed Systems + +- [x] Cassandra +- [x] HDFS +- [ ] HBase +- [ ] Tensorflow Distributed +- [ ] ... + +## Running + +```bash +jupyter lab +``` + +## Results + +![mem-usages](plot.png) diff --git a/visualization/Visualization.ipynb b/visualization/Visualization.ipynb new file mode 100644 index 0000000..86608f0 --- /dev/null +++ b/visualization/Visualization.ipynb @@ -0,0 +1,293 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Populating the interactive namespace from numpy and matplotlib\n" + ] + } + ], + "source": [ + "# This line configures matplotlib to show figures embedded in the notebook, \n", + "# instead of poping up a new window. More about that later. \n", + "%pylab inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from pylab import *\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from scipy.interpolate import interp1d\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "distributed_systems = ['cassandra', 'hdfs']" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv('./data.csv')\n", + "df = df.set_index('nodes')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "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", + "
cassandrahdfs
nodes
101026
203446
305466
407489
5096109
\n", + "
" + ], + "text/plain": [ + " cassandra hdfs\n", + "nodes \n", + "10 10 26\n", + "20 34 46\n", + "30 54 66\n", + "40 74 89\n", + "50 96 109" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Int64Index([10, 20, 30, 40, 50, 60, 70, 80, 90, 100], dtype='int64', name='nodes')" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.index" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Memory (MB)')" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ax = df.plot.line()\n", + "ax.set_title('Before interpolation')\n", + "ax.set_xlabel(\"Nodes\")\n", + "ax.set_ylabel(\"Memory (MB)\")" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# f = interp1d(df.index, df['memory'], kind='cubic')\n", + "f = []\n", + "for system in distributed_systems:\n", + " f.append(interp1d(df.index, df[system], kind='cubic'))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "df_int = pd.DataFrame()\n", + "new_index = np.arange(10, 110, 10)\n", + "# df_int['memory'] = f(new_index)\n", + "\n", + "for i in range(len(distributed_systems)):\n", + " df_int[distributed_systems[i]] = f[i](new_index) \n", + " \n", + "df_int.index = new_index\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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jaTFBUJAYbCJaFxFRERERFqWFhkI5diSkpI4dOiQ22WIiIiIiEgzoUAY4Ky1eL1et8sQEREREREXKBA2kUWLFjFkyBCGDh3KVVddxdtvv81pp53GsGHDmD59Ovn5+QAsX76clJQUUlJSGDZsGGVlZezfv59JkyaRkpLCoEGDWLlyJQA///nPGTlyJMnJydxzzz1fv1ZSUhL33HMPw4cPZ/DgwezYsQOAwsJCzjzzTIYNG8bPfvYzrLUAZGdnM2DAAH7xi18wfPhwcnNzj3ttERERERFpuVrcKqMN/fHtDLbvK23Uaw7s2oZ7zk0+4TkZGRnce++9rF69mg4dOlBUVIQxhk8//RRjDM8++yz3338/Dz74IPPmzePxxx9n/PjxlJeXExERwdNPP82MGTO4++678Xg8VFZWAnDvvffSvn17PB4P06ZN47PPPmPIkCEAdOjQgU2bNvHEE08wb948nn32Wf74xz8yYcIE/vCHP/Duu+/y9NNPf13jzp07WbhwIU888cR3XltERERERFomdQibwLJly7jkkkvo0KEDAO3btycvL48ZM2YwePBgHnjgATIyMgAYP348t99+O4888giHDx8mJCSEUaNGsXDhQubOncvnn39OdHQ0AEuXLmX48OEMGzaMjIwMtm/f/vVrXnTRRQCMGDGC7OxsAFasWMGVV14JwKxZs2jXrt3X53fv3p0xY8Z8/f2Jri0iIiIiIi1Ti+4Qflcnr6lYa7+1Iucvf/lLbr/9ds477zzS0tKYO3cuAL/5zW+YNWsW7733HmPGjOGjjz5i0qRJrFixgnfffZerrrqKu+66i4kTJzJv3jzWr19Pu3btuPbaa6murv76+uHh4QAEBwdTX1//9fHjrQzacD/BrKysE15bRERERERaJnUIm8C0adNYunQphYWFABQVFVFSUkJ8fDwAzz///NfnZmZmMnjwYH79618zcuRIduzYwZ49e+jYsSM33ngjN9xwA5s2baK0tJTWrVvTtm1b8vPzef/997+zjkmTJvHSSy8B8P7771NcXHzM837ItUVERERE5NTXojuEbklOTubuu+9m8uTJBAcHM2zYMObOncull15KfHw8Y8aMISsrC4C///3vfPLJJwQHBzNw4EBmzpzJkiVLeOCBBwgNDSUqKopFixbRo0cPhg0bRnJyMj179mT8+PHfWcc999zDnDlz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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ax2 = df_int.plot.line(figsize=(15,8), grid=True)\n", + "ax2.set_title('Cassandra JVM Memory Usage')\n", + "ax2.set_xlabel(\"Nodes\")\n", + "ax2.set_ylabel(\"Memory (MB)\")\n", + "plt.savefig('plot.png')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/visualization/data.csv b/visualization/data.csv new file mode 100644 index 0000000..4953072 --- /dev/null +++ b/visualization/data.csv @@ -0,0 +1,11 @@ +nodes,cassandra,hdfs +10,10,26 +20,34,46 +30,54,66 +40,74,89 +50,96,109 +60,117,129 +70,136,152 +80,155,170 +90,176,193 +100,199,213 \ No newline at end of file diff --git a/visualization/plot.png b/visualization/plot.png new file mode 100644 index 0000000000000000000000000000000000000000..b57b66c7f7084f9d1cd72560ef4fddaef236a8b6 GIT binary patch literal 38464 zcmeEug;!Tyw=Re@64EVFqI5R`0umAelG4%*(jk(9bT=rWbazQgmvlEscf(y9{LZ=e zj`I)PF)m}gLtbG2R?Yd$=b3Y^{Y73@;t>iF3JeU)BgxmV-on5<0;AsGaK|3|idt!4)UgZdcy4|ZtA;|lzc$6id;UeU_X-ci@~1B`{P zy|uZOy}60r6NeABb|zMqPuLil8QJKc7~9)h^D;60_a87?*%~n=qvn2xfq4QW`AS&H zDQRoQ(QV{7{dQjkPx2GhOI0rz`)Q}i?$50m7 z=EXW)s$P$7@ccI>Y&^}w$DBSsSS5YCp~I^xI0`t2D`8`Y`}4ZCeWyuv{j|DCm8n>` zD83@EBd8=JsKkoa)8OvEy_Ux#x%(O2qMG&Hk1_&`eo=rwl8kto0`Cv~xn!Wz|No=^ zC$~UZMqC_WxBgUXfCU_6$a7S5$%qF3pNiQ-^{$Slqj{3*>O@A#AMr|!`q6pcJ^A+S zn`*5C!*JFcN=iy^`DgY6*O{4_e+sozx#rv=3E2!WadF!Q(nT?9R!jQ@DW5+N^nybq zJ1{daGQ!5i6|1zIL9cPYJlR&teHZ-o>(}q+5zpH`#J+F0@;FTNw!A#uq-S7w^emc6 zGQ9h{Hu$xM#JtHhUMjD>zR*Z`;%sc@TA*_mlRfcOjYv_4h|2` z*T09N*IcLGUePKjC|oVm3c;pn)w}d0^Tm?#IVfo!9u3P4=P2h|T@$&U?tGXi`GA`$ zm&_a8)6=t?d~RG46-Gs;3Ry9!*G#RW-Q{*An{M+%KXg*5U?PryprEB`yZ)7%%UwjB zo2&DqotZ@Sa?|jbnD*l_Z8;ko7MOJT0AkB3uZ!c&$cPA$Y}w@Jvqg=^qZ(yqV<8zC zR76~sJ#ZNOFii#TYYF(Bn2-OCe0SKML?h#m3nu1zXF$Yl{iN}F+iGJt8$(i3GRb*0 z-h8g1e(}aA#o5oWHz7PBp^N-x&)-|CKiP4%b8n%gdO1S+wXE#w&+HUl^P3jQ*RSWl z1u^O!EO#Q#2s$4ah=-EBF*m1&8Oc%B{~bmllPXC1sicH8#q-7){OUSiTfZlch5!0! z7*XIfGgixGfWz6@8I73ptIP4<@c8&n%20mWfzA58X4Jcpq@=#-cZB3=)hD>_RQrQv z4rfSW&$^$^c&BXE9rk^fP3A2#pNQxn_q-zR*qL?R%>T;(xv^|(OGAioT=4ih2?e(cw%k5X#I`H!{%bA3zD4c@Y9bN=9f~L9Ko72F{RHsGc z$qEbU?a6XNc4N%VvBF!eb1F&R7*zm9_77Kk6D1TBu<$jle{pGHV`H~~^Eaxnn(M1` zK6C;fe!i)Fi{dlq)R)8)Ig+aqnVQ;f*DoMpYWf^TMa!8wRN#cb*VmU`qvETgoB-~p zg9BT}#w**=LTx!&S@bVozG!-0A0xW=0*5$Qj+86;xcM$HDCk93IPQyg*4yP{2R&^4 zVX?6tA*6ih&m~~AT(>#=Fvw*+JOsZ>gbJG9Sg|>5scO0Hi=FJwVfdh?bIm#}nNhcb z?N(Rt0lUUmW;K^09!%uEd8lpMNe#{@85~i=*&-?mD(c2WsZrbY%F0R-*m3)v>GNz@$A&{hUp`+;Ev&koFiQQ<8i3W>*5;nQe<_#yE?@8J zY@c4W=u>mE$lX|(-2Rtj7IO{B3oZU&2TzOiJJ8iDEqkY{?Ovpuj;Ls_?9}eAuEc5^ zPE}YOZH|S8Q%aE82m(yuxOXbxgz~`u11FIDZ5O}L4&|ya>FMit{{B6mU{>%`wE_zt zUqV-x;)O~96%NW^g@wk@(9rW8jbc4`@bw3*P_OaJpFc`|kBG&A??_5XEmllfUQV)x zbu%?4y~|e*kBj>)hX1}bf?68JX}=Ah5IEWOq*2O-FJD>zwTh8ZQ0@PCSLVzBtw&NE2>tZ?|3W z#V@g#;^^a><)r$dC zCFHe#R$N?sb+smxt=r;<+kZK(A8NCiUpWM}6KwYRaiM1~*q@{}ihmKC)C+7Wa2Jp9 zYrJ=bTD|kXyiLZ7C^|bk?<_@?)%NetY}@POvBT2T>#qoph?p&>xlvG1V4OBGW1YY! z8;|A@!XcpP%+@)>Y)w^$niW*vp;c0n%Z~U9bIjb02zVhkNWLjb%6!Coh|tLCu7?&8^@#cK3RId%C;p#y8X7~0c6kv}m??#4bL&*5} zcp<}kIyyQEUfzWDbz}7k^G;C=fmVRLlHhC!!6^cVYFcQN(7sNQ5EBbeN%0sUxIXo~ zb!>05^uR-Vl%Gsfh{;!#d8np9<3k zL5F6v(CkaE-H-%;N@Z(i@Vf*C1Sl1jGhJa6qE+kPf?%BXej%!ro8qRr9Uud@=t<(i zo;S;mCXoVRnwZo4$C=w)gFE6j7VH97lSIVrl%~r@X5H=0WlthkXsFOloWgf;(t{cn z{r0`F#+zsmq7%WXc&@FHbD9&}o^=Qr&(`tuCUEerH_*IE2#b%G^ziU#D}*q>Wix;G z>gsm%hXN(=3Q1jE-8Ksz9v*hf>8i!U!jPH9Q;K-j4=CUSdvuMg*excbwzjssExWtA z?oPYZ9H3m=)GbVid42O695Dd8o43?B#{PJ{n4Zy8n zGgbuE#<(6}n?qQyB_$U;Z%;kXC;C0wa|;`~8r(0R(a|kzSI(`*HeOM~034^HrBy67 zeDkhAvvcm|q%yFB2_Tr9;JHsk#ADMxKZL;=)!T>oqeOJNdjygw-g1y zt)z@h2EdW6>FUVZotjO)HBv!0ZmWiK8ep|qRaJ42pC23?v1bHH+l+v`0xP= zIPj==B!gq0tg);QI%(~IFTGV#Y8}dyj%PO+sN)% zmseKyFXwJkuqef076iBj&*tIKNw{Bvm4Rr5crD{Le7c@w*SB!kFSG_wIkT)R3K^TG z$oX(J@Y3^QIMo)yZntyWCv|dNs7!U%txJ@WL&fcPY|DNrnCk#yTu|u!ldBR6PK4Rx z%E=Fn@IezGFHOL-A>jR+Te!Ly#8lv94(wM&+nuA_Y^;ELVtF;u3Zc21hn1BT;w6I; z3;2y^@ZdbNEoW+ufUzxBjqH8{6i_CP*$Y@BU{K;9v}33jSU>aczJ1fc8>zcB zUYw`hc%yMTx;|C8>o}=-lw0Gtt5ro{lm%g?LX33=rzLJm_&ey06d?SpJ2@Rjf84OS}8UVvU zt)rF8$yO(+<1}m&psQ6YF&aNKDj6RUa~c4OG7S(K^7N0Jqbt7nTJw;t{rveePqp~- z&P**fIXQ+;=;8H9p+{Q)7A07BmZ(2^-Sx@ToS7R$Q(pOo81((5k{t4U_UzdcYHHv2 zwGIj(zNRgau*nJ>D?x6dtnwb$9;d6jTT)KWs4I#t$+nA5xFeiuLt+UH@bRO1fzxR_ zfc4F`OF~dg77N02&yHsjigBEE_P@Gv0|p>pEF@8=RsW!yQu6JGvsJboz~<4HfDh3K z3EhUd>MAJ%TwQ^}^nyRR;QCQ?7pK)MKNwsLa93~uOW;@e+!W#w8B5X9N_U#>ZL8gv zz`O7MH+5Hy=-;4_uU>8p`11fuPE@_?>D%w(!D;$RbRo_wc0Dgr^|j7P4!hRkR0KQf z4tQ3hnfUk;x2Gx*Nk!+v;laazq?`dN?j53#3HYZs*l+~W?@~7Z!;}3ig>Ha~WAJ_s z`Sf3NDxD9zn-f+)Fj?q3G5*u}0W5&kx=ZcBIJmg*q$^bsVPP*_TwLxn4Hcc9n)P~s z`E*q{py9wa0|En4c>8Q9a8QZ?hvBrGCa}l3)3B#96&nkd3q6+e z5EWf4sWXyx_@^Q*uj39_vAz@Vvh|5lT3`q(U?Yq`=z?)O8k7LE!$ z>*tRIgvqv-V+<3;7v^_gUzWvGg{I@oNBhmuU|`p7OLo%G^g_tM^rBX}V-Nj>uDmb= z&prXx@ztN)BMyM;!F~sMsnfom_*a5omAq69JkxPTgD|BSu-Dd z7SGpbaT|Q<38EnyxnNSw$IS=w*|Ma9w^w$I4QG0s7L%`lS;xo6!yIi4`x9H$g@a(q zX1^{!G(5a9_#IJ2(*~ZJni`FeHRId76W{^y+%`{vkTsty`vRE#05~idp!`spzR;%p z2K*AOsVAQ8g`nVClHCt*Y+~&Y`sby(5 z=ZrRnG69V9Ad*fH0f>1iBZCI!hg<16+)2v;LfP5bREh?)J@)q8-lB6;3x?`fs=5!dl%OA8=gKmOhXTrlLU zni}#SiN4RGSP-^OJ4{)i5ioy>izBFU*zSVlDge&cz&$rca`DyF)L{6J21Frh*V@`T zQ1G6wk9U(EV00f?w;YJb9A={iK*a)p9|FDrtX=MKwHFZe{>oLz+6j1Usen1@H+_Ny zG~+02?BmY#c|hv@ZYtobxUmf<}PJZ+}@78V@)`v}T`TJAUBOefx zz)-L;eP0RLU|zp@vohm2mtVEp?|H+9IU8mVkZo?`-;zRI|C91sgOC{P_f38s+Gri> zAvp%`myoc3=`UBurp3;^4eYQ~I7yS2y=jUYNRT`Qf1Xn??Yl5R)UD-L0v9%j(RW5# z#)Fu3jLw@J^6CEJpQdzlpI4atgM#bCs<4=-CzgvkAlv z+Fwl?=`+rl#N=RI0pJ+J0YPplGZ}We+V7|ab zW+9u?o=yzC+JmMxd~KO`@9_5b_kqMhJbnyDp(16-Y};$w1gF4r_=FRS7u`Ryz^|-N zI9rjrcz)pY^n_u-;mFu@9ILP9RD-FzrzZnoE=-cs;+H(&E+D*uv0$1Y;08G%jPr4j z=wNXv#hvSE!rti4Z`9NXf!;y}zCwe8V$<@7OVtuGl8zFK+-6rZ`gnvk-vt4VzEl`e zKVeP1fem}K;(7U2py_q)(ra^WhrPJuo+lGVxa4ynVWC|s$jBH1vKlI~^3bNu$*Ixh zxxA=Dqc)>yRq{T;e;JxfQP1brv9gh)PR|V;o@9rgfJO_kpT`9i&a#LUHutu}x(nT( zJbZgz(xrcY@(bBlXX!zl5LQeh$_n*>+mj@Bp(JJ`J-4Zx-S*VG*#36q#VlgCmd|-; z%W5WODw;rn51ESa4EAT)Y$StU>6CaVz72=rc^8%<>GA_uVBn0dVtrD#i-+_cc!3A$ z9(>$uaswNB0fmJ2ykg9#=%nF3J`WwX#)VBybErEM9;5gIyg@`pMi!O`2TyyDtb8as zsoygXF26+_EFL(S-pfkwm30`FC&k4h;eEQXu>tWB5S0I$t?+`>76vawxa^O%rjUbD zz2GCCcnbV6M}o8T!e;VbE(2%8tq&&q7-UKe4Gr(v4QclQUdvUZ|LOQMhR=rX^GAFw zrJQ<;U|~y9_W-lu|3Uz!TN{~4wDTHgF-LSQ+No~&cV`rI z^=NPQ{a&`iUKhtgu&Adk`E=RiKKI|YqS5W2DMi}a+Yf*iIso3e2S^2!R|PqYU-hT6 z-6q+|?Fk%a+}mZtRj0GAu#k@duJg!jG*5T2^^2zKb~$Y0185Me7dW3kk~fzr>{-*s z9b&R?AnR*+r80cd67uzlN>j`UwD}_C1LPzn14A91+}pR0!R}IXam5145eyR3Fw7tm zhk#D<8_@X<2(~~DPD)7$2L$7%LPDu;5;>Lm?`j$Dx!-1r42bB@__kExMikTgnbIy- z&2I;}g;%z=2V7eCzz!WW{!sKK zqyR>OO)L9QXRP2oZmF;m5AgD(I2G1=QVmh#|K{7zU3ZWujMh!uF_x5dbk!}ltfD1biD)7M15pbpDAjSj|8(w=~ zA$q99?*M`|yXl{Gvwj|s@B#T+#Fqfk3AwH3LvKZtbOB!pai;#C*nZ(qd!02Ky&DRi z0J1BmXuhF!`|abIk7y<%oAS7;pLSm`e)vnvBiu27RWctS4|3)&3hN>&ET(J$DSkKY z0aA_ofD_wwGgR(D{{m{JGA#%sC`3YOQ{6BSP$;!p2wEC;1aO7~c(rCYus33kwCzys;1iYOuJp+C3J zyi>XEnjqP=F)5Qd+m2{No*VO|UP(=W9-|0ro+*4lE1a<#mm=FC_PiHTlxuRgQWy zEPKz=zHdnA+)p6f(g@Fu7a30o_0myzX4LuwZov6rt4h8*wMaVVVZ-#VGmKGI#~E}} zmC&UuHg%hgPQnbTc6d@bp?`ZA_zG~Pooj&D9J?Y)?0}@n*6`MmWTIFQp)BYvwJ2*4 z-u_a@TUl0QqDz_Tv+Vwn^5!SjuEtzW({2f5k75zmwL1Gzdn|>uC28XB>z-^$PCOax z=)CVUUoc_p_pcUkCfVo zlzEvh$;5rkHE_ZokdJ3yC#9nPu5UASg=L|oJa4KZcJ-r~_3fT4+QwvDRor^o5*^I_ zXV~YV_%?UT8(x3e*<5>R{?xt((?#=Y@hqH7adlF7W zm-1y{VZSerSy|Wl&qvTP`77UkipTJg6P2{=nZ#2Wusz!jQ{`K?_ZnBx>?%7aj^nl? z)j&ZX$dqK*A(&1Xo*bpk3EbxTCVH>VGxWvO=;%G+4F!;<8a_=DTJN+BI8zZD^?(0> zOV5Q8DCJ~0>q67prw3fdg`=>=8{Z*au3IVS5ozl^KV4b4@uv2{Kz@y69dK+5du$rsXJ&8 zcZh^z?o-xhJ;*j-$oxvBH<+~&4`=@@k175@68%!T>rC>}?`kV5#@;yTu|4~L_{7f= z(q}$^AI&}-ujO!i+EtAq+&!Eg$XGjGWJey_tJ!gwYMGJ8-|C!9Y%|k@mo)H%ZrwN# z^M3b~)K0d2&aoGk8if@E*@fUQgphkLlqU4_XDS4)EZTXs-X}>b;h+f>BafjQ126h3 zETQOAe3#S6AfHOfXSQ;48WrCs1Kx8~OE@Hl#;c~&Fs_vSyf*qjy#P&T7-I*cYl#7& z!G@5lFFi5)4tP*+}G!aLO-0g@7)jurT7iO4d^~Qs>dR7KmwnGx3;C%>~H40 z8r@jX^Gw`&SoRoL_e)z7p*>kd6$l$VEX;bS>{3q`L}Nbnqr1 z7q;FLp}x>R!%vtN^_8=8fMbl6;g!FcT8hfcCG{^?J69)~c~e5{ z{+T|N2!-mYuoGR^1&@3^W0C{nQ5DML2=9N+Q^p)CA*3$R*XLel64$CN?y#~IV$uri zYRO9Z{GN+$)IMYKAF=W`GGAu+oFTp!>6$*J`r{ptPhR8Nn(bxhJTgh=)QPBp>(d!{ zjil2d!;^n#C-p?5d+ry2o?V9))A%^0xcDRdA5#Qx^3ROlpH!HVS*WWjHM5Zy8V%*q zJ8Usz85xr9G!|jIYm8Dq@6r?fRdjDbqI3*?nf<<@t~1r>e=Gb@X+->WF%>!Hq_!tD zdLr#goJ=h_;l(o1jFm$-O(97)a%A?;qSxH18$%!1YzwuT4wVH zGHB6m*pjRflm!@7@Wgjx z#S*-EfwLld=ryp5{Ci#FLr^eN<@SOV+vtARqUN`6I%i)tuIyi;CS;Bx@g^Jv-|xBd z8`p|ob^9PD8;PMLnGO zf8##lYecgmsWEtt3E)+9jyP=x8Q5wMt@e%%Fx2>RLq57MHq+KFFBtiF?)*d|G9>QK z%`%pzMx&WGg;h_UzUmOJluqyW6x}w24E-6-;`foMI1noE40gX+_BvS# z&I${+`f3C8Mnu@Vb!j{(CHurQ`>E>hz$P#EdE=9xx&xgL6tu_|XK*#3#|8Um-h7XG zcykK;=u7ky8s0>W$BJ>LRof`N(iOXOs~J7K(_DGj*RnsPm7?1GLOk!!{i%c+GQB&x;Vq#< zo^MV5{O69e7VChY3077Ir?`j9N#-d@kz&FMba3h;OBae7LzLfT2L>~wlsRr6Lg{B5 zHK{V0ATilb~&poirTf1R{g&e zN|}WaOOJi;KnSHXL63+@n+2#JX|{Dh?E`dlx3}DRKn4~WbVf+^J_D9TT3kP+JNq#1 zmK*ZL)R&Ek>5`#ok?@8#eT*RBFOo~2Dl%|}O1p6AYu>K1=R_0Ovv0)d{lZGWINgpo}8CFk9`fn#VpLRIy{IPwWqPn?jGoJ{k=3+j#z|0N2)jL zPSAu{lHm^xH7sBI-}TE0`wyIg1RPX3e{nK@RtcnK3=qh+!*94?p<+FdZK9yt1a!d| zfF>NMx(jmMg#v4>U$CL1GYqJqLdzApK~?Ytno=GlzW=9UN&`9X>d5Kp0Q(v>k$Jr2 zv*!tKOtMSUJLLl(6O*(>h3g;A+TK{XBbVAq^T;DuY`(HH6emgEY{R@R6p*;$DRcw< zS!}5u7bXKNN2EO7OWca;>RlkS-P7!g`oc0OG!*nnOdq9yq!*|&eFg>SVNlsA6!4g? zviVBPh5iYc6B}5LRA+t>5YybN(LMi%0tFSH)A|m#VI$^4*t5k)0n$FRV^|}XE=081 zgJ(ao`73-yC|2{Qeq~IkxfPkduo)ao8lz5rabYl2FgSK=lp(Y>v;f4l5!77)s(7NH zc+&>-y9Lx$1d_yips%FFu$L%-%Zf}#3fP%44^JxK89KeSn5iVQ+TX`M%2RTz8$=iU z$oM)Y)V=g&LM?Av^R;QP>DARA?5YeEw%D}SLZ5&JBm&uEHp3nr&@KTwI_$>YJKC&7 ztFXFX*n?88^FTS9QQz{(loc%}XAH<+1MgAz`{yUNye%{+VLGOPJ5EY*xB%+o&8DA? zz95n46J_OjWn-wZ0Go2{B%mm$)_)?<2Jr)kVbt{nzYYjO=1sxb2MX{HNM@otUxG%X z=f*$3m;%g~yVaJv)vBKpy{%W$bbjVEJaM=kew$jjT+t(dB$~P+4eHEIOp;V}@Pod2DFVi6>iAC>>XDEbLYnLW0 zQME^B>`L}ZC0~Hr_VAR=*^+a3bxmGgNop*syvkYL%wwp5qL^h+xFZs(kwHO8Vzr5E zh^r0(LmLic4qPy}*I>C9WPa$mNt!Fr-(WmY+yERC|jJ)Sqb zfA)}A(5tP#`9Q@)O%o~pT6ev5&ofuPSOEa(R5#~g>lS^C`EObtikRGs53E3i-Vp)0 zoRa&9=3Y8OyimGPWbk}T6VZkv?HUtL>|@r{`Pjqcg16hVD$RcYbxVou&6*K|=;Lmm zRsVqH#-D)G{Ae6@PkacccvU++RL?_!gk&;;p)elBznFQr-RFOnfYTF)W&OLW)N+a} zB_Xmm2$id(G2^QsgW`D$JSo9=j^N;+ve9awecru#!qNI1QOm4pO7BXDzU3E{#XKJi z#OxmvGW%vJ(4iYw>VPQM)4Av!t??6&xHpV3xT;Q$#$q_aJA`%v^KLa6Ie9wR^zMvx z4?kQ!4|s#tKeWz@!g?WWKf()}0eML5@_uU){X0uWAfrtoh9Z7yDm9a^4^G3L;BH6X zDl59cysO7$2LhZXm1*t1!Wh=kt(dMTq*WCVefRA>}>P@oCEZ!_6a~Dce zF6!rwhF8ALD7mAfIiKZ`I2pX!6z31|)1Hw>5JMcP+xWEwmVNU}`u?e2?9x)_rBZ&W zu5Od{Qu$KYBsX^_WU2a5;cV0%zvRm}ex^hyYO5-Bed#ql>=w2l_|pJe%%W_Dt-SFs zOCnZM&)4i~3Vejq6P;xw?RaA0?f15yfS=!XlB4*lMwJFhmX@BamGr(66SHyXU@zE8 zl#HcOwnGTAuggvFoP?YtJTH&R?V>Y+uIO*7yw(Gg_w!qbX)Vk@v}o6Tyy)m&tmXG} z?E_mEoT^HUYUOS}w)!<5nHU}uK>)4gKG{L{*8KVbo)GaYyZ!FF9|{;QTG+G9Wx|(f z!|=~NwOJI`)|j1lTsZM@2J0*zd2nUGwbXEAxp2&#yjJ#V90rx84E>3Qk zn53xr9*?y?+cpzoDwcC~Xx4tjfFydR7%|;*x@@cNnrXH&N||24A~OQK_iM2lk)7HpR4W z)^9GEp5bTV3*w4dRZu5eJgRt9RboXWz_y8ryK+MmfqtJqQ;s3sY-ZySOhkt#2FkTY z3vB1mj~8cI$&iV=7yCjRky;)}G@?f^Q%V?n+L@+i8l1Ky$?JE&4xubK-=eE%>*8=W zjBnr4+f1xicY%Fj#zJ!t(N#c(vVYmDhLNRql+!qz|`+O+Q=r>G%qAM*Dw2P8F!QX1Gjyt9OYS{iZF1 z+eDbe*rZ@Tu>Kvay2FQ-2$Q`DrQiKtX9nx`SoYNqhiYpdu4sc)Tx!8wTZWoiU9BG5 zpn^iuFkLXj0jecIJB(x?V7O2$#89Zie^-YGP*4Ch;PWcn!k?-1ZJhvVH17H0?^R_< zm4b7v*mfnVH8xxz53xTC%Rn$(OK3tD5}84MuO@llrpr4C1-B{cwB^dzA^v6eSM-ES z7Jr#fBTUPmwFR{BKQxc|498xm;ys74(FAxe)w{zu6-f#IJLEZfzhZ@y`l-YKWvlD6 zDM$Ks*xuu)ta{DQ2e@XHc&sK4oQ3qWuN5SDfVAkY2O??S$K{m--@Awq#(U$m4m|zU z#nqD89!m~O@p~N+&I5kC&)byj{Y5I+2(~fvH9%6_%3O%|iwDuRN8`FL4Tf@r-wy0k zk#^jpcp;ETOAl19%+CVG;NazR>Co!nc|$=y4Xk1nCpv2X;F~7UDQyY)u0K+7`g@Hk z^p+*xNahoggX2)XFE1Zi!8_loe`dvX$nyePamQ_)l_=rZ%Q%$bI)?#X3<_y~w z3w=(4BhH7#k_o4OVvXpLGD${v+%W@X4N0uL3yG>fs;96%UFjR018a>fmu9WCd5iKT zjDWgktn!%~N>>Sfx-l13wrFEw z+TrWFAfP{Vv&cGo;f4($r^wnJizCNE7i6?FJ#1;-DCPpa`4;!?rb$N5cWYD-&-gX; zr|>ZoVeXYLE~d0)Qo6@v}Xj5+Nc96N2vtcayNMd%@rb z(lXM)9Jh$+tgnTT5riI+`iY204Iqa~UIt1-OUUZ&*R_!q1ZcxkD=I3U@+T^ib#o7N zv8h?U=FPgxly972qx@RUT%dlI+6Z&$DDsx*=$yx%3?9-8dvWFbR$RktR`VlZE@aO# zKU^nVIau@gIatVS6ODWhp_QEbeYd3@p+F>U92Oa%n5!XxK+wxGu=3d02IW=9L+~kO zr!VQO++sRFuE?#zh6`9n(lASKxIp4iy_yBrqi7tgyCvaFbV4JsfC zT-HwLqD+ zOC69Xy+k5KwM_?E>yH*rEdx;Vfn(2eAf%5ydq-7cG+v5mvU~G!K-RS}S{75vK_x~H zN=YBva8>p|&)?fd4|gDW5SpM)kEKu{Sx{4hsR9lCJeOOguvKd*u5s)pk3r)l|G{rc zG$QtAMO(nng`Q>=zrB zq_Ju&N>|QIJC{H(D5=Vo#uJfa(6<9xNOtYFp)w+9`U?Q+iH$81Yyqq1jT`9oygNzLE5C)yUCkkI4 zEQknE1ll!zf2o5FT;l+(kA2=4g0Df7UT1G_rb?j}?if%mk%@`KkQB<;ec}n%<4#rA zFRo?-4i7YJcsmHw^3iP1YB%Qw*~N1T`9~+BLhOj*eT%D^z4?~;BgqaS)R3j$oy^nXNZt;4n+sQC#Q8o0Nm2)L3QO0E7^ ze_ub#t?uK~mBBk@dX5>OC++RE%ud>V^EY@tD1Sj)TS2*lAN1OBHYO1gOQ{uAM=jd^ zmI+xcIT=}x$CK9El65GU>69=Fy%{UW(I=zo(B$O@lY0&N1fL6nhUr|WkslLeL_tS; z;3a6+dky*x(a%Xhg;F1=QyA#h2xua_aq>Fm0K(3?=SBSg)`EEDI$81n)FHaH{o+gq zmZZ4P*D^*-MJ6lx%W{I9ZyNNpv~W`Liw!pgP1`$cbwjhh^8chGCCXNk^2^~|?RfBS zHork>@U=AR?eT5bi$ZX}2@$4`Zx?ExYy;h>ueG$uK)re)BT^QHH3vkn+t^wtHs1*1m|AanD8Vg{#k6$C514TWAQq>J|m}B2%hrK z?{La^7JY=NN-J7WO9suzK|phZB+FxPP`|;2iQ*12xHQmf1Jx~|>qVfm2K434BR>Zn z=S~xLI-_t!J8-XGd%;$|>^DnuNluF-Rdm>4SX~h#hRgv}^dfM`y93DH5Db2&+a{t0 zNE;DC2=Ys&KznP~Zi6*mwQpM0ZgX1JZdZ`AK~cF9)mLZca)FST$1Yu5fcsi@-GiFy z%PVAAJBYgC#6}P2n=tH<&wjDv%~YsQxcwTNQFtIH4#?~ESy#92hz9ea z$9UPp2;vqsPoDz)H1*@OVN!5ShNnq7h?CXg2BD;4mm0`4h|4c#(3F`N!%|85>qB+E z406ygLhngk=e%CQl;%K_bctk7hFm=IS=Lbo=v@#)Rx+AF2%Qa-z3B>ZZ`kK zB+ak{`*6qNNe?;d-hIgT!ZHHEM1;~?G*GG2A||+SH1>pTJ(H9FWZ{eGWV0Zi#q?YE zI>a3m2wAdJ5GdtLn~@(yK=_T-(fA%pzaB+x`HMyB_EE|gVGY$Zwe^c^+CAar1xbET z>SHmQaR8xYVP-|+83V>3TPZqM(rjR=z41Emy9?Mm@IGq!S7LG+uYHto;%7(h7n3cl zq%^Scpt3wI0RM(VL%*f(`cDB_$BH{^Rh5LI`Y32U;g{rPypKbdQoNqc(xwz^@ z9zPy}dni(v?uaGqqWJZD+A|q7Qb+Ok*S%k>YQ8Uq)Ubu@e0}m{9orHz7X%BN5B-~1cCwi`c*_8ZB}0|MrCPJ&Zuqzzs0{QJBg`Wl9UQ>+Ko zs%mmS8u5iv#=WQfIxz9SnLNS@ugJI`{iZlVvFOs7`v$Mdxv8jDXRAM5F>j(%M!%GA z+@`%+gYsAg8G*UM2>)H*PIr{xf|DvoKE+c#1YDA*;OpQN1%oFjczD;_pZx0$ErC1v zLwgRscoUR@KP3#5srm8eINBCZ=$nF4-$?1~?-A&IcJB?LeLA%8a~=~53oHCKycWYj z01;mhara5w8PeA)Xq{-i_nPZyc{IcL z8=slF=&NOy`?Y6$x8woBkWZ~=^@#r@iK*p* zj4T?Z^DFwu$F=hX(B5q(prAvu4{6u+$KK_p<&=^YS#yfJMkI(r+tD)2HnZdTz+v9` zd#%?SK1!JjlW@5gPSM5I>@8Y&vRe;W|I@kff1l7iiquijoPwXmk1B$#dt6EE~IFneZb-v`IY{r z=oG`c9Hs`{M}tdbcVd3D*s}Kb^L)ci&o^e81twHEkr)`V+ieVzEcTBMIQdcn0@%Ip zCV{0gA`c(GsWT@nulRt4Qukz+VnMvfJ_*?u97Sj-UpB{yQ8btWbGaOMWpIG5o7@|- zfPgBLdkZMY+Cd>veRO$?{r5%MB^5y<`eMh&A9_n}k{lXChfbUFuqvjB0mvr{3npKt zS?LpsUfw-T^zZ3!H4lfh{2dE7#|}9 z7mP1qXh}*os+o1X*|klnM>rzz3L2jD>;3VaWG&-tdBBD=B3qI%+arHSyhMiB9#IFG11flKpFi{-{4qiw3_3kvGOq_`{2SM?N`ZhmKxT z;@<~^qQR9oG!?8-IAWanHAO|=xezPg``jFpqW#&ypp1+)o3gaWa*kYv=mAfF6SOSx z>2JK0mW?kJA1$pv8QPyWWVD zS8$%6pi4mV;s+IQC&y5&jEX_o-2zyCo=S2%LfWhFYs?42$8gqWlTP&nIo@^9`L-T3PtS3iuG!=WLfX`(H8z`l0@ zP9a9)0|KJJi-%3K|neDaTiw3(@nb< z_Go^qqT*K1lcQsk>w4-x)z4yJ=X)Q-g60i3u>#C`e=s)IxQvg0XzGinHhY*F9Od5e zpUSAGPxS=dIUa*~oHsC%IWRsFxXH3>6yGAK+P7I3Af6U5k$JYdsn*x8+FLDrZl@z#M_v$TnQD6EUX`+os9e4Rk|^F+NXmzbE?+1c3uxMN`0mjqqK z5|$5Z=NEhRs(`ox0a*VbXH>HczyaY-;DhUvb6fTd?F-D~sUPEk2VHHqQYUO7NZKTy zXLlm^5MX+RW{+$I0PxoaNGNI9aBldNk}{spk+JdSxDXi?^?O4@3b@r*0`C8;_9b^S zd7ewJ_QW5S_iI;}6N2_UL2$j1M972W6Lb{@w54Lm$;r7Kt^WeI-Zwxs2-NJLdnMqa zDGVe5z?JhgPS<=e+_t)yph1DRC~MI4l&N!{fS z&z-E-emF%)v<|TGH*GnAC+DQVM4>KBW8-xdvcuC;qxFGwG*aFuL~^$w7E>j(jYK_+iD zN1w;CTi#eN^P<)|C-U@kkIa}J3A%SZe%EWs{-sFlws8^!${P5?ey$Tem)im-S7X2f zUQJ@)lF*ztt{}VwZQv9X6sq(wo@YikQ$EPpzdJk6yYxW~c({Bnl!zk`6cjgh#=4Nc2C``Z&Xl$meMzK4 zE(mjfV|@GELIqv?1Q{1lb3Po@1t_~!TPN+oTVe{YWySa%U0nnUUf zYJhY7a?v_=1YdW^np=il*z&cxwRRvE2|wx8BkQziH3?y1nCN8u zzrmXbxNR06dU<&^Ub}%b1bBr4(I;?u8FamlvNEYQME?D2dUbuwWMm;ZR=2&8P$}^K zu+Ye69Eo8{PHDm4K8N3{Wl`AX%!yIFFYS4eQK{g`v3+mhAHMPT#`;DL!QICQuw=}P zliptjckGYtf;BAWFKSjveG8nYhB>TUF$9h|OXP{aD_;(|NNqSZzlMmE3&h)h?JyI>Vs=?j>cvftab$D!G^~<_-%T6;-0(TK%;HI7Oyv35 zncIr{?RyzFZSZOd7U)_$pW{yJ*x2dh61Woe5D`(oTphYO1>QtpzdL*F504MR6^Pun zr^4+-+{a|x=3&;9Xt!`jNhp>D`*62yfxHzTR!ac^4~jnaxo|Df6LGX8CKJ^RNWFt5 z^=K6IND={;sHUcuXf0_41v``5PyKY|wY6{a`@w4=XgD~cfl+?@{@oe8$G~Yd-Uytx z4)DjOTN1=tvoS_+{rF35E#JG`XrbHlelWqxznj=tSk;W|N-eQdPp*}p@xaasGau0Q zWu{XI^vI4qHFrS#X#_&0LlWID-KMjYbbiiUCdCV%rHvil%5-4UZrH#Vi>J1GT|A_u zy5_i**qp0*Dv(L*U}O0zgX)OZQ+Z?e;P>j5se5rS7F09ORf z2|I{P__!d#TBE_CU;wa_t$TDL9zc#UoZ{C?sAF+Ex5z$0>gG@q7xmQ*xPROKEm*L^ z3yp8Jucv+rT`gb`_<<`O&l5Q<7Qw4t*0K^U7r}jKI&j^L?GB`lfBr-dX?(Pio4$_Z zbkQ=938E2_*{s6mSkQF$ou~=!dC-+Z9DsDN>P06|%|Yk)TUK!H1{O@7_Zc|D5>J0k|9pH-=&>3cB`GGqerQk&+;4Xw(kq#`l z8TOQhrhUs8M42%}e>g_Bg``pLQ)JcYv{RY2p@Fk~#$tB%+B`o7Lg%`8wWgH>@o&86 zd-H#^rXz4f$DUY~E`13ID0>0?@i88rcz=q3B=7+W3fQ1F5%BIH@D>Ufa3{HG*#~?+ z&Cl8g{Z%ubOq5MVYrOkpcl>F69{Cy4rrlLWg+py1VAjVaQUiwy_^3nCge=Tc^rt-}1m^joJ z*2=5*#vJj_@~bvQPtpMO?Bt~Wv=S|dhF%`B!>7H_#}?L~Burp|{qHd{^NE~FZWF(O zwLbOos%+X@!DJcOvhRI2XRx-k6g!@jBJn@#sizF$AUbP#UVnt%t1>;^a1&4o+)f_c z*RQf!n&gfL?2`Bgy^r_i!aTwcIp^%E6j1A_sh`L&8e7oq)m3jSm==5*qc9^1 zB?g`jbpZoehAx;kT<$D^)-fIMIusH<2Q+eWa>8TmivnZrj+ zKL9`k*Mmp4fEItsP`F%Xr@pj~XPoEvn}T^)Zoo>==`1d}U;^YKoGrA`fz$uAEDFaN zi`Sl+_W$YLGEwRp+w}+l5ogw&j8YGoK`;`umNi@6LdeBG(w?t-MC}3~BcYcWjn%fG z$Wo3oHL1?$f3^4C;Xt-w+^`Z#MoRXGLN;a3N_MizUS;pSg+hdgY!cZcD|;m*B70|( zz4!Xgo1XW5zwdkhd5`1!^Xqt?qn;=Cbzk>2&ha~c=Xu68erxl_V*ELguZF_a0Z?xLp&;D|)M)X9JWayw_o8(4#$Rno|OC3}z^Fw3mroZpTx4#8 zR5X9mn!IOMtjf{Si`n;QOl{(F~Q=w{EyPcA6mT+D{K6 zh2L?B2+7n1?o{K1^%wKOdw|+RgZm*4AKX)){{RHzymea6NSSlR5DqU!weOc73Nz*ed~c!1Ix#cH&_F#|bZLDSRE zJ=cSDz8H5>Bf{(Yb{OE>E=D8G0fyV}~?B6UvoJ3~FcLx}|h z3ODLVJUf^6k4t8(jc-5CdmShM&a`B$kDfHu$81m?-#`C!O5>*4AYW_Wk{ zOduczm3rOY=}dM9xXXeF>nk#nrIk%=Yrqvoa`E#7Yv4;DmHCDKJy0R9ilmvJ#N4yLhcfp>H>l&6{vZD`iVuc>W`KHA%jN;gOT1h#M&Koq6{Kr zZR%L{;`)tC&e!u@iJE${kPPR?&_osX%u;iE^K~PhC_l%zzt^QjE^M&$7kcV&Sv@C^ z8`U*)Y-Jx);LH~4Bjl{2Vcc_jww=WF0sm^#q}h*aY8=G^=~YP9ejOiJ18v#XIBj7+ldMeEPPB7&qJ;^ahznqkrF5YOX?jC|x+GjuYR|keWMYR>CKHQ&<#Be5Vy)Amp~O z-Ev}0&G!aOxdBHo9n78UmY2A>%`-C%)6Kd38+7N&75bK240p@#RSAwf<6(-eZ2sQ; zpOZp$t?yu?h(Z(WYMqIj1ecNj7|u*erSaj$wiYzJ@tSuJzSB4b->FsD}rEUb47By_L``Rf<1c+AxY+`N`> ziKW33ynQiPUKM%yddO-71G3(*NXzXA zGE+I&BLVp%%#xlsGfh>m-eM!MbjI>yK|5su3Bb-(379iMk)tdZhF$*n>P&kV`}znc zZDO=;e~c828`cNb#&d*P+LIv<ccw{b;@PM@ zDIBYSBR1q*%_TS?Oj;;l@j5E1zogmM*H`8V4K=kznn0_|^`8^{$u$=%w!C9H8tNLy zXZV_vNc`$ga%}sSf6W#tHkMVYMGLZpznH233H##=xtP3&Nbm0M_Xt*!4kZ?bHaNgE zR8jfR(gKR1mxl}h*tz1Sa@qPxbPvOZfSGIDeV;%0aSbe0c@+ngxE1oM*+=RM%dW)5 z*CnJ(UcS0@hQ9}tT?2{b2KCc;zzRxEPBs)r7Fk7OCBEl}=2cbOI$<(ep^FVGK6RG? ze9UO=#Xg#OKoPeyr=Z^ZAm7?cg_)?Xib~$u?HLkO0Z}CZXA}?||NMNe??C}&#X;in z-6T3SSH8LikfSQ9AYlQ-tR!%lRk*ph^L(>C>=6KQv^0(ri8iC)sAd^x10a>E3|Bt} z3>-L=s)-RDJf z?!G@=mKfQQ{au$F)_WJY7Rw})7EaE zYz%_4N(Hs-fEA5Y=)h_iM+`YoW8ev&=fxkI7#Q3SEQnv-soPR+ zw{1v&5A#s6NC_^*xmoCG#ijO{(;j~mWX_;EjUQ1hmn<#Qn#@cH85ahkKS%@S3*ar*TbxPU zQf$MfmzM={^0w8HwLS)URR{oFs6T~kKvR<#BwzE|PG5#1fzwd5lkqtl-cM?5z)Q~EWP^#w3Gp4ryQ9;ok_%|THI`_3Boc6pE1~M7%x2nlY zOn~eUVB9hxwhu%E5`VZ({gB|G``!yYKRvc;FVzph%S~U(+K2Lypjw(D%*X4v--`wU z^H9a^0vlAGfJu4%Zf0O%sZmjf?UYkcxcC4n83N&@|3uT?o&yS#ArTGFjBrK3rBXEh zS6s?EH$~RM5yOjLzHLZQjqGRkEr4x7WEa^#5n!)Z4`)WU1p(shoSf+H-u=rMTC!E^ zL+rQi6ndOeYw#bO1Ph`WcRB2)J}$!%18+n`U!0O zXmGSjnsr>~X%O=nsi`I>_s&ul6b7x|1s9X{VY#Q(S8+)1j9f1A#1%~UiR)c@#r%^E ztE-Tu2=P9WSn5ZAeT#o6j{ut|@(<6Q{>OQ!Aa!RK7h8e$--uBEs}rN3I3j=yP|OXA zl5K)*g4`xsC;(UJxU3Fk8eJe49tDh3bV|=XDyS*3cW{6dXz6nX^JrPe0Gn)hR+B{C zovg}NcUm@HT13PZJcUN^u&dmrsTX%2%Zp{O%|n&;3gO8+h}^Kim1GgF#m(U$4M0BxyB=+ixZ=fGdImA)<-p3H5Hoa_h1Ie*q~N3@0Bd@!hwb{*kYB zi2TD?x>D-Kr*00hzv-&s7RHSC}e@+M?qhq9n^Wv~*{pmN@R(r*ly| z3fCg=6umZCfq|<3bqQJ~sp!FTIL` z_24B#7nd^6(Jo5zAY_@E(wpg<=o}IJN(ye-xpkP@2-AH7f*gEbr0}YrAG(5q0zy?o z#0$VbXSnntJ^n2D2+kRXKsp->AI9i2ZCD?s3qrDrhrl+1QDV^HNm{`K8syqWBP zB`tz|s3Nb{|6K=X8YDH&XJzcIP|RsM)M{tz_2&XPmWIuMpy8Qt!l^0*TPuW8xE&J0 z+7Q|u6x{q3a))}7FK_z6EZC0`v}uXPoQ_py#Ho>t3^h<}^A* zC*b}o*j>)S0r58$Y&0Ib%s^E~t?|*@gzPT|QExvJO6EVN_H9FuE$Xf`FcZE{SVxmT zeEglWN6Us{HFljL!pK{P=!x@XzftUm@?gZ=^wYDxRT;19sIA)^qu?%(Gs4Rk0Ke(J_m9y7nDjUY%--z1V%wr0fRlPPj z*W#<_X49O(!*^IdYesMVMXr2Z)Y)^5+W&`H4;~>z(^$KO7z+@pa8phN~0ft~_NIOr>s>@jr1RLH`H& zm@=4>x_Ef8MI$5v4MH&?Sc^ zUJCx&heXGx#&64U!#_Nna|VMbOHou+t(q|iLb~5Cwh`mEY+Mj zfvv|~-eo4vkhBK|oR4w5%TKQy6Tb8hg`*OzN0jyMQBU{C=GasZ_h=7uQFpuR%YuU!RAoSkJ>yg6I%-nZ0F zn_u<8GTBq0NEZdd=8Z0tw{&)*12yDYgln|$PuB{@o?wqqa07ba_91YUxKx( zINDH0a1k>xAqN@9v@M*e<{NHo0yRZXArubZ{t)^0R0ksT_(Ob0VT^qYuthBom`zHq zyscd~LhB?(ekt7= z|35AOo(ZudDVf&|$6AyZMz_i^+B}HSS946c9v(@}%VD|EMoL-0515uV&+rFZU5IT#}AyXeVo&sDOcH+~x6gh%x zEq%MtMtc2qRHa$1BeEHb!ANX>UysBrUc7qc@V1iHs|-ChkDFVuIF^=hua%>+NeAA2 zXiY0719S$#`I?P(4Ww4tM(nAP;}}4XtjLdDMV%|e`HzNL<=luTo9e4hU#+~aYm`N6 zsnl$Z9aS@LZA-78)ioWn_7q6wmt3zm6i0;N{My;WPKtKKI7e4-a{TtfB$1l8`BG&X{2Nc7- z^%#epUoHC{mao>_Pv;kNXggYEPhLjxGtzF2uN3@GjN$PKSZ5%Xw)3XH{SmI4=&$d* zbWB*kr}O9;C6HCJXe)hzE3-bAK*-~f8JOq&=g3qH(G%A{o^NBG#@Xw$f3`Oy5{?h3 z)Lrzo^0zs~0%PK7UzRC}x%sajM$3ujn2Za5iDx_PO0o3YKS~IUYPp$YAq&TNwsB9R zLK;@)Ccg8JuV6Q=3$f& ziwTere@^tS2m`KwTIP5+G3_y?Sf2ICpV#Cq`MTSASKaN8u2ZOR6W|0J?(bRJuYUUX zUa%hFy>ImD_B(X@S8tu7?7gn<@$yZrtY@rSvd?W|!&2yo*g%%-oz~NjrToHiJ-(j} zCa+xm{RTljsq@a?J#Jk$zZ=ib6&UhJ4y(->$8Y2Ug%BJzPKcGPl2`v&&{B)1&!eXP z5jWPh)BsV&_1&(h2gshQep+35{8%$)6uo)OHZf4abqHMF_$b|Red}GIL1Y6KT>wfF zd{g?Y96EM^mxPw&-iQn60@aXo*6YsL2!I^cocC`1|*b&g!FO4$d6AA&XDlGm-{75xIdtSJ&`NI!s&j zPLpmO-^|E=^@>#QNaPy#(9-iStRCfWiC%R1);Oo z7-gJ`?6BGtpN2*-e*GGQ2zA`}85x71oK!e?g-99hC>AXg=Y#olfSUc(*hQx+8H6rW zCINf#W$%sf74HIJ|BuFSnPWF;lo6@U?|-#`AIlIcU>woOxA=aXZ;LItV*P~v^&2-3 z7Zt^^G9e@5?rcX=2Vf5SjjW#aQ042n?IXPXrPD# zXZLe|vzQ3P0G}N6gL>|HZmL}EkMoU znw=eK*6Qzoh#}>jkuvypbM3TgH^R)YP}{v$;s<_6qt>zj9u83;?F)#VhRwzAC8+s> zv9b_YlvK0>{&aIYQy=u$_ng(w(H83Eca3aV4NKR$Hb_WG-@JW04ao$r{QVU*HJ=z~ z*s+fpgbIqu%i{r^wY9Z_?0oo&`Q;P0ikDDq z%B`-+d3d|#%WW7C$l=@E#>tN2jZs&Vd0$UQXez;Mn^IVRi{*DP@u+|VW~shI_vG)s zPaVwvyjFx)0StvdJ4pY8d-w1E3ZX)Xri3Mc9B6y)zYyA=eqZaRbI$6R+*_X-+ha#I z({A>OnP@~l(tsmX@_k!KXL7XduVpTtbuJ(`O36O7b|TunO5{um=BEX5dSG55NZVQp zmejnKc8J#;J=e!=+Pd8N=B~wqB#oiOf2@puzBCk}%^Wutw+{*ol9H6%|G7*LL@2nV zC~J^kfUu#8KE1Km1e`i{Qeb6Uipzc;^=kj4F&ABjYT0I>0aH@eeorgb?6Uibkp5Q2 zB@SFZ6xg>*oT0J-0YNs^s~N9{hSZUQyxJ}^k!GRCt+hv2p(#YYe!(?L%G1c*Hxi6y zIj==X^~Qp%ORiD-*U5N!e>y!C z4S=Sn+O0d4(D2$^s&(dx&CQ2G6ilT3!H8W+I%#%hSK`e-K%`@FM3%mU+m(C$4-GiC z649o-uE-;oY_dH{X%oEIKYY&~DEkJV$a^0he)0zM_)V#QhzrmNfcuRQH&e?QHWCgw zaV##m-QLnbnWB8PRs+U_JfOfGvQb}P`VfX+E3RO-)4k*r5@I0ngf77kk>xBkRaZV%R+wA@jo}^wljYN4de1PBG`mC zHIcdTm%g4WM5)2c3mf$*;ZQpJfSbq%oW?a=FcPwVYOX1OOiq@RMm!h#Umw3T?08FAUi@bLQ(Gn`_mk9Ob z?v=TLk0(mTn)BR19cMUHGZhR?qT@bjBq=Lj!Dh!9?$O?EIc!ey92SV&gh z#SnADY45q@WGrg*hRJ>^8``pxQxm_Sn+^b1vp~#_KHDNY55j%`Hrt1Tk2TJ$u4vcO9`NgAnGm5LvS=E@R{$>recbQQ1QYp<<^hW2 zvhtGEegyEQ-jG2K(_#_lw@fFhDP<7iPF6%;F8i_0{TRfg-Hw0m_{}gg%L>d4h))no znO)x5oCZf{EhVhrv6EwPV+Jw^^%#&J0?P8T2`9$Q+I4yxfAdm+uY+}hw};Mu+BT@P zxxv{zILW}3HnY~A{K%AK87px9`_)n$eE@Q+1atnKYZFCS(C;Ng=+i5&w|cD?JlM#7 z+c9A2;9TMUdU#9%vMee7F7h=Pg{=^>H2@>`!`l!8U3OJ#p-sU1ZB4LMY$xiN8 zj-AQhFnr@2pMZyKyDuQAK)@YXSWJF;?_%6uV;|ZA6P3ms$M;Qj#oE>p4=s(KUT>Ei zVmF4FAzN~2P+C72ddma*`Rb)?x~;fX;3Dv4jwbmjfS;7_&k72_zdI`H@|L5~e6;fl z(M|DEIpKd_p&4~Hg1i={Ki7j<*D`e!?@sFm14ymdb7BXc%!^2sA`>qbD+;EMS%1WU z0*yp5M(XAFoJ~zKkdOGmjTk}w+zl^%upp|^QtMNVS0U>Ym-Je@yMCxfI2bZxfLf;q zD_PkQIiXi#ZFhPZS;=RbMoi1@BxfQbHMe**3G4B92hP54>!tDO$(nrV+TIYNCGupo zpML?=8peE+=ivS3uXcR?@+kz|76G0T!XWYQ*9gWf&c*Dx|E{U?v*?xqGnps(0^_Y5 z);9MG;B&Hi6?JnChaF)eXX2y)p)-p);ZAVhKV&Ph;#uk2@pyH%AptSS`P?VN;W>@j zLbYN zHpTyaOo&qh=w$hnKVE2v2|=0#62?W`A8-IstZ@JBM;SiInywud3LAvWOgpduy6TDA zm1-m3%5)%yG=i}5sCgRS*T898b4l3f+7vyb(m~ei1J4tf+pd zN{gHws5T^LC^mmD)vmOuGxxU=s=OqUUciqlPz9VJWy1iVpxV%UHN6)AHMIM2yl07!>dRRQb| z+!b;}?>FMzSo){;@%Dw`I01&>a0RDk_DEUzQo^L}!g~Z%0ci~@2~-*bbrvM+rJ}y6 z?(Z$nQsY}i7^0K^;d&4v1rz)6^e{2{^k-ftvv^lRGA@ZSJi}uO*QaQuJIB7Yzg7^l z8cyVkvDdBOT>(AchsI!%m<(JqgvJdrmmJv*ubgC(nvvNm?9bD$HlOu}3B&QihQu?t zSh=R-qgR8EYKzJ7mHTc0f66N+@yBE;(W9gPJS^%lB=u@}&zT@Ftf&lrP#a%W2 zx?iXVzkDZJsSGbY8`{M^aR_$&N=XkYkcBQN@A~*mJ2_md7xc6)egBz`68FJPod1h3 zHN_yD`2S#P#xg@Brhj*?kokTRU<$K3DJV++vka-3VN)fUdL_^m2Cs81wZ51eR2Ug$da^ne2|fxj#Tc%Q2ui+WP7cb zQW;=_*^qbwauutV@S7`g6Z3jFkm>g0PKWDgivtho)ZIW9VKF@WSb9e40N?m#=D4*y z5UOr*aBK|?BW=*29gD!h-;^APdjbV-9XR%}(Q-pQkz|lR;m`eW^yX!mSHvClABXD@ z?BbVW&PShMlkzI3Eoz{4Af)=gTS6l}tYo;^asRypJ7fIsEr?D&MY_;IbmK)=swDVg z2@MwrYk=Vve@uGD&4eJyWOM1^=j3e}M`WjAShAMXeo?ulhj-+b|^7 zq^~rsMke;X$p@*smuH->uxd7vV%p;I#20ya#ZMlZ{iOA^<04H8EzxW(;+@;#TXh&J z)>%FtgzD+8E9G+$VPVNXfBu}EgJz5xge;nSO=kD+-;a!mp_hbMY#*>0M?R1$$jAgk z2K|Yz_HgwJ>}f-XeRog!(FeNE5?U7R1E zjEqSV^YZ22Q0FTmAt4v|S+UM$bPJh)20^zIJyoRfeSfsU%? z5<}32Ch}KRraa%?*Ufto;j%ROEDDok^xG`kn1QOSQ8W&rLEBu_1^G((&u`A}mAmdc zEM~Zg`7eIOJMQgBm(D)ApXWSl%>MtHp!cd+eP?@5U*FFO>kRQwimcq+UZ~?%0%4;U z&z~DZpRa=%R-t5ouoC?dtElw{t3G&~RN@?YIImI`mvzRU? zQXhMG#Q>d83UjlwyY!B+g62Cu7Y8XTA=6SW+Di4257Lxi|25j`-xZU6&5>YE4nCo#>1DV{4c>RT9DhixRyUyQBk?pPWeD>k`>C%}_ z(o`*m&1MBdezeskwNH@kT+1}wUYN|~&%fHgeET4~R)@Q2>H-Y$g$)zuBXb7t?U|g; zfE>cqCd^FLXb#Jm2oBYSSx6ov;CK8gwzz{oUu!3&Jo-B|dOXopUo8IK^@B`laRO{K z7~;1rKG{n(tOggeewaiN7a3RY&QqoIdB)U?E8*!SxJQu3Yr*e+Hp=^yx#`h*k@r(R z_RT-6v9UM9{4t`Ek#8{;gi$Iv`=pX;S2Q`cdgc_;wG|e$;Gct~2bp5H6c&!(2r@HF zem7OqxNdjrM=EP8$mO@I-xHE5P4#Q36$kqr`5@!;yF4gPnLM=1S~N4&)V->b-UVF| zMyY#h3eEX_Nq0FpCvjg8`Rzn0nU2Cin<}#993rn^`6e6sl=zcP=Y@?0-DQn|i^xca zFp{e6z-J#Xslk}80*mnUDEtH}>`DzxQhK$cd%>=8TC3AZJr#nY2UR&zqx=xO{~|Za zURX~&G1BFGTYfj+3l^cvM$`K77VjGqh1 zS}Nlr>?`die%DcfM^li+7pL7p-&v7EeN(w7Q+D_1!Tx~6C?C@k4>t#{vrC5}@o5~z zv+Sq7$yjT08EMQ;^4kYy64t={Lq4MJg}gP&So3EodN1Fifeao7hvnPBt`DSY6gRFQe42!u zs#N6CHB~qAsdi_W9oToLDEb*2+6K5f6zmL9!4N2UIQV3BPP`6vu$D$~cQg|4?>&jF zQ6Raeys_{c&N@4mh+BxVF(QCAf1B`PiJ17Ja)3Ax6Wt0+PcP{ZLndPF0AF&VrI=#B z=asq?l{z^Zu4+VYnHJ$%iXU$bqh#lm&i@*@m)pwF)p?(DVYFAnNk{lWDK@TRhL!5S zkHLLZf5Cl5zdWKy{pWt1lAZbjIm_qMb{Fx8yc%RnSf8qz!D3WLYNQQ`RbGGOI-ePL zgM(K{BB7f9{Ai)5!_iXZZg>~yC^^XZxnWfbrxHJAML^@We*AyJ?RazCBzIIXBWG%^ zx3g7II0UzEB<@tRw7?;ZW zRRZqWo6uAo^3PPtq|em4U4}rdFkbJ zzM?NRrbSDOHEIK ze}sE_glp6^CHTAq{5r!K{X2Yw*v!?|k{)i3eZKSZv4TuW7XQ)hY?-x!1V8c3pEG5sm7miuS7Uun2miS zK<1%-0}UgmdE#A&=eU4I%6L+^e>(oLfyuzA!s#MYt+8?SuRJGV#{LSy*FRZv6-qZiRCY>6~oyw=#)dA-%Et&xi~o`P7f-J2JVhB zx;RB%H$+sNhXHte3{O4P%*}^Xsc~J59ZjRJ^Cxt^C4K)Z1RZ(ygGjyi*UyEIf2uLh zOV*%%eiJHv#V(Zv3E$nEQEu0tDygOkPt{NmaajF(8ST)%6Cs3SV<3+ch}K`& zB=)nPyiM=+*?wAZ?rX-Ic8w|=qT4QCLn~iLsA_dxW^exgv(* zsL0c;DdR6)7FebBNmHv?CFg41RqRRivqUJ&N>(HOdT)GIRzEy$D&qKttVy-8>A~x* z6;nqJ9~CTeLuWp3VWrF!#~GqN9dkIm?O`s9H zUy-0iLAhxm`S_udsHrVcEPHX%3gwMVHsL^QWFTu!Oq^mN5KOx~gxG>xA=Ad;=xLIQ zi65w&r4z~9o(^QSt8o8q3=Nr&WHKsX7tDmGNs~`JN88S~O%)rSPxK?1-<0Y4que!* z3YI|Emn6x|O`2M7*f$5GY|@DG&FH=tH(Lz3Ihc{>ZzQh?;gce7AGgFOGcLCiPjGtF z;-+kx5q@zhm6A1T(((h}*IM6WJ5KDMBQBa|yZBiJEy;1=2PP8(66f<~!$ZUHB=Xlf znDn6MSLCbF+SvNw_axG9l=(GIlz;$Ce1Rc0D43d)W6(kI)22eig_F^LCrwol6Gt;< z$nH$dn`UN#nr8~$FX7mtQwV)f)Ls64e@N`uVU9g_beV}O4UQ~U>Hsp?mt4L+sAIAw zA)DsGUez>%q^WC*pRd$Lq05BxImacm)3o<RW3=7l%a7lBuDpjCaCv@UV?}5HztM132Sv)>p;4Y)jJyh-;EM92UPpL?j1WUA-jak9> z;NK`Dtll+#}Y$p2v$iX29Iz1CIlKyN!#BD+qo%11oDkl(jwz?tfuu z$Z-F@Vz`o~W)5_BD(A0g?H$6hU@kT>3zLb8O^v9-i6!ZjPZkvT6_OSkOX9HFPMx;$ zy=^o!rjqi$lkorQPH7ZAe*;M_MvhqSviM}n?|vC}N6;&BKp!hX;P#E}x#;O7LvO@S zs2DizbB9pkP68rqHp)**vn!r=FKE#fFTB5zm1orzT;Ks)sL=V)!bmF&x)2#}{p~bt zF3V#3&!zmoy&K%?yF5&{=NruZbR1Ja+I&Jv5}sgT|RvC!xzZ<25xzx zfPer#1w|fG8iAJ1p?bkJ4mPw$nvy>#cwOXTiLqv?zK>fB`I!v){S$UI2Kx5S59jg4 za+ri)F=><6vg(cb<#E6;iYo3o*C*L*pBpLO&gq++|j1Ii^25#wbr=`b8|9 zLnSBO)YW^P>J=(2=Y= zW&vG`|F>ZOm6ybj}X7cetO@lX;uvb3w+Aka+Vy{!}XqW7|{BMw(pT=Jf!yv8} zR&P!Ur!v4m{Qbquy~N!yTny)YT~LnL@X4&>{Aeq=mYF*@hePLk8eOrk?)HLDzcA$O z@lU*b;lacy(-e8H1y0Zc>u_jRRhD+mnXo zI^FuPwZi8Iu8#RG&zdjL4-q4M?ki!&^brlstF5k8%fMda^F?|YCvQC-$T>*vYUdTB z;_j@}IJbyT*(F{3E1>u9!*hLwVkc)k?q*iVztwkgFL%IGN%W>e;9|ct>nVq*0Xmx8 znQlgTB3kc#n$fcId)S3;d&D1&Atyu8yf)F*#4@n!)4vmBfr^Gv(;Zj-*>$BMh0i8W zg}q*|#MUyfN&b9{AtF#xDr&(ZxRyWr-+fH{S#?`&UgY9`PhUsFU}+WU3M!>DJ9_uP z#r0euq71PhPgy(3%Di1RbHqY!1j@;6*`hNAgo09xk9KA(p?nd*#5wy*T^D?^vp>{r zfd7pAdN~8G+u1KLiq8M=0Sw%;KQV>+oR9R3;{R}?# z;&0QtJbBk0E43g2F$tPa=lEjanl|`h^Et1594t8d5#yWqWU6nLmdqihU<~bD7X}Ja z3_B8YOUFEim!6&dNHO%A&3>$=7V}6%B#zSm)vJu0oHnS#g8V9`U@bze6U1uRYvRJi z4Yh(Gb(@l*VcMO{j0_3TIV>H1rw&leV*l_kj(jTX+y7S7^SkeT8N{>o5aMKTU+)}S)%^?t7U0P$v2SIk@EMiapU*z z#*hRY9$n7Z+uv_C@I_BbLP8EEisS)Hb^*}G;l5`rDkiq@LBmqsz#yeXa+tDmG!L3? z%f#Fhy?)=xe{IeBT>TWdY&-3+<|(SFWkLsJQ^=$W3<>Fj%A(PwLFBx)kD;~nFE1#J zkZF|Y;#XezyIWQ`7rHUPJWbo zz@iDE(#ws_&5YdK{W$|*C*eqhdmeNrnL=un&hXCOR45}evkV#<8q`SW2I{<}Ld8z= zKSK(KoG&#ehe;5ca=_8Nb>Ar&dQi+mqLq@TXU)dOMlsZFfYgn7=#troiYxHZ$LHcU z0MHOCxW{i=S>(QN3u>BM*l>2G0Ek6^{Bn*xeRmwR$fRB@0Sz5{CK~)BlalgbMQ4}w zk!u1f7>12_|2_p&G*W@HZB!I+?JWp3m_pA$KI`$9OOBOL`1Hrg$ZN<;`54Kl%D~UB z0m!E-+$Ci>xjLs2w7h8^V>mesckjwQeCQ1U5(g*|5{*YZ)`(JLKl%O2ZCcv2eH$gE z2%C**Ng&}&LBDA+_)oRYq3XA9u?&ER)ixqyYGxJ;8+MzKv2|^8^S(J(oF0*1f!nU7 z!O`A2ZMvBbWR1K9yqW}ZUhhL5wK)$Nj^PSAG%DwAPZT^Xu~^d4glNFe%ec7QWH`0d85uuP2FZ?og*(2dGtt0Ma9te=UMADm33|m-^r}1(uDP< zr8CumQ-gfTuw|tT6!VAzlNzp~I7B;CASo1*gL`{=?np8)Gb>wLe`%Q?3Wbj9^H4fk z-r2bfk@mR4M{sL0DE3@R$Ue)Yrl0{%yV2Bq1VyT z0a3Lx?0tvl?SeLK+LSsso%0}~S>^*N#c zY_3jiVoc>T3ya*W?CiMH8mQ6&GOZB4tj6PzfrCQ{+=j3_5Xq1c@x#*lV_68LKxU!e zsb^?~)U#*N;Djlus?s&E#n#Tj@mkDorG^OKHk9B-#G-ri=(Md}`;Q;Lq0Kfx>G0D% zkT5+ft@c|iy5i#Hp|>z$QV%FO0s7`GB$N@eR&RydK<=IaR2YDAVXxR>iYcEyeOroN zZfd6VGMBhFIXU?jIvwApqN?9J>sPIHS6FxqGWR%;zX6dv#a+7(xgvfxO9SkX$k$86 zWBrjG7?V(8?ay@TayNKQ!7cCUNd4;Dw3eYqvY5Mj6&@v}6&CTm?|a9qURFeqUflS4 zXLZa9QpQMaY;2l(G8Kbir|w&EXXNH`x_fv8BT+t!wo!)S`m^M)O%#DbJ@ zJ1!3jCgJ=U5E8;QIW-lGE3{X~hE+3_XHC=m5XZj(X(}9i0TrF7prD}XPqmxO(@?KD zJ)$vND!hLh(fSSM*`NLo3?-JCiHT&$NX^(^hkPz0P|r(&e^T6bS90TFtYU7&(5m~) z=dh3ph0zqDlk$Cj`2WU$r-IQX?c(BM0(OKe@QrKNi#~m#hBHDhB&2NuDK#uCAMPaZ z*gU!|9-;)TrIF@c`PH*6bVY`*gNNG-}3{G?B4kBTY0ym4oMDPN|vlq02 zZ17O8^{mdy%BuN#42f+0P#SA{&?ssC>#$`vG<>3w3?g9e65Jh0fhJE`R%124I>ss- zvN16+k+3C{CYza_Hil^r6}|}a@%2U26?nGBP(H!(*d0F2ox)F#$j~2_ZCQ19WmH*F zG3B##)X(8z4Xp}$M38|*PZRPu$N-t}=g*(QL30?o3-W`ZDSNtN`qLKpNkUd_CAj|( zCoG1-*467xq#Nt&VRt|_{0$SQ=-lqt$-i=g))?5?vG-mCf_LirUYHX=EN-yzU=_0) zAOwxv`cddB9_10@@84W{a?I$bclLCL=T4E;5fdGq_-gfTB8AH|UNEJwHiX(O62@Wv z*UKJ5fUN9wettgW!GDIhKBraX&X8G&&6JpA7tpmiO?&Q2b~*HG?UpR-#IWi4ApBsM znnXApMMUEy2)HPK*y>#_9m|7ye0Ral(4xEwdyf~77|%?hFAUyY@IP!g7Ws2){r>~A{p=2){Qm>}pZG|trx$Fyo@8Fmj^0O> OPg3;h\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
memory
nodes
11
22
33
44
55
\n", - "" - ], - "text/plain": [ - " memory\n", - "nodes \n", - "1 1\n", - "2 2\n", - "3 3\n", - "4 4\n", - "5 5" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df.head()" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Int64Index([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n", - " 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,\n", - " 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50],\n", - " dtype='int64', name='nodes')" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df.index" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Text(0, 0.5, 'Memory (MB)')" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "ax = df.plot.line()\n", - "ax.set_title('Before interpolation')\n", - "ax.set_xlabel(\"Nodes\")\n", - "ax.set_ylabel(\"Memory (MB)\")" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "f = interp1d(df.index, df['memory'], kind='cubic')" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "df_int = pd.DataFrame()\n", - "new_index = np.arange(1,50)\n", - "df_int['memory'] = f(new_index)\n", - "df_int.index = new_index" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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q1Yt3nrrLQCefvrpdaN5G3PmmWfSq1evjIzegQVPkiRJUjl33XXXsWrVKg499FAaN27Mddddt0WvHzJkCP379+fQQw/lww8/5Prrr9/kuqeddhr5+fn06tVrW2NvVFjbUkuyFi1axA8++CDpGCpH8vLyNnoSsFSSedyqtPLYVWnkcVs0n376KQcddFDSMUqU559/nhdffJGnn356k+ts7HMLIUyMMbbY3PY9B0+SJEmSisEll1zCmDFjeOWVVzK2DwueJEmSJBWDBx98cKteN2LEiCKv6zl4kiRJklSCbez+gJtiwZMkSZKUMaXhmh8lyfqf17hx41i0aBFVq1Yt8usteJIkSZIyokqVKsybN8+SV0QxRubNm0eVKlX46KOP6NKlC7///e+3aBuegydJkiQpI/bYYw9mzpzJjz/+mHSUUqNKlSrsvPPOdOzYkdq1azNw4MAter0FT5IkSVJGZGVl0ahRo6RjlDp9+vTh888/Z/z48dSpU2eLXusUTUmSJEkqIYYPH87jjz/OVVddxbHHHrvFr7fgSZIkSVIJ0apVKy6++GJuuummrXq9UzQlSZIkKWEFBQWEEGjQoMFW3y8PHMGTJEmSpMTdcMMNdOnShZUrV27Tdix4kiRJkpSg119/nUGDBlGvXj2ys7O3aVsWPEmSJElKyNy5czn99NPZf//9uf/++7d5e56DJ0mSJEkJiDFyzjnnMG/ePF555RV22GGHbd6mI3iSJEmSlICZM2cyadIk7rrrLpo1a7ZdtukIniRJkiQlYM8992TKlCnstNNO222bjuBJkiRJUjFasmQJd999N6tWraJWrVqEELbbti14kiRJklSM+vbtS//+/Zk4ceJ237YFT5IkSZKKSW5uLk888QQDBgygVatW2337FjxJkiRJKgZfffUVF1xwAUceeSQ33nhjRvZhwZMkSZKkDIsxcvbZZxNC4Nlnn6VSpcxc79KraEqSJElShoUQuPfee5kzZw4NGzbM2H4seJIkSZKUQfPmzaN27docfvjhGd+XUzQlSZIkKUN+/PFHGjduzK233los+7PgSZIkSVIGrD3vLj8/n86dOxfLPp2iKUmSJEkZMHjwYF555RUefPBBmjZtWiz7dARPkiRJkraz/Px8BgwYwNFHH81FF11UbPu14EmSJEnSdvbxxx+zZs0aHnjgAUIIxbZfp2hKkiRJ0nbWunVrvv32W6pVq1as+3UET5IkSZK2kxgjY8aMYc2aNcVe7sCCJ0mSJEnbzahRo+jUqRNDhw5NZP8WPEmSJEnaDpYvX87ll1/OwQcfTI8ePRLJ4Dl4kiRJkrQd3HvvvUyfPp3x48eTlZWVSAZH8CRJkiRpG3333XfceuutdOvWjfbt2yeWw4InSZIkSdto1qxZNGzYkLvvvjvRHE7RlCRJkqRtdMQRR/DJJ58U6z3vNsYRPEmSJEnaSmvWrOGPf/wjS5cuTbzcgQVPkiRJkrbaU089xUUXXcTo0aOTjgJY8CRJkiRpqyxYsICrr76aX/7yl4ndFmFDnoMnSZIkSVth4MCB/Pjjj7zyyislYnomZHgEL4SwUwjh+RDCZyGET0MIR4YQdg4hjA8hfJH+s1YmM0iSJEnS9vbZZ5/xwAMPcO6559K8efOk46yT6Sma9wNjY4wHAk2BT4GrgNdijPsBr6UfS5IkSVKp0qFDBwYNGpR0jJ/J2BTNEMKOwDHA2QAxxpXAyhDCiUCb9GpDgDzgykzlkCRJkqTt7cADD+Sll15KOsb/yOQI3t7Aj8CTIYTJIYTBIYQdgLoxxtkA6T93zWAGSZIkSdpuVqxYwRVXXMGsWbOSjrJRmbzISiXgcOCSGON7IYT72YLpmCGE84HzAerWrUteXl5GQkobs3jxYo85lToetyqtPHZVGnncll9Dhw7l0UcfZdddd6Vly5ZJx/kfIcaYmQ2HsBswIcbYMP34aFIFb1+gTYxxdgihHpAXYzygsG21aNEifvDBBxnJKW1MXl4ebdq0STqGtEU8blVaeeyqNPK4LZ9mz57N/vvvT5s2bYr9vnchhIkxxhabWy9jUzRjjHOAb0MIa8vbscC/gVHAWennzgJezFQGSZIkSdperr76alauXMm9996bdJRNyvR98C4BngkhZAPTgXNIlcrhIYTzgG+AUzOcQZIkSZK2yXvvvceQIUO48sor2XfffZOOs0kZLXgxxg+BjQ0jHpvJ/UqSJEnS9tSgQQMuueQSrrnmmqSjFCrTI3iSJEmSVOrVq1ePBx54IOkYm5XpG51LkiRJUqm1aNEiunfvzpQpU5KOUiQWPEmSJEnahFtuuYWRI0eydOnSpKMUiQVPkiRJkjbiiy++4N577+Xss88ukfe82xgLniRJkiRtxOWXX06VKlW47bbbko5SZF5kRZIkSZI2MH78eF566SX+8Ic/sNtuuyUdp8gcwZMkSZIkUhdUGTNmDABHHXUU99xzD/369Us41ZZxBE+SJElSubVs2TJefvllhg0bxksvvcTy5cv55ptv2HPPPbnsssuSjrfFLHiSJEmSyqVx48bRvXt3Fi9ezK677kqfPn3Iycmhfv36SUfbahY8SZIkSWXe6tWrycvLY9iwYbRr145evXrRtGlTevbsSa9evWjdujWVKpX+elT634EkSZIkbcI///lPhg4dynPPPccPP/xA9erV2X///QGoW7cugwcPTjjh9mXBkyRJklSmzJgxg4YNGwLQr18/pk6dSpcuXcjJyaFjx45UrVo12YAZZMGTJEmSVCbMnz+fvn37rhutq1GjBn/961+pX78+NWrUSDpesbDgSZIkSSr1/v73v3POOecwe/Zsrr76aipWrAjAgQcemHCy4mXBkyRJklRqrVmzhksvvZQHH3yQ/fffn3feeYeWLVsmHSsx3uhckiRJUqlVoUIFli5dSt++fZk8eXK5LnfgCJ4kSZKkUmbVqlXccsstnHTSSTRr1oxHH32UChUcuwILniRJkqRS5N///jdnnHEGkyZNokKFCjRr1sxytx4/CUmSJEkl3po1a7jnnns4/PDD+eabbxg5ciQ33HBD0rFKHAueJEmSpBLv8ccf53e/+x2//vWvmTJlCieddFLSkUokp2hKkiRJKpFijMyaNYv69etz1llnsfPOO3PyyScTQkg6WonlCJ4kSZKkEmfOnDl07dqVX/ziFyxYsIDs7Gy6d+9uudsMC54kSZKkEmXEiBE0btyYv//971xxxRXUqFEj6UilhgVPkiRJUomwbNkyzjjjDE455RQaNmzIpEmTuPTSS71K5hbwk5IkSZJUIlSpUoX8/HxuuOEG3n33XQ466KCkI5U6XmRFkiRJUmKWLl3KddddR79+/WjQoAGjRo1yxG4b+MlJkiRJSsSECRNo1qwZ99xzD2PHjgWw3G0jPz1JkiRJxWrlypVcd911HHXUUaxYsYLXX3+d888/P+lYZYIFT5IkSVKxGjRoELfccgtnnXUWH3/8MW3btk06UpnhOXiSJEmSMq6goIAff/yR3Xbbjcsuu4wjjjiCE044IelYZY4jeJIkSZIyavr06bRp04bjjz+elStXUrNmTctdhljwJEmSJGVEjJHHHnuMQw89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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "ax2 = df_int.plot.line(figsize=(15,8), style='k--', grid=True)\n", - "ax2.set_title('Cassandra JVM Memory Usage')\n", - "ax2.set_xlabel(\"Nodes\")\n", - "ax2.set_ylabel(\"Memory (MB)\")\n", - "plt.savefig('plot.png')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "df_after = pd.read_csv('./data2_after_heap.csv')\n", - "df_after = df_after.set_index('nodes')" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "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", - "
memory
nodes
55
1010
1516
2035
2543
\n", - "
" - ], - "text/plain": [ - " memory\n", - "nodes \n", - "5 5\n", - "10 10\n", - "15 16\n", - "20 35\n", - "25 43" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_after.head()" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Int64Index([5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85,\n", - " 90, 100],\n", - " dtype='int64', name='nodes')" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_after.index" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Text(0, 0.5, 'Memory (MB)')" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "ax3 = df_after.plot.line()\n", - "ax3.set_title('Before interpolation')\n", - "ax3.set_xlabel(\"Nodes\")\n", - "ax3.set_ylabel(\"Memory (MB)\")" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [], - "source": [ - "f = interp1d(df_after.index, df_after['memory'], kind='cubic')" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "df_int_after = pd.DataFrame()\n", - "new_index = np.arange(5, 100, 5)\n", - "# print(new_index)\n", - "df_int_after['memory'] = f(new_index)\n", - "df_int_after.index = new_index" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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JCmjNm7cyLhx4/jzn//Mv//9bz766CP2228/Ro8enelo5Yrn/EmSJEnKiNzcXG699Vb2339/hgwZQvXq1XnkkUfYd999Mx2tXHLmT5IkSVJaxRgJIbBixQp+85vf0LlzZx544AGOP/54b9eQQpY/SZIkSWmxePFibr75ZhYvXsyUKVNo1KgRH374IU2bNs10tArBZZ+SJEmSUmrhwoUMHDiQZs2acffdd7PrrruyadMmAItfGjnzJ0mSJCllnnjiCfr27UutWrW46KKLuOSSS2jUqFGmY1VIlj9JkiRJO02Mkeeee45q1apx3HHH0b17d6677jrOO+88dtttt0zHq9Bc9ilJkiTpJ8vPz2fcuHEcdthhnHjiidx6660A7LLLLvzud7+z+JUClj9JkiRJP8njjz9O8+bNGTBgAIWFhYwdO5YpU6ZkOpa24LJPSZIkSTts5cqVVKtWjVq1apGXl8c+++zDbbfdxoknnkilSs4xlUb+VCRJkiSV2Oeff87//d//0bhxY+6++24ABg4cyKuvvspJJ51k8SvFnPmTJEmStF0ffPABN910E2PHjqWwsJDTTz+dHj16AHhj9jLC8idJkiRpuy644AJeffVVzj33XC677DLvz1cGOScrSZIk6XtijLzwwgt0796dpUuXAnDnnXeyePFicnJyLH5llOVPkiRJEgAFBQU88cQTtG/fnuOPP56FCxeyaNEiAFq0aMEee+yR4YT6KVz2KUmSJIkNGzbQpk0b3n//fQ488EDuv/9+BgwYQFZWVqajaSex/EmSJEkV1OrVq5k+fTp9+/YlKyuLM844g1atWnHKKadQuXLlTMfTTmb5kyRJkiqYr776ittuu4277rqLNWvW0K5dO5o1a8bVV1+d6WhKIc/5kyRJkiqIr7/+mvPPP58mTZpw44030r17d958802aNWuW6WhKA2f+JEmSpHIuNzeXWrVqUaVKFR577DEGDRrE5ZdfTvPmzTMdTWlk+ZMkSZLKoRgjL730EiNHjuSbb77hjTfeYNddd2XJkiXUrFkz0/GUAS77lCRJksqRwsJCJk+ezJFHHkm3bt2YP38+vXv3Jj8/H8DiV4E58ydJkiSVIxMmTKB///7sv//+3H333Zx55pnUqFEj07FUClj+JEmSpDJs7dq13H///ey2224MHDiQ3r17U6VKFX75y19SpYp/3dd/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cNmnJH1JF154IdOnT+enP/0pP/zhD9l1112zjiRJkvR3LH+S9Dlt2rSJW2+9laOPPpr999+fG2+8kYYNG9KmTZuso0mSJP1DLvuUpB2UUuLRRx+lS5cunHfeeVs/r2/fffe1+EmSpBrP8idJO+CFF17gqKOO4thjjyWlxCOPPMLYsWOzjiVJkrTDXPYpSTvgjjvu4IUXXuA//uM/OPvss2nYsGHWkSRJkj4Xj/xJ0mdYv349V1xxBc888wwAV1xxBa+99hrnnXeexU+SJNVKlj9J2saWLVv4r//6L9q3b8/YsWOZPn06AM2aNaN58+YZp5MkSfriLH+SlHPzzTez7777cvrpp9O6dWtmz57NlVdemXUsSZKkamH5k1S0Vq9eze2338769esB2LhxIwcddBBTp05l/vz5HH744RknlCRJqj5e8EVSUdmyZQszZ85k0qRJPPjgg9cOrlQAAB3qSURBVHzyySfssccefOc732H06NGMHj0664iSJEl5YfmTVDSWL19OSUkJ7733Hi1atGD48OGUl5dTUlKSdTRJkqS8s/xJqrNWrVrFfffdx+rVq7nkkkto2bIlgwcPpk+fPgwaNIidd94564iSJEkFY/mTVKds2bKFJ598krvuuouHHnqIjRs30qNHDy6++GIigokTJ2YdUZIkKRNe8EVSnTJ27FjKysqYMWMGZ511FgsWLGDevHlERNbRJEmSMmX5k1RrrVq1iltuuYUePXowa9YsAMrLy5k6dSpLly7lP//zPykpKbH4SZIk4bJPSbXMli1beOKJJ5g0aRIPP/wwGzdupHPnznzyyScAtG/fnvbt22ecUpIkqeax/EmqFVatWkXz5s2prKxk2LBhbN68mREjRjBs2DC6devm0T1JkqR/wfInqcZatWoVkydPZtKkSbz//vu88cYbNGzYkCeffJL27dt7tU5JkqTPwXP+JNU4zz//PCeccAJ77bUXI0eOZMOGDYwaNYpNmzYB0KVLF4ufJEnS5+SRP0k1wqJFi2jWrBlt2rTh/fff56mnnuLss89m2LBhdO3a1WWdkiRJX5JH/iRlZuXKldx8880ccsghdOrUaetn8JWVlbF06VImTJjg+XySJEnVxCN/kgoupUR5eTn33XcfFRUVfOMb3+DGG2/k5JNPBqB+/frUr18/45SSJEl1i+VPUkG88sorPPnkk4waNYqIoGnTpnz/+9/fuqxTkiRJ+WX5k5Q3a9as4aabbmLSpEksWLCABg0aMHToUNq0acNNN92UdTxJkqSi4jl/kvLigQceYOjQoZx77rls3ryZ8ePHs3TpUtq0aZN1NEmSpKLkkT9J1WbTpk28/fbb7L///gwcOJChQ4cyZswYl3VKkiTVAB75k1QtZs+eTbdu3RgwYAAVFRU0btyYs846y+InSZJUQ1j+JH0pK1asoLy8nH//939n7dq13HDDDey0005Zx5IkSdJ2XPYp6QtbvHgxhx12GOvWrePSSy/lsssuo3HjxlnHkiRJ0mew/En63FavXk2zZs3o0KED5eXlnH322XTs2DHrWJIkSfonXPYpaYetWrWKkSNHcsABB7BixQrq1avH+PHjLX6SJEm1gOVP0r+UUuLuu++mQ4cO3HrrrZx66qk0atQo61iSJEn6HFz2Kemf2rBhA2VlZcyePZsePXrwxBNPeAVPSZKkWsjyJ+kzbdmyhfr167PLLrvQqVMnTjvtNM4880zq1XPBgCRJUm2U2bu4iHgzIl6OiBciYkFuW4uImBERf859b55VPqlYpZSYOnUq7dq1Y9GiRQDcfPPNDB8+3OInSZJUi2X9Tq5PSqlrSql77v4lwMyUUjtgZu6+pAJ57bXXOProozn++OPZbbfdqKioyDqSJEmSqknW5W973wZ+mbv9S2BwhlmkonL11VfTuXNn5s2bx4QJE1iwYIHn9kmSJNUhWZa/BDwREc9HxIjctlYppWUAue8tM0snFZmPP/6Y4447jldffZXzzz+fBg08JViSJKkuiZRSNr84ok1KaWlEtARmAOcBj6SUmm3znFUppebb/dwIYARAq1atSiZPnlzI2NVm7dq1NGnSJOsYRcWZ/60VK1YwceJEBg0axCGHHEJlZWW1n9PnzAvPmReeMy88Z154zrzwnHnh1daZ9+nT5/ltTqP7pzL7X/sppaW57ysi4kHgEGB5RLROKS2LiNbAis/4uduA2wC6d++eevfuXcDU1WfWrFnU1uy1lTOvsmnTJsaPH89Pf/pTKisrOf300/M2F2deeM688Jx54TnzwnPmhefMC68YZp7Jss+I2DUimn56G+gPLAQeAcpzTysHHs4in1RXzZkzh27dunHRRRfRt29fFi1axPDhw7OOJUmSpALI6shfK+DBiPg0w69TStMi4jng/oj4LvA2MDSjfFKd9Morr7Bu3ToeeeQRjj322KzjSJIkqYAyKX8ppdeBgz5j+4dA38InkuqmLVu2cOutt9KkSRNOP/10zjrrLE477TQaN26cdTRJkiQVWE37qAdJ1eS5557j0EMP5ZxzzuG3v/0tAPXq1bP4SZIkFSnLn1THrFq1ipEjR3LooYeydOlS7r33Xu6///6sY0mSJCljlj+pjlmwYAG33XYbo0aNYsmSJZx44onkzq+VJElSEfNTnKU6YOHChTz77LOceeaZ9OvXj9dee422bdtmHUuSJEk1iEf+pFps7dq1jBkzhq5du/KjH/2I9evXA1j8JEmS9Hcsf1ItlFLigQceoGPHjlx//fWcccYZvPTSS17MRZIkSf+Qyz6lWujNN9/kpJNOonPnzkyZMoWePXtmHUmSJEk1nEf+pFpiw4YNTJkyBYD99tuPWbNm8dxzz1n8JEmStEMsf1It8Pjjj9O5c2dOOOEEXn75ZQB69epFgwYevJckSdKOsfxJNdiLL77IkCFDGDhwIA0bNmTmzJl06dIl61iSJEmqhTxsINUwmzZtomHDhmzatIl+/fqxdu1arr76ai644AJ23nnnrONJkiSplrL8STVARUUFjz32GJMmTWLRokUsWbKEhg0bMnXqVA488EB23333rCNKkiSplrP8SRn685//zE033cQ999zDBx98QKtWrTjttNPYsGEDu+66K4cffnjWESVJklRHWP6kAluxYgX16tVjjz32YMmSJdxyyy1861vfYtiwYQwYMMCLuEiSJCkvvOCLVAAVFRU8+OCDDB48mL333psJEyYAUFZWxrJly5gyZQrHHHOMxU+SJEl54ztNKc8uuugi7rzzTj788EP22msvRo8ezcknnwxAw4YNadGiRcYJJUmSVAwsf1I1W7FiBTNmzOCUU04BYNmyZRx55JEMGzaM/v37e3RPkiRJmfBdqFQNKioq+N3vfsekSZN47LHH2Lx5M7169aJt27bcfffdRETWESVJklTkPOdP+pLmzp1LmzZtOO6443juuee44IILeOWVV2jbti2AxU+SJEk1gkf+pM9p+fLl3HPPPey7774MGTKEAw88kH79+nH66afTr18/l3VKkiSpRvJdqrQDKioqePTRR7cu69yyZQvDhw9nyJAhNG/enHvvvTfriJIkSdI/ZfmTdsDgwYN5/PHH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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "ax4 = df_int_after.plot.line(figsize=(15,8), style='k--', grid=True)\n", - "ax4.set_title('Cassandra JVM Memory Usage')\n", - "ax4.set_xlabel(\"Nodes\")\n", - "ax4.set_ylabel(\"Memory (MB)\")\n", - "plt.savefig('plot2.png')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/vizualization/data.csv b/vizualization/data.csv deleted file mode 100644 index 7c0f896..0000000 --- a/vizualization/data.csv +++ /dev/null @@ -1,11 +0,0 @@ -nodes,cassandra,hdfs -10,10,26 -20,20,46 -30,30,66 -40,46,66 -50,74,89 -60, -70, -80, -90, -100,