X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Ftools%2Fdash%2Fapp%2Fpal%2Freport%2Fgraphs.py;h=0543193d99a6e23a35c1fc7053f2abe06f4ad389;hp=634e539f7e194558af929c075fba17d8da57148c;hb=06d3f7331f9f10d99baa334b1808dfdc9c6fc8be;hpb=51da461dcdb1ed20abe73b616ceb971569c9b884 diff --git a/resources/tools/dash/app/pal/report/graphs.py b/resources/tools/dash/app/pal/report/graphs.py index 634e539f7e..0543193d99 100644 --- a/resources/tools/dash/app/pal/report/graphs.py +++ b/resources/tools/dash/app/pal/report/graphs.py @@ -24,6 +24,23 @@ import hdrh.histogram import hdrh.codec +_NORM_FREQUENCY = 2.0 # [GHz] +_FREQURENCY = { # [GHz] + "2n-aws": 1.000, + "2n-dnv": 2.000, + "2n-clx": 2.300, + "2n-icx": 2.600, + "2n-skx": 2.500, + "2n-tx2": 2.500, + "2n-zn2": 2.900, + "3n-alt": 3.000, + "3n-aws": 1.000, + "3n-dnv": 2.000, + "3n-icx": 2.600, + "3n-skx": 2.500, + "3n-tsh": 2.200 +} + _VALUE = { "mrr": "result_receive_rate_rate_values", "ndr": "result_ndr_lower_rate_value", @@ -51,14 +68,14 @@ _LAT_HDRH = ( # Do not change the order PERCENTILE_MAX = 99.999501 _GRAPH_LAT_HDRH_DESC = { - u"result_latency_forward_pdr_0_hdrh": u"No-load.", - u"result_latency_reverse_pdr_0_hdrh": u"No-load.", - u"result_latency_forward_pdr_10_hdrh": u"Low-load, 10% PDR.", - u"result_latency_reverse_pdr_10_hdrh": u"Low-load, 10% PDR.", - u"result_latency_forward_pdr_50_hdrh": u"Mid-load, 50% PDR.", - u"result_latency_reverse_pdr_50_hdrh": u"Mid-load, 50% PDR.", - u"result_latency_forward_pdr_90_hdrh": u"High-load, 90% PDR.", - u"result_latency_reverse_pdr_90_hdrh": u"High-load, 90% PDR." + "result_latency_forward_pdr_0_hdrh": "No-load.", + "result_latency_reverse_pdr_0_hdrh": "No-load.", + "result_latency_forward_pdr_10_hdrh": "Low-load, 10% PDR.", + "result_latency_reverse_pdr_10_hdrh": "Low-load, 10% PDR.", + "result_latency_forward_pdr_50_hdrh": "Mid-load, 50% PDR.", + "result_latency_reverse_pdr_50_hdrh": "Mid-load, 50% PDR.", + "result_latency_forward_pdr_90_hdrh": "High-load, 90% PDR.", + "result_latency_reverse_pdr_90_hdrh": "High-load, 90% PDR." } @@ -144,7 +161,8 @@ def select_iterative_data(data: pd.DataFrame, itm:dict) -> pd.DataFrame: return df -def graph_iterative(data: pd.DataFrame, sel:dict, layout: dict) -> tuple: +def graph_iterative(data: pd.DataFrame, sel:dict, layout: dict, + normalize: bool) -> tuple: """ """ @@ -162,13 +180,19 @@ def graph_iterative(data: pd.DataFrame, sel:dict, layout: dict) -> tuple: itm_data = select_iterative_data(data, itm) if itm_data.empty: continue + phy = itm["phy"].split("-") + topo_arch = f"{phy[0]}-{phy[1]}" if len(phy) == 4 else str() + norm_factor = (_NORM_FREQUENCY / _FREQURENCY[topo_arch]) \ + if normalize else 1.0 if itm["testtype"] == "mrr": - y_data = itm_data[_VALUE[itm["testtype"]]].to_list()[0] - if y_data.size > 0: + y_data_raw = itm_data[_VALUE[itm["testtype"]]].to_list()[0] + y_data = [y * norm_factor for y in y_data_raw] + if len(y_data) > 0: y_tput_max = \ max(y_data) if max(y_data) > y_tput_max else y_tput_max else: - y_data = itm_data[_VALUE[itm["testtype"]]].to_list() + y_data_raw = itm_data[_VALUE[itm["testtype"]]].to_list() + y_data = [y * norm_factor for y in y_data_raw] if y_data: y_tput_max = \ max(y_data) if max(y_data) > y_tput_max else y_tput_max @@ -178,7 +202,7 @@ def graph_iterative(data: pd.DataFrame, sel:dict, layout: dict) -> tuple: name=( f"{idx + 1}. " f"({nr_of_samples:02d} " - f"run{u's' if nr_of_samples > 1 else u''}) " + f"run{'s' if nr_of_samples > 1 else ''}) " f"{itm['id']}" ), hoverinfo=u"y+name", @@ -190,7 +214,8 @@ def graph_iterative(data: pd.DataFrame, sel:dict, layout: dict) -> tuple: show_tput = True if itm["testtype"] == "pdr": - y_lat = itm_data[_VALUE["pdr-lat"]].to_list() + y_lat_row = itm_data[_VALUE["pdr-lat"]].to_list() + y_lat = [y * norm_factor for y in y_lat_row] if y_lat: y_lat_max = max(y_lat) if max(y_lat) > y_lat_max else y_lat_max nr_of_samples = len(y_lat) @@ -202,7 +227,7 @@ def graph_iterative(data: pd.DataFrame, sel:dict, layout: dict) -> tuple: f"run{u's' if nr_of_samples > 1 else u''}) " f"{itm['id']}" ), - hoverinfo=u"y+name", + hoverinfo="all", boxpoints="all", jitter=0.3, marker=dict(color=_get_color(idx)) @@ -215,24 +240,25 @@ def graph_iterative(data: pd.DataFrame, sel:dict, layout: dict) -> tuple: if show_tput: pl_tput = deepcopy(layout["plot-throughput"]) - pl_tput[u"xaxis"][u"tickvals"] = [i for i in range(len(sel))] - pl_tput[u"xaxis"][u"ticktext"] = [str(i + 1) for i in range(len(sel))] + pl_tput["xaxis"]["tickvals"] = [i for i in range(len(sel))] + pl_tput["xaxis"]["ticktext"] = [str(i + 1) for i in range(len(sel))] if y_tput_max: - pl_tput[u"yaxis"][u"range"] = [0, (int(y_tput_max / 1e6) + 1) * 1e6] + pl_tput["yaxis"]["range"] = [0, (int(y_tput_max / 1e6) + 1) * 1e6] fig_tput = go.Figure(data=tput_traces, layout=pl_tput) if show_latency: pl_lat = deepcopy(layout["plot-latency"]) - pl_lat[u"xaxis"][u"tickvals"] = [i for i in range(len(x_lat))] - pl_lat[u"xaxis"][u"ticktext"] = x_lat + pl_lat["xaxis"]["tickvals"] = [i for i in range(len(x_lat))] + pl_lat["xaxis"]["ticktext"] = x_lat if y_lat_max: - pl_lat[u"yaxis"][u"range"] = [0, (int(y_lat_max / 10) + 1) * 10] + pl_lat["yaxis"]["range"] = [0, (int(y_lat_max / 10) + 1) * 10] fig_lat = go.Figure(data=lat_traces, layout=pl_lat) return fig_tput, fig_lat -def table_comparison(data: pd.DataFrame, sel:dict) -> pd.DataFrame: +def table_comparison(data: pd.DataFrame, sel:dict, + normalize: bool) -> pd.DataFrame: """ """ table = pd.DataFrame( @@ -305,7 +331,7 @@ def graph_hdrh_latency(data: dict, layout: dict) -> go.Figure: yaxis.append(item.value_iterated_to) hovertext.append( f"{_GRAPH_LAT_HDRH_DESC[lat_name]}
" - f"Direction: {(u'W-E', u'E-W')[idx % 2]}
" + f"Direction: {('W-E', 'E-W')[idx % 2]}
" f"Percentile: {prev_perc:.5f}-{percentile:.5f}%
" f"Latency: {item.value_iterated_to}uSec" ) @@ -314,7 +340,7 @@ def graph_hdrh_latency(data: dict, layout: dict) -> go.Figure: yaxis.append(item.value_iterated_to) hovertext.append( f"{_GRAPH_LAT_HDRH_DESC[lat_name]}
" - f"Direction: {(u'W-E', u'E-W')[idx % 2]}
" + f"Direction: {('W-E', 'E-W')[idx % 2]}
" f"Percentile: {prev_perc:.5f}-{percentile:.5f}%
" f"Latency: {item.value_iterated_to}uSec" ) @@ -326,16 +352,16 @@ def graph_hdrh_latency(data: dict, layout: dict) -> go.Figure: x=xaxis, y=yaxis, name=_GRAPH_LAT_HDRH_DESC[lat_name], - mode=u"lines", + mode="lines", legendgroup=_GRAPH_LAT_HDRH_DESC[lat_name], showlegend=bool(idx % 2), line=dict( color=_get_color(int(idx/2)), - dash=u"solid", + dash="solid", width=1 if idx % 2 else 2 ), hovertext=hovertext, - hoverinfo=u"text" + hoverinfo="text" ) ) if traces: