From 72e3d2bc7e142620213fbe798a904b42e28deb62 Mon Sep 17 00:00:00 2001 From: Christoph Alt <christoph.alt@fau.de> Date: Wed, 6 Dec 2023 15:09:43 +0100 Subject: [PATCH] added a script to upload roofline data to influxdb --- roofline_data/gather_benchmarks.sh | 1 + roofline_data/upload_to_influx.py | 58 ++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 roofline_data/upload_to_influx.py diff --git a/roofline_data/gather_benchmarks.sh b/roofline_data/gather_benchmarks.sh index f353628..2cb107e 100755 --- a/roofline_data/gather_benchmarks.sh +++ b/roofline_data/gather_benchmarks.sh @@ -20,6 +20,7 @@ MEM_BENCHMARKS+=$(likwid-bench -a | awk -F "-" '{print $1}' | grep "stream" | aw current_date=$(date) mkdir -p ${HOSTNAME} SUMMARY_FILE="${HOSTNAME}/summary.txt" +rm ${SUMMARY_FILE} module load python machinestate -a -o "${HOSTNAME}/machinestate_${HOSTNAME}.json" diff --git a/roofline_data/upload_to_influx.py b/roofline_data/upload_to_influx.py new file mode 100644 index 0000000..5215cc3 --- /dev/null +++ b/roofline_data/upload_to_influx.py @@ -0,0 +1,58 @@ +import argparse +import cbutil as cb +import logging +logger = logging.getLogger(__file__) +logging.basicConfig(level=logging.INFO) + + +def data2dp(host, measurement): + fields = dict() + for typ in ["bw", "perf"]: + fields.update({f"{typ}_{key}": value for key, value in host[typ].items()}) + + return cb.DataPoint( + time=host["date"], + tags={"host": host["hostname"]}, + fields=fields, + measurement=measurement, + ) + + +def parse_data(input_file, measurement): + data = cb.json2dict(input_file) + dps = [data2dp(d, measurement) for d in data.values()] + logger.info(dps) + return dps + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("input_file") + parser.add_argument("-m", "--measurement", required=True) + + parser.add_argument( + '-log', + '--loglevel', + default='warning', + help=('Provide logging level. ' + 'Example --loglevel debug, default=warning') + ) + + parser.add_argument( + '-d', + '--dryrun', + help='proccess but do not upload data, default=false', + action='store_true', + default=False, + ) + + args = parser.parse_args() + logging.basicConfig(level=args.loglevel.upper()) + dps = parse_data(args.input_file, args.measurement) + if not args.dryrun: + up = cb.Uploader() + up.upload(dps) + + +if __name__ == "__main__": + main() -- GitLab