diff --git a/src/common/method_wrappers/results-perf-eval/MW/dev-drv-mw.png b/src/common/method_wrappers/results-perf-eval/MW/dev-drv-mw.png new file mode 100644 index 0000000000000000000000000000000000000000..a5732f8d162182a014497f219b510baa3d5ac105 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/MW/dev-drv-mw.png differ diff --git a/src/common/method_wrappers/results-perf-eval/MW/generate.sh b/src/common/method_wrappers/results-perf-eval/MW/generate.sh new file mode 100755 index 0000000000000000000000000000000000000000..bb86e747580cc48cfd93d9091584ebe66a2586fc --- /dev/null +++ b/src/common/method_wrappers/results-perf-eval/MW/generate.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +python generate_plot.py "DEVICE_DRIVER_MW" +python generate_plot.py "SERVICE_HANDLER_MW" diff --git a/src/common/method_wrappers/results-perf-eval/MW/generate_plot.py b/src/common/method_wrappers/results-perf-eval/MW/generate_plot.py new file mode 100644 index 0000000000000000000000000000000000000000..beae663f671b73b685e5ac8ec2048df35771c862 --- /dev/null +++ b/src/common/method_wrappers/results-perf-eval/MW/generate_plot.py @@ -0,0 +1,69 @@ +import enum, sys +import numpy as np +import matplotlib.pyplot as plt + +class PlotName(enum.Enum): + DEVICE_DRIVER_MW = 'dev-drv-mw' + SERVICE_HANDLER_MW = 'srv-hlr-mw' + +plot_name = PlotName.__members__.get(sys.argv[1]) +if plot_name is None: raise Exception('Unsupported plot: {:s}'.format(str(plot_name))) + +PLOTS = { + PlotName.DEVICE_DRIVER_MW: ( + #'Device Driver - MicroWave', '0.0001-100', [ + # ('GetConfig', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,10,172,0,1,0,0,0,0,0,0]), + # ('SetConfig', [89,1,0,0,0,0,0,0,0,0,0,0,0,0,0,6,34,50,1,0,0,0,0,0,0,0]), + # ('DeleteConfig', [90,1,0,0,0,0,0,0,0,0,0,0,0,0,2,3,0,4,72,12,0,0,0,0,0,0]), + #]), + 'Device Driver - MicroWave', '0.1-10', [ + ('GetConfig', [0,1,0,10,172,0,1,0]), + ('SetConfig', [0,0,6,34,50,1,0,0]), + ('DeleteConfig', [0,2,3,0,4,72,12,0]), + ]), + PlotName.SERVICE_HANDLER_MW: ( + 'Service Handler - L2NM MicroWave', '1-100', [ + ('SetEndpoint', [0,1,0,1,5,75,6,0]), + ('DeleteEndpoint', [0,0,0,0,1,77,17,0]), + ]), +} + +BINS_RANGES = { + '0.0001-100' : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075, + 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, + 25, 50, 75, 100, 200], + '0.1-10' : [0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10], + '0.0001-1' : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075, + 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1], + '0.0001-0.25' : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075, + 0.01, 0.025, 0.05, 0.075, 0.1, 0.25], + '1-100' : [1, 2.5, 5, 7.5, 10, 25, 50, 75, 100], + '0.001-100' : [0, 0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075, + 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, 25, 50, 75, 100, 200], + '0.001-7.5' : [0, 0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075, + 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10], + '0.01-5' : [0, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5], +} + +# plot the cumulative histogram +fig, ax = plt.subplots(figsize=(8, 8)) + +bins = PLOTS[plot_name][1] +if isinstance(bins, str): bins = BINS_RANGES[PLOTS[plot_name][1]] +bins = np.array(bins).astype(float) + +for label, counts in PLOTS[plot_name][2]: + counts = np.array(counts).astype(float) + assert len(bins) == len(counts) + 1 + centroids = (bins[1:] + bins[:-1]) / 2 + ax.hist(centroids, bins=bins, weights=counts, range=(min(bins), max(bins)), density=True, + histtype='step', cumulative=True, label=label) + +ax.grid(True) +ax.legend(loc='upper left') +ax.set_title(PLOTS[plot_name][0]) +ax.set_xlabel('seconds') +ax.set_ylabel('Likelihood of occurrence') +plt.xscale('log') +plt.savefig('{:s}.png'.format(plot_name.value), dpi = (600)) +plt.show() diff --git a/src/common/method_wrappers/results-perf-eval/MW/srv-hlr-mw.png b/src/common/method_wrappers/results-perf-eval/MW/srv-hlr-mw.png new file mode 100644 index 0000000000000000000000000000000000000000..70368ade484fd07310b521b6ea8182b223604922 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/MW/srv-hlr-mw.png differ diff --git a/src/common/method_wrappers/results-perf-eval/OpenConfig/dev-drv-openconfig.png b/src/common/method_wrappers/results-perf-eval/OpenConfig/dev-drv-openconfig.png new file mode 100644 index 0000000000000000000000000000000000000000..7130d5cc721a5b3dd419f0eba1217664aab064d4 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/OpenConfig/dev-drv-openconfig.png differ diff --git a/src/common/method_wrappers/results-perf-eval/OpenConfig/generate.sh b/src/common/method_wrappers/results-perf-eval/OpenConfig/generate.sh new file mode 100755 index 0000000000000000000000000000000000000000..0ecd000fd52dc8b5d40b0b115f09b4e957582240 --- /dev/null +++ b/src/common/method_wrappers/results-perf-eval/OpenConfig/generate.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +python generate_plot.py "DEVICE_DRIVER_OPENCONFIG" +python generate_plot.py "SERVICE_HANDLER_OPENCONFIG_L2NM" +python generate_plot.py "SERVICE_HANDLER_OPENCONFIG_L3NM" diff --git a/src/common/method_wrappers/results-perf-eval/OpenConfig/generate_plot.py b/src/common/method_wrappers/results-perf-eval/OpenConfig/generate_plot.py new file mode 100644 index 0000000000000000000000000000000000000000..c6fda331d7782acefd47759d28d7e1d82508efef --- /dev/null +++ b/src/common/method_wrappers/results-perf-eval/OpenConfig/generate_plot.py @@ -0,0 +1,74 @@ +import enum, sys +import numpy as np +import matplotlib.pyplot as plt + +class PlotName(enum.Enum): + DEVICE_DRIVER_OPENCONFIG = 'dev-drv-openconfig' + SERVICE_HANDLER_OPENCONFIG_L2NM = 'srv-hlr-openconfig-l2nm' + SERVICE_HANDLER_OPENCONFIG_L3NM = 'srv-hlr-openconfig-l3nm' + +plot_name = PlotName.__members__.get(sys.argv[1]) +if plot_name is None: raise Exception('Unsupported plot: {:s}'.format(str(plot_name))) + +PLOTS = { + PlotName.DEVICE_DRIVER_OPENCONFIG: ( + 'Device Driver - OpenConfig', '0.0001-100', [ + #('GetConfig', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,0,0,0,0]), + #('SetConfig', [127,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,43,19,0,0,0,0,0,0]), + #('DeleteConfig', [92,1,0,0,0,0,0,0,0,0,0,0,0,0,5,2,8,71,14,0,0,0,0,0,0,0]), + + ('GetConfig', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,0,0,0,0]), + ('SetConfig', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,43,19,0,0,0,0,0,0]), + ('DeleteConfig', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,2,8,71,14,0,0,0,0,0,0,0]), + ]), + PlotName.SERVICE_HANDLER_OPENCONFIG_L2NM: ( + 'Service Handler - L2NM OpenConfig', '0.001-100', [ + ('SetEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,10]), + ('DeleteEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14]), + ]), + PlotName.SERVICE_HANDLER_OPENCONFIG_L3NM: ( + 'Service Handler - L3NM OpenConfig', '0.001-100', [ + ('SetEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,17]), + ('DeleteEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20]), + ]), +} + +BINS_RANGES = { + '0.0001-100' : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075, + 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, + 25, 50, 75, 100, 200], + '0.1-10' : [0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10], + '0.0001-1' : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075, + 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1], + '0.0001-0.25' : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075, + 0.01, 0.025, 0.05, 0.075, 0.1, 0.25], + '1-100' : [1, 2.5, 5, 7.5, 10, 25, 50, 75, 100], + '0.001-100' : [0, 0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075, + 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, 25, 50, 75, 100, 200], + '0.001-7.5' : [0, 0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075, + 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10], + '0.01-5' : [0, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5], +} + +# plot the cumulative histogram +fig, ax = plt.subplots(figsize=(8, 8)) + +bins = PLOTS[plot_name][1] +if isinstance(bins, str): bins = BINS_RANGES[PLOTS[plot_name][1]] +bins = np.array(bins).astype(float) + +for label, counts in PLOTS[plot_name][2]: + counts = np.array(counts).astype(float) + assert len(bins) == len(counts) + 1 + centroids = (bins[1:] + bins[:-1]) / 2 + ax.hist(centroids, bins=bins, weights=counts, range=(min(bins), max(bins)), density=True, + histtype='step', cumulative=True, label=label) + +ax.grid(True) +ax.legend(loc='upper left') +ax.set_title(PLOTS[plot_name][0]) +ax.set_xlabel('seconds') +ax.set_ylabel('Likelihood of occurrence') +plt.xscale('log') +plt.savefig('{:s}.png'.format(plot_name.value), dpi = (600)) +plt.show() diff --git a/src/common/method_wrappers/results-perf-eval/OpenConfig/srv-hlr-openconfig-l2nm.png b/src/common/method_wrappers/results-perf-eval/OpenConfig/srv-hlr-openconfig-l2nm.png new file mode 100644 index 0000000000000000000000000000000000000000..9b4393a0ee713b0232b2e4eb5bba75f30159f6e9 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/OpenConfig/srv-hlr-openconfig-l2nm.png differ diff --git a/src/common/method_wrappers/results-perf-eval/OpenConfig/srv-hlr-openconfig-l3nm.png b/src/common/method_wrappers/results-perf-eval/OpenConfig/srv-hlr-openconfig-l3nm.png new file mode 100644 index 0000000000000000000000000000000000000000..e4b2d83685dc983cbd2738eecf7064eba74c8e13 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/OpenConfig/srv-hlr-openconfig-l3nm.png differ diff --git a/src/common/method_wrappers/results-perf-eval/TE/te-cdf.py b/src/common/method_wrappers/results-perf-eval/TE/te-cdf.py new file mode 100644 index 0000000000000000000000000000000000000000..60919ba8bb2a1e5976d14bafd727e176cf86b0cd --- /dev/null +++ b/src/common/method_wrappers/results-perf-eval/TE/te-cdf.py @@ -0,0 +1,30 @@ +import matplotlib.pyplot as plt + +flow_creation_us = [ + 3.007065,3.007783,3.010780,3.007374,3.006519,3.006668,3.006303,3.006463,3.006758,3.007992,3.012198,3.001413, + 3.007289,3.006241,3.007523,3.007569,3.006643,3.006255,3.007058,3.006111,3.006918,3.007972,3.006829,3.007378, + 3.007666,3.003071,3.006774,3.006060,3.006731,3.005812 +] + +flow_update_us = [ + 3.005123,3.004228,3.003897,3.006692,3.003767,3.003749,3.004626,3.004333,3.004449,3.003895,3.004092,3.003979, + 3.005099,3.213206,3.004625,3.004707,3.004187,3.004609,3.003885,3.004064,3.004308,3.004280,3.004423,3.211980, + 3.004138,3.004394,3.004018,3.004747,3.005719,3.003656 +] + +n_bins = 10 +fig, ax = plt.subplots(figsize=(8, 8)) + +# plot the cumulative histograms +n, bins, _ = ax.hist(flow_creation_us, n_bins, density=True, histtype='step', cumulative=True, label='FlowCreate') +print(n, bins) +n, bins, _ = ax.hist(flow_update_us, n_bins, density=True, histtype='step', cumulative=True, label='FlowUpdate') +print(n, bins) + +ax.grid(True) +ax.legend(loc='lower center') +ax.set_title('TE Flow Management Delay') +ax.set_xlabel('seconds') +ax.set_ylabel('Likelihood of occurrence') +plt.savefig('te-perf-eval.png', dpi = (600)) +plt.show() diff --git a/src/common/method_wrappers/results-perf-eval/TE/te-perf-eval.png b/src/common/method_wrappers/results-perf-eval/TE/te-perf-eval.png new file mode 100644 index 0000000000000000000000000000000000000000..5b2fd8160bddb4322d8fbb22dac950598bf2115b Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/TE/te-perf-eval.png differ diff --git a/src/common/method_wrappers/results-perf-eval/XR/dev-drv-xr-with-outliers.png b/src/common/method_wrappers/results-perf-eval/XR/dev-drv-xr-with-outliers.png new file mode 100644 index 0000000000000000000000000000000000000000..9607ce0436ee962b7fa5b7ed333ca219ef097884 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/XR/dev-drv-xr-with-outliers.png differ diff --git a/src/common/method_wrappers/results-perf-eval/XR/dev-drv-xr.png b/src/common/method_wrappers/results-perf-eval/XR/dev-drv-xr.png new file mode 100644 index 0000000000000000000000000000000000000000..61f7d3e394676a05f240d032ce62124a70d8b8bb Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/XR/dev-drv-xr.png differ diff --git a/src/common/method_wrappers/results-perf-eval/XR/generate.sh b/src/common/method_wrappers/results-perf-eval/XR/generate.sh new file mode 100755 index 0000000000000000000000000000000000000000..eae3eb6d6e615f3be97b2df9f44ce544523ddb72 --- /dev/null +++ b/src/common/method_wrappers/results-perf-eval/XR/generate.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +python generate_plot.py "DEVICE_DRIVER_XR" diff --git a/src/common/method_wrappers/results-perf-eval/XR/generate_plot.py b/src/common/method_wrappers/results-perf-eval/XR/generate_plot.py new file mode 100644 index 0000000000000000000000000000000000000000..66110b44400719a796bc86bf6ea1b0c7a1d44224 --- /dev/null +++ b/src/common/method_wrappers/results-perf-eval/XR/generate_plot.py @@ -0,0 +1,61 @@ +import enum, sys +import numpy as np +import matplotlib.pyplot as plt + +class PlotName(enum.Enum): + DEVICE_DRIVER_XR = 'dev-drv-xr' + +plot_name = PlotName.__members__.get(sys.argv[1]) +if plot_name is None: raise Exception('Unsupported plot: {:s}'.format(str(plot_name))) + +PLOTS = { + PlotName.DEVICE_DRIVER_XR: ( + #'Device Driver - XR', '0.0001-0.25', [ + # ('GetConfig', [0,0,0,0,0,0,0,0,0,77,1,1,0,0]), + # ('SetConfig', [0,15,17,7,0,0,0,0,0,0,34,3,2,0]), + # ('DeleteConfig', [23,16,0,0,0,0,0,0,0,1,32,5,1,0]), + #]), + 'Device Driver - XR', '0.0001-0.25', [ + ('GetConfig', [0,0,0,0,0,0,0,0,0,77,1,1,0,0]), + ('SetConfig', [0,0,0,0,0,0,0,0,0,0,34,3,2,0]), + ('DeleteConfig', [0,0,0,0,0,0,0,0,0,1,32,5,1,0]), + ]), +} + +BINS_RANGES = { + '0.0001-100' : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075, + 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, + 25, 50, 75, 100, 200], + '0.0001-1' : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075, + 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1], + '0.0001-0.25' : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075, + 0.01, 0.025, 0.05, 0.075, 0.1, 0.25], + '0.001-100' : [0, 0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075, + 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, 25, 50, 75, 100, 200], + '0.001-7.5' : [0, 0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075, + 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10], + '0.01-5' : [0, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5], +} + +# plot the cumulative histogram +fig, ax = plt.subplots(figsize=(8, 8)) + +bins = PLOTS[plot_name][1] +if isinstance(bins, str): bins = BINS_RANGES[PLOTS[plot_name][1]] +bins = np.array(bins).astype(float) + +for label, counts in PLOTS[plot_name][2]: + counts = np.array(counts).astype(float) + assert len(bins) == len(counts) + 1 + centroids = (bins[1:] + bins[:-1]) / 2 + ax.hist(centroids, bins=bins, weights=counts, range=(min(bins), max(bins)), density=True, + histtype='step', cumulative=True, label=label) + +ax.grid(True) +ax.legend(loc='upper left') +ax.set_title(PLOTS[plot_name][0]) +ax.set_xlabel('seconds') +ax.set_ylabel('Likelihood of occurrence') +plt.xscale('log') +plt.savefig('{:s}.png'.format(plot_name.value), dpi = (600)) +plt.show() diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-emu-l2nm.png b/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-emu-l2nm.png new file mode 100644 index 0000000000000000000000000000000000000000..84ab8747e2a6ca5153e4b6e02483030ab891a421 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-emu-l2nm.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-emu-l3nm.png b/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-emu-l3nm.png new file mode 100644 index 0000000000000000000000000000000000000000..d37827794618024ddaa553de8d2134b455aa31a0 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-emu-l3nm.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-tapi.png b/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-tapi.png new file mode 100644 index 0000000000000000000000000000000000000000..70b51e144e259191d9d174abfebd5a6ff3a52e57 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp1-dev-drv-tapi.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp1-pathcomp-rpc-compute.png b/src/common/method_wrappers/results-perf-eval/emulated/exp1-pathcomp-rpc-compute.png new file mode 100644 index 0000000000000000000000000000000000000000..af84e7e9d5866671e9441c1a93b9d2a66a9218c9 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp1-pathcomp-rpc-compute.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-l2nm-emu.png b/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-l2nm-emu.png new file mode 100644 index 0000000000000000000000000000000000000000..3e58fcbb8d8a25c7bbbd2094a28dad419afbeb02 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-l2nm-emu.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-l3nm-emu.png b/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-l3nm-emu.png new file mode 100644 index 0000000000000000000000000000000000000000..317af9ca13267f313cab9e6d67a3ba068a3993a4 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-l3nm-emu.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-tapi.png b/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-tapi.png new file mode 100644 index 0000000000000000000000000000000000000000..764b4f6cc64db88512b449e91b2ff31d6b260f91 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp1-svc-hdl-tapi.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-connection-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-connection-rpcs.png new file mode 100644 index 0000000000000000000000000000000000000000..4caa6681993a1850c9e561fed300a16a0d333a87 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-connection-rpcs.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-device-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-device-rpcs.png new file mode 100644 index 0000000000000000000000000000000000000000..188d784b68cbc1abb2ea90eaa305863b36cb838a Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-device-rpcs.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-link-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-link-rpcs.png new file mode 100644 index 0000000000000000000000000000000000000000..bc3b5ea36e7a278b670699baf7fddf12447510dc Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-link-rpcs.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-service-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-service-rpcs.png new file mode 100644 index 0000000000000000000000000000000000000000..74e639b85b70d35c2f0830aa837497646d6b3666 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-service-rpcs.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-slice-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-slice-rpcs.png new file mode 100644 index 0000000000000000000000000000000000000000..4060b8ae9b9d2a901b8d0cc2b009ce888f34fab9 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-slice-rpcs.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-topology-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-topology-rpcs.png new file mode 100644 index 0000000000000000000000000000000000000000..aae9d07ef4420e53ee4ba3d715f5bf37eae924dd Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-context-topology-rpcs.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-device-driver-emu.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-device-driver-emu.png new file mode 100644 index 0000000000000000000000000000000000000000..9b6e4d2a47d09f884a1c6e95e5ae27c4df56d55a Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-device-driver-emu.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-device-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-device-rpcs.png new file mode 100644 index 0000000000000000000000000000000000000000..70182fad226d4a387a13991cfba80a6cbd7d57fe Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-device-rpcs.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-dlt-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-dlt-rpcs.png new file mode 100644 index 0000000000000000000000000000000000000000..dae5e567c7395d5e6972a55b5e7053a551da624f Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-dlt-rpcs.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-pathcomp-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-pathcomp-rpcs.png new file mode 100644 index 0000000000000000000000000000000000000000..1c48c875f19b3a49238ee473bc265b9358cfbf6a Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-pathcomp-rpcs.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-service-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-service-rpcs.png new file mode 100644 index 0000000000000000000000000000000000000000..2c50e199195dec26ac29abf6901103d66d3bca33 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-service-rpcs.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-slice-rpcs.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-slice-rpcs.png new file mode 100644 index 0000000000000000000000000000000000000000..1292bc5e717634807ce835d481bd08424ef19f2b Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-slice-rpcs.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-svc-hdl-l2nm-emu.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-svc-hdl-l2nm-emu.png new file mode 100644 index 0000000000000000000000000000000000000000..403baefa0ccd07a70c7fd08db964ae30c3a56301 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-svc-hdl-l2nm-emu.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/exp2-svc-hdl-l3nm-emu.png b/src/common/method_wrappers/results-perf-eval/emulated/exp2-svc-hdl-l3nm-emu.png new file mode 100644 index 0000000000000000000000000000000000000000..9c45a0ddf886369fc50a828ded57c26ac6691634 Binary files /dev/null and b/src/common/method_wrappers/results-perf-eval/emulated/exp2-svc-hdl-l3nm-emu.png differ diff --git a/src/common/method_wrappers/results-perf-eval/emulated/generate.sh b/src/common/method_wrappers/results-perf-eval/emulated/generate.sh new file mode 100755 index 0000000000000000000000000000000000000000..f7ed1e31f0382ce1f3b1c89e1ab7de465692614c --- /dev/null +++ b/src/common/method_wrappers/results-perf-eval/emulated/generate.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +#python generate_plot.py "EXP1_DEVICE_DRIVER_EMU_L2NM" +#python generate_plot.py "EXP1_DEVICE_DRIVER_EMU_L3NM" +python generate_plot.py "EXP1_DEVICE_DRIVER_TAPI" +#python generate_plot.py "EXP2_DEVICE_DRIVER_EMU" + +# ----- All ------------------------------------------------------------ +#python generate_plot.py "EXP1_DEVICE_DRIVER_EMU_L2NM" +#python generate_plot.py "EXP1_DEVICE_DRIVER_EMU_L3NM" +#python generate_plot.py "EXP1_DEVICE_DRIVER_TAPI" +#python generate_plot.py "EXP1_SERVICE_HANDLER_EMU_L2NM" +#python generate_plot.py "EXP1_SERVICE_HANDLER_EMU_L3NM" +#python generate_plot.py "EXP1_SERVICE_HANDLER_TAPI" +#python generate_plot.py "EXP1_COMP_PATHCOMP_RPC_COMPUTE" +#python generate_plot.py "EXP2_DEVICE_DRIVER_EMU" +#python generate_plot.py "EXP2_SERVICE_HANDLER_EMU_L2NM" +#python generate_plot.py "EXP2_SERVICE_HANDLER_EMU_L3NM" +#python generate_plot.py "EXP2_COMP_CONTEXT_DEVICE_RPCS" +#python generate_plot.py "EXP2_COMP_CONTEXT_LINK_RPCS" +#python generate_plot.py "EXP2_COMP_CONTEXT_SERVICE_RPCS" +#python generate_plot.py "EXP2_COMP_CONTEXT_SLICE_RPCS" +#python generate_plot.py "EXP2_COMP_CONTEXT_TOPOLOGY_RPCS" +#python generate_plot.py "EXP2_COMP_CONTEXT_CONNECTION_RPCS" +#python generate_plot.py "EXP2_COMP_DEVICE_RPCS" +#python generate_plot.py "EXP2_COMP_SERVICE_RPCS" +#python generate_plot.py "EXP2_COMP_SLICE_RPCS" +#python generate_plot.py "EXP2_COMP_PATHCOMP_RPCS" +#python generate_plot.py "EXP2_COMP_DLT_RPCS" diff --git a/src/common/method_wrappers/results-perf-eval/emulated/generate_plot.py b/src/common/method_wrappers/results-perf-eval/emulated/generate_plot.py new file mode 100644 index 0000000000000000000000000000000000000000..74ae49c26b56cae22d812496633a96ea1b595405 --- /dev/null +++ b/src/common/method_wrappers/results-perf-eval/emulated/generate_plot.py @@ -0,0 +1,219 @@ +import enum, sys +import numpy as np +import matplotlib.pyplot as plt + +class PlotName(enum.Enum): + EXP1_DEVICE_DRIVER_EMU_L2NM = 'exp1-dev-drv-emu-l2nm' + EXP1_DEVICE_DRIVER_EMU_L3NM = 'exp1-dev-drv-emu-l3nm' + EXP1_DEVICE_DRIVER_TAPI = 'exp1-dev-drv-tapi' + EXP1_SERVICE_HANDLER_EMU_L2NM = 'exp1-svc-hdl-l2nm-emu' + EXP1_SERVICE_HANDLER_EMU_L3NM = 'exp1-svc-hdl-l3nm-emu' + EXP1_SERVICE_HANDLER_TAPI = 'exp1-svc-hdl-tapi' + EXP1_COMP_PATHCOMP_RPC_COMPUTE = 'exp1-pathcomp-rpc-compute' + + EXP2_DEVICE_DRIVER_EMU = 'exp2-device-driver-emu' + EXP2_SERVICE_HANDLER_EMU_L2NM = 'exp2-svc-hdl-l2nm-emu' + EXP2_SERVICE_HANDLER_EMU_L3NM = 'exp2-svc-hdl-l3nm-emu' + + EXP2_COMP_CONTEXT_DEVICE_RPCS = 'exp2-context-device-rpcs' + EXP2_COMP_CONTEXT_LINK_RPCS = 'exp2-context-link-rpcs' + EXP2_COMP_CONTEXT_SERVICE_RPCS = 'exp2-context-service-rpcs' + EXP2_COMP_CONTEXT_SLICE_RPCS = 'exp2-context-slice-rpcs' + EXP2_COMP_CONTEXT_TOPOLOGY_RPCS = 'exp2-context-topology-rpcs' + EXP2_COMP_CONTEXT_CONNECTION_RPCS = 'exp2-context-connection-rpcs' + EXP2_COMP_DEVICE_RPCS = 'exp2-device-rpcs' + EXP2_COMP_SERVICE_RPCS = 'exp2-service-rpcs' + EXP2_COMP_SLICE_RPCS = 'exp2-slice-rpcs' + EXP2_COMP_PATHCOMP_RPCS = 'exp2-pathcomp-rpcs' + EXP2_COMP_DLT_RPCS = 'exp2-dlt-rpcs' + +plot_name = PlotName.__members__.get(sys.argv[1]) +if plot_name is None: raise Exception('Unsupported plot: {:s}'.format(str(plot_name))) + +PLOTS = { + PlotName.EXP1_DEVICE_DRIVER_EMU_L2NM: ( + 'Device Driver - Emulated (using L2NM services)', '0.0001-1', [ + ('GetConfig', [0,27,252,212,160,261,26,2,3,9,19,11,2,1,0,0,0]), + ('SetConfig', [575,56,112,78,61,82,8,0,2,5,5,0,1, 0,0,0,0]), + ('DeleteConfig', [606,96,150,66,29,31,5,0,0,1,1,0, 0,0,0,0,0]), + ]), + + PlotName.EXP1_DEVICE_DRIVER_EMU_L3NM: ( + 'Device Driver - Emulated (using L3NM services)', '0.0001-1', [ + ('GetConfig', [0,1,40,83,127,460,132,24,13,39,36,31,9,5,1,0,0]), + ('SetConfig', [487,29,110,52,55,171,48,6,6,15,12,8,0,1, 0,0,0]), + ('DeleteConfig', [510,86,79,43,26,120,70,20,6,9,15,8,5,3, 0,0,0]), + ]), + + PlotName.EXP1_DEVICE_DRIVER_TAPI: ( + #'Device Driver - TAPI', '0.0001-1', [ + # ('GetConfig', [0,0,0,0,0,0,0,0,0,1,1,3,10,159,14, 0,0]), + # ('SetConfig', [92,3,1,0,0,0,0,6,11,47,13,13,0,0,0,0,0]), + # ('DeleteConfig', [90,0,0,0,0,0,3,14,25,35,6,11,2,0,0,0,0]), + #]), + 'Device Driver - TAPI', '0.0001-1', [ + ('GetConfig', [0,0,0,0,0,0,0,0,0,1,1,3,10,159,14, 0,0]), + ('SetConfig', [0,0,0,0,0,0,0,6,11,47,13,13,0,0,0,0,0]), + ('DeleteConfig', [0,0,0,0,0,0,3,14,25,35,6,11,2,0,0,0,0]), + ]), + + PlotName.EXP1_SERVICE_HANDLER_EMU_L2NM: ( + 'Service Handler - L2NM Emulated', '0.001-100', [ + ('SetEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,41,35,12,1,0]), + ('DeleteEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,3,29,45,7,0,0]), + ]), + + PlotName.EXP1_SERVICE_HANDLER_EMU_L3NM: ( + 'Service Handler - L3NM Emulated', '0.001-100', [ + ('SetEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,8,27,29,15,11]), + ('DeleteEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,2,0,6,22,29,18,11]), + ]), + + PlotName.EXP1_SERVICE_HANDLER_TAPI: ( + 'Service Handler - TAPI', '0.001-100', [ + ('SetEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,4,79,2,0,0,0,0]), + ('DeleteEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,5,0,3,1,73,12,0,0,0,0]), + ]), + + PlotName.EXP1_COMP_PATHCOMP_RPC_COMPUTE: ( + 'PathComp - Compute RPC', '0.01-5', [ + ('Compute (using L2NM services)', [0,0,20,32,14,22,0]), + ('Compute (using L3NM services)', [0,1,1,10,17,59,2]), + ('Compute (using TAPI services)', [3,70,10,3,2,6,0]), + ]), + + PlotName.EXP2_DEVICE_DRIVER_EMU: ( + 'Device Driver - Emulated', '0.0001-0.25', [ + ('GetConfig', [0,21,198,247,190,332,28,5,3,7,14,8,0,0]), + ('SetConfig', [558,61,139,85,57,117,22,1,2,4,1,5,1,0]), + ('DeleteConfig', [573,123,142,63,30,78,24,2,2,8,5,2,0,0]), + ]), + + PlotName.EXP2_SERVICE_HANDLER_EMU_L2NM: ( + 'Service Handler - L2NM Emulated', '0.001-100', [ + ('SetEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,2,18,15,4,1,2,2,0,0,0]), + ('DeleteEndpoint', [0,0,0,0,0,0,0,0,0,0,0,1,0,20,20,5,1,0,0,0,0,0]), + ]), + + PlotName.EXP2_SERVICE_HANDLER_EMU_L3NM: ( + 'Service Handler - L3NM Emulated', '0.001-100', [ + ('SetEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,13,24,2,5,4,1,0,0,0]), + ('DeleteEndpoint', [0,0,0,0,0,0,0,0,0,0,0,0,0,11,27,7,3,1,0,0,0,0]), + ]), + + PlotName.EXP2_COMP_CONTEXT_DEVICE_RPCS: ( + 'Context RPCs', '0.001-7.5', [ + ('GetDevice', [0,0,0,0,6,130,348,305,382,578,76,7,6,0,0,0,0]), + ('ListDevices', [0,0,0,0,0,0,0,0,0,4,37,43,8,2,0,0,0]), + ('SetDevice', [0,0,0,0,0,42,236,158,179,380,46,9,0,0,0,0,0]), + ]), + + PlotName.EXP2_COMP_CONTEXT_LINK_RPCS: ( + 'Context RPCs', '0.001-7.5', [ + ('GetLink', [0,1,9,5,1,1,0,0,0,0,0,0,0,0,0,0,0]), + ('ListLinks', [0,0,0,0,0,5,20,23,27,17,2,0,0,0,0,0,0]), + ]), + + PlotName.EXP2_COMP_CONTEXT_SERVICE_RPCS: ( + 'Context RPCs', '0.001-7.5', [ + ('GetService', [124,120,42,55,80,167,62,34,14,33,9,2,1,0,0,0,0]), + ('ListServices', [0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0]), + ('RemoveService', [0,0,3,18,15,29,13,5,1,4,1,0,0,0,0,0,0]), + ('SetService', [6,90,59,51,63,165,70,32,5,12,8,2,0,0,0,0,0]), + ]), + + PlotName.EXP2_COMP_CONTEXT_SLICE_RPCS: ( + 'Context RPCs', '0.001-7.5', [ + ('GetSlice', [30,75,48,24,32,118,56,34,12,19,8,2,0,0,0,0,0]), + ('ListSlices', [0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0]), + ('RemoveSlice', [0,0,2,10,8,14,8,2,1,2,0,0,0,0,0,0,0]), + ('SetSlice', [6,29,22,18,21,70,25,12,11,13,1,0,0,0,0,0,0]), + ('UnsetSlice', [0,12,12,8,1,3,6,3,1,2,0,0,0,0,0,0,0]), + ]), + + PlotName.EXP2_COMP_CONTEXT_TOPOLOGY_RPCS: ( + 'Context RPCs', '0.001-7.5', [ + ('GetTopology', [72,11,0,0,0,2,6,1,0,1,1,0,0,0,0,0,0]), + ('ListTopologies', [0,0,0,0,5,38,25,10,6,10,0,0,0,0,0,0,0]), + ('ListTopologyIds', [1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]), + ]), + + PlotName.EXP2_COMP_CONTEXT_CONNECTION_RPCS: ( + 'Context RPCs', '0.001-7.5', [ + ('ListConnections', [13,21,5,19,23,145,46,27,10,15,4,2,0,1,0,0,0]), + ('ListContextIds', [1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]), + ('RemoveConnection', [0,0,17,17,12,23,11,2,2,6,0,0,0,0,0,0,0]), + ('SetConnection', [0,0,17,26,9,18,4,7,2,5,4,2,0,0,0,0,0]), + ]), + + PlotName.EXP2_COMP_DEVICE_RPCS: ( + 'Device RPCs', '0.001-7.5', [ + ('AddDevice', [0,0,0,0,0,0,0,1,2,4,0,0,0,0,0,0,0]), + ('ConfigureDevice', [0,0,0,0,0,0,0,0,2,140,367,243,127,143,19,9,5]), + ]), + + PlotName.EXP2_COMP_SERVICE_RPCS: ( + 'Service RPCs', '0.001-7.5', [ + ('CreateService', [0,0,0,9,11,32,13,10,4,7,3,2,1,0,0,0,0]), + ('UpdateService', [0,0,0,0,0,0,0,0,0,0,0,0,0,19,41,15,18]), + ('DeleteService', [0,0,0,0,0,0,0,0,0,0,0,0,1,23,45,21,6]), + ]), + + PlotName.EXP2_COMP_SLICE_RPCS: ( + 'Slice RPCs', '0.001-7.5', [ + ('CreateSlice', [0,0,0,0,0,4,5,4,10,11,6,2,1,0,0,0,0]), + ('UpdateSlice', [0,0,0,0,0,0,0,0,0,0,0,0,0,6,20,10,10]), + ('DeleteSice', [0,0,0,0,0,0,0,0,0,0,0,0,0,9,21,15,2]), + ]), + + PlotName.EXP2_COMP_PATHCOMP_RPCS: ( + 'PathComp RPCs', '0.001-7.5', [ + ('Compute', [0,0,0,0,0,0,0,0,0,0,13,43,22,14,0,0,0]), + ]), + + PlotName.EXP2_COMP_DLT_RPCS: ( + 'DLT RPCs', '0.001-7.5', [ + ('RecordDevice', [0,0,0,0,0,0,0,1,4,5,6,6,0,26,71,94,306]), + ('RecordLink', [0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0]), + ('RecordService', [0,0,0,0,0,0,0,0,0,0,0,0,0,5,15,30,184]), + ('RecordSlice', [0,0,0,0,0,0,0,0,2,3,1,2,1,6,19,23,82]), + ]), +} + +BINS_RANGES = { + '0.0001-100' : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075, + 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, + 25, 50, 75, 100, 200], + '0.0001-1' : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075, + 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1], + '0.0001-0.25' : [0, 0.0001, 0.00025, 0.0005, 0.00075, 0.001, 0.0025, 0.005, 0.0075, + 0.01, 0.025, 0.05, 0.075, 0.1, 0.25], + '0.001-100' : [0, 0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075, + 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, 25, 50, 75, 100, 200], + '0.001-7.5' : [0, 0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075, + 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10], + '0.01-5' : [0, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5], +} + +# plot the cumulative histogram +fig, ax = plt.subplots(figsize=(8, 8)) + +bins = PLOTS[plot_name][1] +if isinstance(bins, str): bins = BINS_RANGES[PLOTS[plot_name][1]] +bins = np.array(bins).astype(float) + +for label, counts in PLOTS[plot_name][2]: + counts = np.array(counts).astype(float) + assert len(bins) == len(counts) + 1 + centroids = (bins[1:] + bins[:-1]) / 2 + ax.hist(centroids, bins=bins, weights=counts, range=(min(bins), max(bins)), density=True, + histtype='step', cumulative=True, label=label) + +ax.grid(True) +ax.legend(loc='best') +ax.set_title(PLOTS[plot_name][0]) +ax.set_xlabel('seconds') +ax.set_ylabel('Likelihood of occurrence') +plt.xscale('log') +plt.savefig('{:s}.png'.format(plot_name.value), dpi = (600)) +plt.show()