Skip to content

Commit 9277524

Browse files
committed
add r_squared prediction confidence to predicted-flr column
1 parent 7909d77 commit 9277524

File tree

2 files changed

+19
-6
lines changed

2 files changed

+19
-6
lines changed

utilities_common/netstat.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,19 @@ def format_fec_flr(rate):
153153
return "{:.2e}".format(float(rate))
154154

155155

156+
def format_fec_flr_predicted(flr, r_squared):
157+
"""
158+
Show the predicted flr rate with R-squared confidence.
159+
"""
160+
if flr == STATUS_NA:
161+
return STATUS_NA
162+
elif flr == 0:
163+
return "0"
164+
else:
165+
r_squared_pct = r_squared * 100
166+
return "{:.2e} ({:.0f}%)".format(float(flr), r_squared_pct)
167+
168+
156169
def format_util(brate, port_rate):
157170
"""
158171
Calculate the util.

utilities_common/portstat.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import utilities_common.multi_asic as multi_asic_util
1313
from utilities_common.netstat import ns_diff, table_as_json, format_brate, format_prate, \
1414
format_util, format_number_with_comma, format_util_directly, \
15-
format_fec_ber, format_fec_flr
15+
format_fec_ber, format_fec_flr, format_fec_flr_predicted
1616

1717
"""
1818
The order and count of statistics mentioned below needs to be in sync with the values in portstat script
@@ -38,16 +38,16 @@
3838
'TX_OK', 'TX_BPS', 'TX_UTIL', 'TX_ERR', 'TX_DRP', 'TX_OVR']
3939
header_errors_only = ['IFACE', 'STATE', 'RX_ERR', 'RX_DRP', 'RX_OVR', 'TX_ERR', 'TX_DRP', 'TX_OVR']
4040
header_fec_only = ['IFACE', 'STATE', 'FEC_CORR', 'FEC_UNCORR', 'FEC_SYMBOL_ERR', 'FEC_PRE_BER',
41-
'FEC_POST_BER', 'FEC_PRE_BER_MAX', 'FLR(O)', 'FLR(P)']
41+
'FEC_POST_BER', 'FEC_PRE_BER_MAX', 'FLR(O)', 'FLR(P) (Accuracy)']
4242
header_fec_hist_only = ['IFACE', 'BIN0', 'BIN1', 'BIN2', 'BIN3', 'BIN4', 'BIN5', 'BIN6', 'BIN7',
4343
'BIN8', 'BIN9', 'BIN10', 'BIN11', 'BIN12', 'BIN13', 'BIN14', 'BIN15']
4444
header_rates_only = ['IFACE', 'STATE', 'RX_OK', 'RX_BPS', 'RX_PPS', 'RX_UTIL', 'TX_OK', 'TX_BPS', 'TX_PPS', 'TX_UTIL']
4545
header_trim_only = ['IFACE', 'STATE', 'TRIM_PKTS', 'TRIM_TX_PKTS', 'TRIM_DRP_PKTS']
4646

4747
rates_key_list = ['RX_BPS', 'RX_PPS', 'RX_UTIL', 'TX_BPS', 'TX_PPS', 'TX_UTIL', 'FEC_PRE_BER',
48-
'FEC_POST_BER', 'FEC_PRE_BER_MAX', 'FEC_FLR', 'FEC_FLR_PREDICTED']
48+
'FEC_POST_BER', 'FEC_PRE_BER_MAX', 'FEC_FLR', 'FEC_FLR_PREDICTED', 'FEC_FLR_R_SQUARED']
4949
ratestat_fields = ("rx_bps", "rx_pps", "rx_util", "tx_bps", "tx_pps", "tx_util", "fec_pre_ber", "fec_post_ber",
50-
"fec_pre_ber_max", "fec_flr", "fec_flr_predicted")
50+
"fec_pre_ber_max", "fec_flr", "fec_flr_predicted", "fec_flr_r_squared")
5151
RateStats = namedtuple("RateStats", ratestat_fields)
5252

5353
"""
@@ -356,7 +356,7 @@ def get_rates(table_id):
356356
"""
357357
Get the rates from specific table.
358358
"""
359-
fields = ["0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"]
359+
fields = ["0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"]
360360
for pos, name in enumerate(rates_key_list):
361361
full_table_id = RATES_TABLE_PREFIX + table_id
362362
counter_data = self.db.get(self.db.COUNTERS_DB, full_table_id, name)
@@ -662,7 +662,7 @@ def cnstat_diff_print(self, cnstat_new_dict, cnstat_old_dict,
662662
format_fec_ber(rates.fec_post_ber),
663663
format_fec_ber(rates.fec_pre_ber_max),
664664
format_fec_flr(rates.fec_flr),
665-
format_fec_flr(rates.fec_flr_predicted)))
665+
format_fec_flr_predicted(rates.fec_flr_predicted, rates.fec_flr_r_squared)))
666666
elif fec_hist_only:
667667
header = header_fec_hist_only
668668

0 commit comments

Comments
 (0)