From 79c20ad391e7ee312b5931b2791836024b1d9e3b Mon Sep 17 00:00:00 2001 From: Georges Da Costa <dacosta@irit.fr> Date: Tue, 26 Jul 2022 21:34:45 +0200 Subject: [PATCH] Updates watermark detection --- expetator/demo_watermark.py | 46 +++++++++++++++++++++++++++++++++++++ expetator/experiment.py | 2 +- expetator/monitoring_csv.py | 15 +++++++++--- expetator/watermark.py | 4 ++-- setup.py | 2 +- 5 files changed, 62 insertions(+), 7 deletions(-) create mode 100755 expetator/demo_watermark.py diff --git a/expetator/demo_watermark.py b/expetator/demo_watermark.py new file mode 100755 index 0000000..920a72c --- /dev/null +++ b/expetator/demo_watermark.py @@ -0,0 +1,46 @@ +#! /usr/bin/python3 + +import expetator.monitoring_csv as monitoring_csv +import expetator.monitoring_list as monitoring_list +import expetator.watermark as watermark +import sys +import pandas as pd +import matplotlib.pyplot as plt +import json + +if __name__ == '__main__': + if len(sys.argv) != 3 or not sys.argv[1] in ['csv', 'list']: + print("""Usage : +%s csv file.csv + +or + +%s list file.list +""") + sys.exit(0) + + filename = sys.argv[2] + if sys.argv[1] == 'csv': + + a = monitoring_csv._read_csv(filename) + watermark.demo_watermark_detection(a, 10) + plt.show(block=True) + + + if sys.argv[1] == 'list': + + with open(filename) as f_id: + data = json.load(f_id) + + for name, timestamps, power in data: + + df = pd.DataFrame([timestamps, power]).transpose() + df.columns = ["#timestamp", "Values"] + + watermark.demo_watermark_detection(df, 10) + plt.show(block=True) + + + + + diff --git a/expetator/experiment.py b/expetator/experiment.py index ba91606..e1e0128 100755 --- a/expetator/experiment.py +++ b/expetator/experiment.py @@ -31,7 +31,7 @@ class Executor: self.nbcores = len(content) self.nbhosts = len(self.hostnames) self.mpi_options = '--map-by node --mca orte_rsh_agent oarsh' - if self.hostnames.split('-')[0] in ['grvingt', 'grimani', 'grele', 'troll', 'yeti', 'dahu']: + if self.hostnames[0].split('-')[0] in ['grvingt', 'grimani', 'grele', 'troll', 'yeti', 'dahu']: self.mpi_options = '-mca mtl psm2 -mca pml ^ucx,ofi -mca btl ^ofi,openib ' + self.mpi_options self.sudo = 'sudo-g5k' self.ssh = 'oarsh' diff --git a/expetator/monitoring_csv.py b/expetator/monitoring_csv.py index 30e757e..8eb8b9a 100644 --- a/expetator/monitoring_csv.py +++ b/expetator/monitoring_csv.py @@ -3,14 +3,23 @@ import pandas as pd import matplotlib.pyplot as plt import sys + +def _read_csv(filename): + df = pd.read_csv(filename, sep=' ', skipinitialspace=True) + if df.columns[-1].startswith('Unnamed'): + df.drop(columns=df.columns[-1:], axis=1, inplace=True) + return df + + + def read_host_csv(prefix, hostname, startTime, basename, fullname, archive_fid=None): fullpath= '%s_%s/%s_%s_%s' % (basename, prefix, hostname, fullname, startTime) if archive_fid is None: with open(fullpath) as file_id: - data = pd.read_csv(fullpath,sep=' ', skipinitialspace=True) + data = _read_csv(fullpath) else: with archive_fid.open(fullpath) as file_id: - data = pd.read_csv(file_id,sep=' ') + data = _read_csv(file_id) data = data.dropna(axis='columns') return data @@ -45,7 +54,7 @@ def write_bundle_csv(prefix, bundle, data, target_directory): def show_csv(filename, norm=False): filename = sys.argv[-1] - a = pd.read_csv(filename, sep = " ") + a = _read_csv(filename) a['#timestamp'] = a['#timestamp']-a['#timestamp'][0] if norm: tmp = (a/a.max()) diff --git a/expetator/watermark.py b/expetator/watermark.py index e622310..8f35a46 100644 --- a/expetator/watermark.py +++ b/expetator/watermark.py @@ -74,7 +74,7 @@ def get_shift(dataframe, frequency=10, duration=30, backward=False): #print(delta, res) - if current < .7: + if current < .6: res = pos_in_data, 0 return res @@ -102,7 +102,7 @@ def remove_wt_name(dataframe, target='fullname', signature='wt-30-'): ## Tool for virtualisation -def demo_watermark_detection(focus, freq): +def demo_watermark_detection(focus, freq=10): df = focus.loc[:, focus.columns != '#timestamp'] norm_focus=(df-df.min())/(df.max()-df.min()) norm_focus['#timestamp'] = focus['#timestamp'] diff --git a/setup.py b/setup.py index 2e302be..58c77d1 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ with open("README.md", "r") as fh: setuptools.setup( name="expetator", - version="0.3.16", + version="0.3.18", author="Georges Da Costa", author_email="georges.da-costa@irit.fr", description="A framework for monitoring HPC applications using DVFS", -- GitLab