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",
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."
}
-REG_EX_VPP_VERSION = re.compile(r"^(\d{2}).(\d{2})-(rc0|rc1|rc2|release$)")
def _get_color(idx: int) -> str:
return version
s_version = str()
- groups = re.search(pattern=REG_EX_VPP_VERSION, string=version)
+ groups = re.search(
+ pattern=re.compile(r"^(\d{2}).(\d{2})-(rc0|rc1|rc2|release$)"),
+ string=version
+ )
if groups:
try:
- s_version = f"{groups.group(1)}.{groups.group(2)}_{groups.group(3)}"
+ s_version = \
+ f"{groups.group(1)}.{groups.group(2)}.{groups.group(3)}".\
+ replace("release", "rls")
except IndexError:
pass
f"^.*[.|-]{nic}.*{itm['framesize']}-{core}-{drv}{itm['test']}-{ttype}$"
df = df[
(df.job.str.endswith(f"{topo}-{arch}")) &
- (df.dut_version.str.contains(itm["dutver"].replace("_", "-"))) &
+ (df.dut_version.str.contains(itm["dutver"].replace(".r", "-r").\
+ replace("rls", "release"))) &
(df.test_id.str.contains(regex_test, regex=True))
]
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:
"""
"""
lat_traces = list()
y_lat_max = 0
x_lat = list()
+ show_latency = False
+ show_tput = False
for idx, itm in enumerate(sel):
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
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",
marker=dict(color=_get_color(idx))
)
tput_traces.append(go.Box(**tput_kwargs))
+ show_tput = True
- show_latency = False
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)
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))
else:
lat_traces.append(go.Box())
- 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))]
- if y_tput_max:
- pl_tput[u"yaxis"][u"range"] = [0, (int(y_tput_max / 1e6) + 1) * 1e6]
- fig_tput = go.Figure(data=tput_traces, layout=pl_tput)
+ if show_tput:
+ pl_tput = deepcopy(layout["plot-throughput"])
+ 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["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(
yaxis.append(item.value_iterated_to)
hovertext.append(
f"<b>{_GRAPH_LAT_HDRH_DESC[lat_name]}</b><br>"
- f"Direction: {(u'W-E', u'E-W')[idx % 2]}<br>"
+ f"Direction: {('W-E', 'E-W')[idx % 2]}<br>"
f"Percentile: {prev_perc:.5f}-{percentile:.5f}%<br>"
f"Latency: {item.value_iterated_to}uSec"
)
yaxis.append(item.value_iterated_to)
hovertext.append(
f"<b>{_GRAPH_LAT_HDRH_DESC[lat_name]}</b><br>"
- f"Direction: {(u'W-E', u'E-W')[idx % 2]}<br>"
+ f"Direction: {('W-E', 'E-W')[idx % 2]}<br>"
f"Percentile: {prev_perc:.5f}-{percentile:.5f}%<br>"
f"Latency: {item.value_iterated_to}uSec"
)
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: