PAL: Comparison tables 74/26774/10
authorTibor Frank <tifrank@cisco.com>
Wed, 29 Apr 2020 09:28:49 +0000 (11:28 +0200)
committerTibor Frank <tifrank@cisco.com>
Thu, 30 Apr 2020 07:27:17 +0000 (07:27 +0000)
- Add tags to columns in "table_comparison"
- replace "table_perf_comparison" by "table_comparison"
- replace "table_perf_comparison_nic" by "table_comparison"

Change-Id: Ie9d871cb2fe04ab2efbc07737806826161a55ef4
Signed-off-by: Tibor Frank <tifrank@cisco.com>
resources/tools/presentation/generator_tables.py
resources/tools/presentation/specification.yaml

index 154e7e7..a72551f 100644 (file)
@@ -50,9 +50,6 @@ def generate_tables(spec, data):
 
     generator = {
         u"table_merged_details": table_merged_details,
-        u"table_perf_comparison": table_perf_comparison,
-        u"table_perf_comparison_nic": table_perf_comparison_nic,
-        u"table_nics_comparison": table_nics_comparison,
         u"table_soak_vs_ndr": table_soak_vs_ndr,
         u"table_perf_trending_dash": table_perf_trending_dash,
         u"table_perf_trending_dash_html": table_perf_trending_dash_html,
@@ -436,62 +433,16 @@ def _tpc_insert_data(target, src, include_tests):
     """
     try:
         if include_tests == u"MRR":
-            target.append(
-                (
-                    src[u"result"][u"receive-rate"],
-                    src[u"result"][u"receive-stdev"]
-                )
-            )
+            target[u"mean"] = src[u"result"][u"receive-rate"]
+            target[u"stdev"] = src[u"result"][u"receive-stdev"]
         elif include_tests == u"PDR":
-            target.append(src[u"throughput"][u"PDR"][u"LOWER"])
+            target[u"data"].append(src[u"throughput"][u"PDR"][u"LOWER"])
         elif include_tests == u"NDR":
-            target.append(src[u"throughput"][u"NDR"][u"LOWER"])
+            target[u"data"].append(src[u"throughput"][u"NDR"][u"LOWER"])
     except (KeyError, TypeError):
         pass
 
 
-def _tpc_sort_table(table):
-    """Sort the table this way:
-
-    1. Put "New in CSIT-XXXX" at the first place.
-    2. Put "See footnote" at the second place.
-    3. Sort the rest by "Delta".
-
-    :param table: Table to sort.
-    :type table: list
-    :returns: Sorted table.
-    :rtype: list
-    """
-
-    tbl_new = list()
-    tbl_see = list()
-    tbl_delta = list()
-    for item in table:
-        if isinstance(item[-1], str):
-            if u"New in CSIT" in item[-1]:
-                tbl_new.append(item)
-            elif u"See footnote" in item[-1]:
-                tbl_see.append(item)
-        else:
-            tbl_delta.append(item)
-
-    # Sort the tables:
-    tbl_new.sort(key=lambda rel: rel[0], reverse=False)
-    tbl_see.sort(key=lambda rel: rel[0], reverse=False)
-    tbl_see.sort(key=lambda rel: rel[-2], reverse=False)
-    tbl_delta.sort(key=lambda rel: rel[0], reverse=False)
-    tbl_delta.sort(key=lambda rel: rel[-2], reverse=True)
-
-    # Put the tables together:
-    table = list()
-    # We do not want "New in CSIT":
-    # table.extend(tbl_new)
-    table.extend(tbl_see)
-    table.extend(tbl_delta)
-
-    return table
-
-
 def _tpc_generate_html_table(header, data, out_file_name, legend=u"",
                              footnote=u"", sort_data=True, title=u"",
                              generate_rst=True):
@@ -585,8 +536,7 @@ def _tpc_generate_html_table(header, data, out_file_name, legend=u"",
 
         buttons = list()
         menu_items = [f"<b>{itm}</b> (ascending)" for itm in header]
-        menu_items_rev = [f"<b>{itm}</b> (descending)" for itm in header]
-        menu_items.extend(menu_items_rev)
+        menu_items.extend([f"<b>{itm}</b> (descending)" for itm in header])
         for idx, hdr in enumerate(menu_items):
             visible = [False, ] * len(menu_items)
             visible[idx] = True
@@ -667,908 +617,6 @@ def _tpc_generate_html_table(header, data, out_file_name, legend=u"",
             rst_file.write(footnote.replace(u"\n", u" |br| ")[1:])
 
 
-def table_perf_comparison(table, input_data):
-    """Generate the table(s) with algorithm: table_perf_comparison
-    specified in the specification file.
-
-    :param table: Table to generate.
-    :param input_data: Data to process.
-    :type table: pandas.Series
-    :type input_data: InputData
-    """
-
-    logging.info(f"  Generating the table {table.get(u'title', u'')} ...")
-
-    # Transform the data
-    logging.info(
-        f"    Creating the data set for the {table.get(u'type', u'')} "
-        f"{table.get(u'title', u'')}."
-    )
-    data = input_data.filter_data(table, continue_on_error=True)
-
-    # Prepare the header of the tables
-    try:
-        header = [u"Test Case", ]
-        legend = u"\nLegend:\n"
-
-        rca_data = None
-        rca = table.get(u"rca", None)
-        if rca:
-            try:
-                with open(rca.get(u"data-file", u""), u"r") as rca_file:
-                    rca_data = load(rca_file, Loader=FullLoader)
-                header.insert(0, rca.get(u"title", u"RCA"))
-                legend += (
-                    u"RCA: Reference to the Root Cause Analysis, see below.\n"
-                )
-            except (YAMLError, IOError) as err:
-                logging.warning(repr(err))
-
-        history = table.get(u"history", list())
-        for item in history:
-            header.extend(
-                [
-                    f"{item[u'title']} Avg({table[u'include-tests']})",
-                    f"{item[u'title']} Stdev({table[u'include-tests']})"
-                ]
-            )
-            legend += (
-                f"{item[u'title']} Avg({table[u'include-tests']}): "
-                f"Mean value of {table[u'include-tests']} [Mpps] computed from "
-                f"a series of runs of the listed tests executed against "
-                f"{item[u'title']}.\n"
-                f"{item[u'title']} Stdev({table[u'include-tests']}): "
-                f"Standard deviation value of {table[u'include-tests']} [Mpps] "
-                f"computed from a series of runs of the listed tests executed "
-                f"against {item[u'title']}.\n"
-            )
-        header.extend(
-            [
-                f"{table[u'reference'][u'title']} "
-                f"Avg({table[u'include-tests']})",
-                f"{table[u'reference'][u'title']} "
-                f"Stdev({table[u'include-tests']})",
-                f"{table[u'compare'][u'title']} "
-                f"Avg({table[u'include-tests']})",
-                f"{table[u'compare'][u'title']} "
-                f"Stdev({table[u'include-tests']})",
-                f"Diff({table[u'reference'][u'title']},"
-                f"{table[u'compare'][u'title']})",
-                u"Stdev(Diff)"
-            ]
-        )
-        header_str = u";".join(header) + u"\n"
-        legend += (
-            f"{table[u'reference'][u'title']} "
-            f"Avg({table[u'include-tests']}): "
-            f"Mean value of {table[u'include-tests']} [Mpps] computed from a "
-            f"series of runs of the listed tests executed against "
-            f"{table[u'reference'][u'title']}.\n"
-            f"{table[u'reference'][u'title']} "
-            f"Stdev({table[u'include-tests']}): "
-            f"Standard deviation value of {table[u'include-tests']} [Mpps] "
-            f"computed from a series of runs of the listed tests executed "
-            f"against {table[u'reference'][u'title']}.\n"
-            f"{table[u'compare'][u'title']} "
-            f"Avg({table[u'include-tests']}): "
-            f"Mean value of {table[u'include-tests']} [Mpps] computed from a "
-            f"series of runs of the listed tests executed against "
-            f"{table[u'compare'][u'title']}.\n"
-            f"{table[u'compare'][u'title']} "
-            f"Stdev({table[u'include-tests']}): "
-            f"Standard deviation value of {table[u'include-tests']} [Mpps] "
-            f"computed from a series of runs of the listed tests executed "
-            f"against {table[u'compare'][u'title']}.\n"
-            f"Diff({table[u'reference'][u'title']},"
-            f"{table[u'compare'][u'title']}): "
-            f"Percentage change calculated for mean values.\n"
-            u"Stdev(Diff): "
-            u"Standard deviation of percentage change calculated for mean "
-            u"values.\n"
-            u"NT: Not Tested\n"
-        )
-    except (AttributeError, KeyError) as err:
-        logging.error(f"The model is invalid, missing parameter: {repr(err)}")
-        return
-
-    # Prepare data to the table:
-    tbl_dict = dict()
-    for job, builds in table[u"reference"][u"data"].items():
-        for build in builds:
-            for tst_name, tst_data in data[job][str(build)].items():
-                tst_name_mod = _tpc_modify_test_name(tst_name)
-                if (u"across topologies" in table[u"title"].lower() or
-                        (u" 3n-" in table[u"title"].lower() and
-                         u" 2n-" in table[u"title"].lower())):
-                    tst_name_mod = tst_name_mod.replace(u"2n1l-", u"")
-                if tbl_dict.get(tst_name_mod, None) is None:
-                    name = tst_data[u'name'].rsplit(u'-', 1)[0]
-                    if u"across testbeds" in table[u"title"].lower() or \
-                            u"across topologies" in table[u"title"].lower():
-                        name = _tpc_modify_displayed_test_name(name)
-                    tbl_dict[tst_name_mod] = {
-                        u"name": name,
-                        u"replace-ref": True,
-                        u"replace-cmp": True,
-                        u"ref-data": list(),
-                        u"cmp-data": list()
-                    }
-                _tpc_insert_data(target=tbl_dict[tst_name_mod][u"ref-data"],
-                                 src=tst_data,
-                                 include_tests=table[u"include-tests"])
-
-    replacement = table[u"reference"].get(u"data-replacement", None)
-    if replacement:
-        rpl_data = input_data.filter_data(
-            table, data=replacement, continue_on_error=True)
-        for job, builds in replacement.items():
-            for build in builds:
-                for tst_name, tst_data in rpl_data[job][str(build)].items():
-                    tst_name_mod = _tpc_modify_test_name(tst_name)
-                    if (u"across topologies" in table[u"title"].lower() or
-                            (u" 3n-" in table[u"title"].lower() and
-                             u" 2n-" in table[u"title"].lower())):
-                        tst_name_mod = tst_name_mod.replace(u"2n1l-", u"")
-                    if tbl_dict.get(tst_name_mod, None) is None:
-                        name = tst_data[u'name'].rsplit(u'-', 1)[0]
-                        if u"across testbeds" in table[u"title"].lower() or \
-                                u"across topologies" in table[u"title"].lower():
-                            name = _tpc_modify_displayed_test_name(name)
-                        tbl_dict[tst_name_mod] = {
-                            u"name": name,
-                            u"replace-ref": False,
-                            u"replace-cmp": True,
-                            u"ref-data": list(),
-                            u"cmp-data": list()
-                        }
-                    if tbl_dict[tst_name_mod][u"replace-ref"]:
-                        tbl_dict[tst_name_mod][u"replace-ref"] = False
-                        tbl_dict[tst_name_mod][u"ref-data"] = list()
-
-                    _tpc_insert_data(
-                        target=tbl_dict[tst_name_mod][u"ref-data"],
-                        src=tst_data,
-                        include_tests=table[u"include-tests"]
-                    )
-
-    for job, builds in table[u"compare"][u"data"].items():
-        for build in builds:
-            for tst_name, tst_data in data[job][str(build)].items():
-                tst_name_mod = _tpc_modify_test_name(tst_name)
-                if (u"across topologies" in table[u"title"].lower() or
-                        (u" 3n-" in table[u"title"].lower() and
-                         u" 2n-" in table[u"title"].lower())):
-                    tst_name_mod = tst_name_mod.replace(u"2n1l-", u"")
-                if tbl_dict.get(tst_name_mod, None) is None:
-                    name = tst_data[u'name'].rsplit(u'-', 1)[0]
-                    if u"across testbeds" in table[u"title"].lower() or \
-                            u"across topologies" in table[u"title"].lower():
-                        name = _tpc_modify_displayed_test_name(name)
-                    tbl_dict[tst_name_mod] = {
-                        u"name": name,
-                        u"replace-ref": False,
-                        u"replace-cmp": True,
-                        u"ref-data": list(),
-                        u"cmp-data": list()
-                    }
-                _tpc_insert_data(
-                    target=tbl_dict[tst_name_mod][u"cmp-data"],
-                    src=tst_data,
-                    include_tests=table[u"include-tests"]
-                )
-
-    replacement = table[u"compare"].get(u"data-replacement", None)
-    if replacement:
-        rpl_data = input_data.filter_data(
-            table, data=replacement, continue_on_error=True)
-        for job, builds in replacement.items():
-            for build in builds:
-                for tst_name, tst_data in rpl_data[job][str(build)].items():
-                    tst_name_mod = _tpc_modify_test_name(tst_name)
-                    if (u"across topologies" in table[u"title"].lower() or
-                            (u" 3n-" in table[u"title"].lower() and
-                             u" 2n-" in table[u"title"].lower())):
-                        tst_name_mod = tst_name_mod.replace(u"2n1l-", u"")
-                    if tbl_dict.get(tst_name_mod, None) is None:
-                        name = tst_data[u'name'].rsplit(u'-', 1)[0]
-                        if u"across testbeds" in table[u"title"].lower() or \
-                                u"across topologies" in table[u"title"].lower():
-                            name = _tpc_modify_displayed_test_name(name)
-                        tbl_dict[tst_name_mod] = {
-                            u"name": name,
-                            u"replace-ref": False,
-                            u"replace-cmp": False,
-                            u"ref-data": list(),
-                            u"cmp-data": list()
-                        }
-                    if tbl_dict[tst_name_mod][u"replace-cmp"]:
-                        tbl_dict[tst_name_mod][u"replace-cmp"] = False
-                        tbl_dict[tst_name_mod][u"cmp-data"] = list()
-
-                    _tpc_insert_data(
-                        target=tbl_dict[tst_name_mod][u"cmp-data"],
-                        src=tst_data,
-                        include_tests=table[u"include-tests"]
-                    )
-
-    for item in history:
-        for job, builds in item[u"data"].items():
-            for build in builds:
-                for tst_name, tst_data in data[job][str(build)].items():
-                    tst_name_mod = _tpc_modify_test_name(tst_name)
-                    if (u"across topologies" in table[u"title"].lower() or
-                            (u" 3n-" in table[u"title"].lower() and
-                             u" 2n-" in table[u"title"].lower())):
-                        tst_name_mod = tst_name_mod.replace(u"2n1l-", u"")
-                    if tbl_dict.get(tst_name_mod, None) is None:
-                        continue
-                    if tbl_dict[tst_name_mod].get(u"history", None) is None:
-                        tbl_dict[tst_name_mod][u"history"] = OrderedDict()
-                    if tbl_dict[tst_name_mod][u"history"].\
-                            get(item[u"title"], None) is None:
-                        tbl_dict[tst_name_mod][u"history"][item[
-                            u"title"]] = list()
-                    try:
-                        if table[u"include-tests"] == u"MRR":
-                            res = (tst_data[u"result"][u"receive-rate"],
-                                   tst_data[u"result"][u"receive-stdev"])
-                        elif table[u"include-tests"] == u"PDR":
-                            res = tst_data[u"throughput"][u"PDR"][u"LOWER"]
-                        elif table[u"include-tests"] == u"NDR":
-                            res = tst_data[u"throughput"][u"NDR"][u"LOWER"]
-                        else:
-                            continue
-                        tbl_dict[tst_name_mod][u"history"][item[u"title"]].\
-                            append(res)
-                    except (TypeError, KeyError):
-                        pass
-
-    tbl_lst = list()
-    for tst_name in tbl_dict:
-        item = [tbl_dict[tst_name][u"name"], ]
-        if history:
-            if tbl_dict[tst_name].get(u"history", None) is not None:
-                for hist_data in tbl_dict[tst_name][u"history"].values():
-                    if hist_data:
-                        if table[u"include-tests"] == u"MRR":
-                            item.append(round(hist_data[0][0] / 1e6, 1))
-                            item.append(round(hist_data[0][1] / 1e6, 1))
-                        else:
-                            item.append(round(mean(hist_data) / 1e6, 1))
-                            item.append(round(stdev(hist_data) / 1e6, 1))
-                    else:
-                        item.extend([u"NT", u"NT"])
-            else:
-                item.extend([u"NT", u"NT"])
-        data_r = tbl_dict[tst_name][u"ref-data"]
-        if data_r:
-            if table[u"include-tests"] == u"MRR":
-                data_r_mean = data_r[0][0]
-                data_r_stdev = data_r[0][1]
-            else:
-                data_r_mean = mean(data_r)
-                data_r_stdev = stdev(data_r)
-            item.append(round(data_r_mean / 1e6, 1))
-            item.append(round(data_r_stdev / 1e6, 1))
-        else:
-            data_r_mean = None
-            data_r_stdev = None
-            item.extend([u"NT", u"NT"])
-        data_c = tbl_dict[tst_name][u"cmp-data"]
-        if data_c:
-            if table[u"include-tests"] == u"MRR":
-                data_c_mean = data_c[0][0]
-                data_c_stdev = data_c[0][1]
-            else:
-                data_c_mean = mean(data_c)
-                data_c_stdev = stdev(data_c)
-            item.append(round(data_c_mean / 1e6, 1))
-            item.append(round(data_c_stdev / 1e6, 1))
-        else:
-            data_c_mean = None
-            data_c_stdev = None
-            item.extend([u"NT", u"NT"])
-        if item[-2] == u"NT":
-            pass
-        elif item[-4] == u"NT":
-            item.append(u"New in CSIT-2001")
-            item.append(u"New in CSIT-2001")
-        elif data_r_mean is not None and data_c_mean is not None:
-            delta, d_stdev = relative_change_stdev(
-                data_r_mean, data_c_mean, data_r_stdev, data_c_stdev
-            )
-            try:
-                item.append(round(delta))
-            except ValueError:
-                item.append(delta)
-            try:
-                item.append(round(d_stdev))
-            except ValueError:
-                item.append(d_stdev)
-        if rca_data:
-            rca_nr = rca_data.get(item[0], u"-")
-            item.insert(0, f"[{rca_nr}]" if rca_nr != u"-" else u"-")
-        if (len(item) == len(header)) and (item[-4] != u"NT"):
-            tbl_lst.append(item)
-
-    tbl_lst = _tpc_sort_table(tbl_lst)
-
-    # Generate csv tables:
-    csv_file = f"{table[u'output-file']}.csv"
-    with open(csv_file, u"wt") as file_handler:
-        file_handler.write(header_str)
-        for test in tbl_lst:
-            file_handler.write(u";".join([str(item) for item in test]) + u"\n")
-
-    txt_file_name = f"{table[u'output-file']}.txt"
-    convert_csv_to_pretty_txt(csv_file, txt_file_name, delimiter=u";")
-
-    footnote = u""
-    with open(txt_file_name, u'a') as txt_file:
-        txt_file.write(legend)
-        if rca_data:
-            footnote = rca_data.get(u"footnote", u"")
-            if footnote:
-                txt_file.write(f"\n{footnote}")
-        txt_file.write(u"\n:END")
-
-    # Generate html table:
-    _tpc_generate_html_table(
-        header,
-        tbl_lst,
-        table[u'output-file'],
-        legend=legend,
-        footnote=footnote,
-        title=table.get(u"title", u"")
-    )
-
-
-def table_perf_comparison_nic(table, input_data):
-    """Generate the table(s) with algorithm: table_perf_comparison
-    specified in the specification file.
-
-    :param table: Table to generate.
-    :param input_data: Data to process.
-    :type table: pandas.Series
-    :type input_data: InputData
-    """
-
-    logging.info(f"  Generating the table {table.get(u'title', u'')} ...")
-
-    # Transform the data
-    logging.info(
-        f"    Creating the data set for the {table.get(u'type', u'')} "
-        f"{table.get(u'title', u'')}."
-    )
-    data = input_data.filter_data(table, continue_on_error=True)
-
-    # Prepare the header of the tables
-    try:
-        header = [u"Test Case", ]
-        legend = u"\nLegend:\n"
-
-        rca_data = None
-        rca = table.get(u"rca", None)
-        if rca:
-            try:
-                with open(rca.get(u"data-file", ""), u"r") as rca_file:
-                    rca_data = load(rca_file, Loader=FullLoader)
-                header.insert(0, rca.get(u"title", "RCA"))
-                legend += (
-                    u"RCA: Reference to the Root Cause Analysis, see below.\n"
-                )
-            except (YAMLError, IOError) as err:
-                logging.warning(repr(err))
-
-        history = table.get(u"history", list())
-        for item in history:
-            header.extend(
-                [
-                    f"{item[u'title']} Avg({table[u'include-tests']})",
-                    f"{item[u'title']} Stdev({table[u'include-tests']})"
-                ]
-            )
-            legend += (
-                f"{item[u'title']} Avg({table[u'include-tests']}): "
-                f"Mean value of {table[u'include-tests']} [Mpps] computed from "
-                f"a series of runs of the listed tests executed against "
-                f"{item[u'title']}.\n"
-                f"{item[u'title']} Stdev({table[u'include-tests']}): "
-                f"Standard deviation value of {table[u'include-tests']} [Mpps] "
-                f"computed from a series of runs of the listed tests executed "
-                f"against {item[u'title']}.\n"
-            )
-        header.extend(
-            [
-                f"{table[u'reference'][u'title']} "
-                f"Avg({table[u'include-tests']})",
-                f"{table[u'reference'][u'title']} "
-                f"Stdev({table[u'include-tests']})",
-                f"{table[u'compare'][u'title']} "
-                f"Avg({table[u'include-tests']})",
-                f"{table[u'compare'][u'title']} "
-                f"Stdev({table[u'include-tests']})",
-                f"Diff({table[u'reference'][u'title']},"
-                f"{table[u'compare'][u'title']})",
-                u"Stdev(Diff)"
-            ]
-        )
-        header_str = u";".join(header) + u"\n"
-        legend += (
-            f"{table[u'reference'][u'title']} "
-            f"Avg({table[u'include-tests']}): "
-            f"Mean value of {table[u'include-tests']} [Mpps] computed from a "
-            f"series of runs of the listed tests executed against "
-            f"{table[u'reference'][u'title']}.\n"
-            f"{table[u'reference'][u'title']} "
-            f"Stdev({table[u'include-tests']}): "
-            f"Standard deviation value of {table[u'include-tests']} [Mpps] "
-            f"computed from a series of runs of the listed tests executed "
-            f"against {table[u'reference'][u'title']}.\n"
-            f"{table[u'compare'][u'title']} "
-            f"Avg({table[u'include-tests']}): "
-            f"Mean value of {table[u'include-tests']} [Mpps] computed from a "
-            f"series of runs of the listed tests executed against "
-            f"{table[u'compare'][u'title']}.\n"
-            f"{table[u'compare'][u'title']} "
-            f"Stdev({table[u'include-tests']}): "
-            f"Standard deviation value of {table[u'include-tests']} [Mpps] "
-            f"computed from a series of runs of the listed tests executed "
-            f"against {table[u'compare'][u'title']}.\n"
-            f"Diff({table[u'reference'][u'title']},"
-            f"{table[u'compare'][u'title']}): "
-            f"Percentage change calculated for mean values.\n"
-            u"Stdev(Diff): "
-            u"Standard deviation of percentage change calculated for mean "
-            u"values.\n"
-            u"NT: Not Tested\n"
-        )
-    except (AttributeError, KeyError) as err:
-        logging.error(f"The model is invalid, missing parameter: {repr(err)}")
-        return
-
-    # Prepare data to the table:
-    tbl_dict = dict()
-    for job, builds in table[u"reference"][u"data"].items():
-        for build in builds:
-            for tst_name, tst_data in data[job][str(build)].items():
-                if table[u"reference"][u"nic"] not in tst_data[u"tags"]:
-                    continue
-                tst_name_mod = _tpc_modify_test_name(tst_name, ignore_nic=True)
-                if (u"across topologies" in table[u"title"].lower() or
-                        (u" 3n-" in table[u"title"].lower() and
-                         u" 2n-" in table[u"title"].lower())):
-                    tst_name_mod = tst_name_mod.replace(u"2n1l-", u"")
-                if tbl_dict.get(tst_name_mod, None) is None:
-                    name = tst_data[u'name'].rsplit(u'-', 1)[0]
-                    if u"across testbeds" in table[u"title"].lower() or \
-                            u"across topologies" in table[u"title"].lower():
-                        name = _tpc_modify_displayed_test_name(name)
-                    tbl_dict[tst_name_mod] = {
-                        u"name": name,
-                        u"replace-ref": True,
-                        u"replace-cmp": True,
-                        u"ref-data": list(),
-                        u"cmp-data": list()
-                    }
-                _tpc_insert_data(
-                    target=tbl_dict[tst_name_mod][u"ref-data"],
-                    src=tst_data,
-                    include_tests=table[u"include-tests"]
-                )
-
-    replacement = table[u"reference"].get(u"data-replacement", None)
-    if replacement:
-        rpl_data = input_data.filter_data(
-            table, data=replacement, continue_on_error=True)
-        for job, builds in replacement.items():
-            for build in builds:
-                for tst_name, tst_data in rpl_data[job][str(build)].items():
-                    if table[u"reference"][u"nic"] not in tst_data[u"tags"]:
-                        continue
-                    tst_name_mod = \
-                        _tpc_modify_test_name(tst_name, ignore_nic=True)
-                    if (u"across topologies" in table[u"title"].lower() or
-                            (u" 3n-" in table[u"title"].lower() and
-                             u" 2n-" in table[u"title"].lower())):
-                        tst_name_mod = tst_name_mod.replace(u"2n1l-", u"")
-                    if tbl_dict.get(tst_name_mod, None) is None:
-                        name = tst_data[u'name'].rsplit(u'-', 1)[0]
-                        if u"across testbeds" in table[u"title"].lower() or \
-                                u"across topologies" in table[u"title"].lower():
-                            name = _tpc_modify_displayed_test_name(name)
-                        tbl_dict[tst_name_mod] = {
-                            u"name": name,
-                            u"replace-ref": False,
-                            u"replace-cmp": True,
-                            u"ref-data": list(),
-                            u"cmp-data": list()
-                        }
-                    if tbl_dict[tst_name_mod][u"replace-ref"]:
-                        tbl_dict[tst_name_mod][u"replace-ref"] = False
-                        tbl_dict[tst_name_mod][u"ref-data"] = list()
-
-                    _tpc_insert_data(
-                        target=tbl_dict[tst_name_mod][u"ref-data"],
-                        src=tst_data,
-                        include_tests=table[u"include-tests"]
-                    )
-
-    for job, builds in table[u"compare"][u"data"].items():
-        for build in builds:
-            for tst_name, tst_data in data[job][str(build)].items():
-                if table[u"compare"][u"nic"] not in tst_data[u"tags"]:
-                    continue
-                tst_name_mod = _tpc_modify_test_name(tst_name, ignore_nic=True)
-                if (u"across topologies" in table[u"title"].lower() or
-                        (u" 3n-" in table[u"title"].lower() and
-                         u" 2n-" in table[u"title"].lower())):
-                    tst_name_mod = tst_name_mod.replace(u"2n1l-", u"")
-                if tbl_dict.get(tst_name_mod, None) is None:
-                    name = tst_data[u'name'].rsplit(u'-', 1)[0]
-                    if u"across testbeds" in table[u"title"].lower() or \
-                            u"across topologies" in table[u"title"].lower():
-                        name = _tpc_modify_displayed_test_name(name)
-                    tbl_dict[tst_name_mod] = {
-                        u"name": name,
-                        u"replace-ref": False,
-                        u"replace-cmp": True,
-                        u"ref-data": list(),
-                        u"cmp-data": list()
-                    }
-                _tpc_insert_data(
-                    target=tbl_dict[tst_name_mod][u"cmp-data"],
-                    src=tst_data,
-                    include_tests=table[u"include-tests"]
-                )
-
-    replacement = table[u"compare"].get(u"data-replacement", None)
-    if replacement:
-        rpl_data = input_data.filter_data(
-            table, data=replacement, continue_on_error=True)
-        for job, builds in replacement.items():
-            for build in builds:
-                for tst_name, tst_data in rpl_data[job][str(build)].items():
-                    if table[u"compare"][u"nic"] not in tst_data[u"tags"]:
-                        continue
-                    tst_name_mod = \
-                        _tpc_modify_test_name(tst_name, ignore_nic=True)
-                    if (u"across topologies" in table[u"title"].lower() or
-                            (u" 3n-" in table[u"title"].lower() and
-                             u" 2n-" in table[u"title"].lower())):
-                        tst_name_mod = tst_name_mod.replace(u"2n1l-", u"")
-                    if tbl_dict.get(tst_name_mod, None) is None:
-                        name = tst_data[u'name'].rsplit(u'-', 1)[0]
-                        if u"across testbeds" in table[u"title"].lower() or \
-                                u"across topologies" in table[u"title"].lower():
-                            name = _tpc_modify_displayed_test_name(name)
-                        tbl_dict[tst_name_mod] = {
-                            u"name": name,
-                            u"replace-ref": False,
-                            u"replace-cmp": False,
-                            u"ref-data": list(),
-                            u"cmp-data": list()
-                        }
-                    if tbl_dict[tst_name_mod][u"replace-cmp"]:
-                        tbl_dict[tst_name_mod][u"replace-cmp"] = False
-                        tbl_dict[tst_name_mod][u"cmp-data"] = list()
-
-                    _tpc_insert_data(
-                        target=tbl_dict[tst_name_mod][u"cmp-data"],
-                        src=tst_data,
-                        include_tests=table[u"include-tests"]
-                    )
-
-    for item in history:
-        for job, builds in item[u"data"].items():
-            for build in builds:
-                for tst_name, tst_data in data[job][str(build)].items():
-                    if item[u"nic"] not in tst_data[u"tags"]:
-                        continue
-                    tst_name_mod = \
-                        _tpc_modify_test_name(tst_name, ignore_nic=True)
-                    if (u"across topologies" in table[u"title"].lower() or
-                            (u" 3n-" in table[u"title"].lower() and
-                             u" 2n-" in table[u"title"].lower())):
-                        tst_name_mod = tst_name_mod.replace(u"2n1l-", u"")
-                    if tbl_dict.get(tst_name_mod, None) is None:
-                        continue
-                    if tbl_dict[tst_name_mod].get(u"history", None) is None:
-                        tbl_dict[tst_name_mod][u"history"] = OrderedDict()
-                    if tbl_dict[tst_name_mod][u"history"].\
-                            get(item[u"title"], None) is None:
-                        tbl_dict[tst_name_mod][u"history"][item[
-                            u"title"]] = list()
-                    try:
-                        if table[u"include-tests"] == u"MRR":
-                            res = (tst_data[u"result"][u"receive-rate"],
-                                   tst_data[u"result"][u"receive-stdev"])
-                        elif table[u"include-tests"] == u"PDR":
-                            res = tst_data[u"throughput"][u"PDR"][u"LOWER"]
-                        elif table[u"include-tests"] == u"NDR":
-                            res = tst_data[u"throughput"][u"NDR"][u"LOWER"]
-                        else:
-                            continue
-                        tbl_dict[tst_name_mod][u"history"][item[u"title"]].\
-                            append(res)
-                    except (TypeError, KeyError):
-                        pass
-
-    tbl_lst = list()
-    for tst_name in tbl_dict:
-        item = [tbl_dict[tst_name][u"name"], ]
-        if history:
-            if tbl_dict[tst_name].get(u"history", None) is not None:
-                for hist_data in tbl_dict[tst_name][u"history"].values():
-                    if hist_data:
-                        if table[u"include-tests"] == u"MRR":
-                            item.append(round(hist_data[0][0] / 1e6, 1))
-                            item.append(round(hist_data[0][1] / 1e6, 1))
-                        else:
-                            item.append(round(mean(hist_data) / 1e6, 1))
-                            item.append(round(stdev(hist_data) / 1e6, 1))
-                    else:
-                        item.extend([u"NT", u"NT"])
-            else:
-                item.extend([u"NT", u"NT"])
-        data_r = tbl_dict[tst_name][u"ref-data"]
-        if data_r:
-            if table[u"include-tests"] == u"MRR":
-                data_r_mean = data_r[0][0]
-                data_r_stdev = data_r[0][1]
-            else:
-                data_r_mean = mean(data_r)
-                data_r_stdev = stdev(data_r)
-            item.append(round(data_r_mean / 1e6, 1))
-            item.append(round(data_r_stdev / 1e6, 1))
-        else:
-            data_r_mean = None
-            data_r_stdev = None
-            item.extend([u"NT", u"NT"])
-        data_c = tbl_dict[tst_name][u"cmp-data"]
-        if data_c:
-            if table[u"include-tests"] == u"MRR":
-                data_c_mean = data_c[0][0]
-                data_c_stdev = data_c[0][1]
-            else:
-                data_c_mean = mean(data_c)
-                data_c_stdev = stdev(data_c)
-            item.append(round(data_c_mean / 1e6, 1))
-            item.append(round(data_c_stdev / 1e6, 1))
-        else:
-            data_c_mean = None
-            data_c_stdev = None
-            item.extend([u"NT", u"NT"])
-        if item[-2] == u"NT":
-            pass
-        elif item[-4] == u"NT":
-            item.append(u"New in CSIT-2001")
-            item.append(u"New in CSIT-2001")
-        elif data_r_mean is not None and data_c_mean is not None:
-            delta, d_stdev = relative_change_stdev(
-                data_r_mean, data_c_mean, data_r_stdev, data_c_stdev
-            )
-            try:
-                item.append(round(delta))
-            except ValueError:
-                item.append(delta)
-            try:
-                item.append(round(d_stdev))
-            except ValueError:
-                item.append(d_stdev)
-        if rca_data:
-            rca_nr = rca_data.get(item[0], u"-")
-            item.insert(0, f"[{rca_nr}]" if rca_nr != u"-" else u"-")
-        if (len(item) == len(header)) and (item[-4] != u"NT"):
-            tbl_lst.append(item)
-
-    tbl_lst = _tpc_sort_table(tbl_lst)
-
-    # Generate csv tables:
-    csv_file = f"{table[u'output-file']}.csv"
-    with open(csv_file, u"wt") as file_handler:
-        file_handler.write(header_str)
-        for test in tbl_lst:
-            file_handler.write(u";".join([str(item) for item in test]) + u"\n")
-
-    txt_file_name = f"{table[u'output-file']}.txt"
-    convert_csv_to_pretty_txt(csv_file, txt_file_name, delimiter=u";")
-
-    footnote = u""
-    with open(txt_file_name, u'a') as txt_file:
-        txt_file.write(legend)
-        if rca_data:
-            footnote = rca_data.get(u"footnote", u"")
-            if footnote:
-                txt_file.write(f"\n{footnote}")
-        txt_file.write(u"\n:END")
-
-    # Generate html table:
-    _tpc_generate_html_table(
-        header,
-        tbl_lst,
-        table[u'output-file'],
-        legend=legend,
-        footnote=footnote,
-        title=table.get(u"title", u"")
-    )
-
-
-def table_nics_comparison(table, input_data):
-    """Generate the table(s) with algorithm: table_nics_comparison
-    specified in the specification file.
-
-    :param table: Table to generate.
-    :param input_data: Data to process.
-    :type table: pandas.Series
-    :type input_data: InputData
-    """
-
-    logging.info(f"  Generating the table {table.get(u'title', u'')} ...")
-
-    # Transform the data
-    logging.info(
-        f"    Creating the data set for the {table.get(u'type', u'')} "
-        f"{table.get(u'title', u'')}."
-    )
-    data = input_data.filter_data(table, continue_on_error=True)
-
-    # Prepare the header of the tables
-    try:
-        header = [
-            u"Test Case",
-            f"{table[u'reference'][u'title']} "
-            f"Avg({table[u'include-tests']})",
-            f"{table[u'reference'][u'title']} "
-            f"Stdev({table[u'include-tests']})",
-            f"{table[u'compare'][u'title']} "
-            f"Avg({table[u'include-tests']})",
-            f"{table[u'compare'][u'title']} "
-            f"Stdev({table[u'include-tests']})",
-            f"Diff({table[u'reference'][u'title']},"
-            f"{table[u'compare'][u'title']})",
-            u"Stdev(Diff)"
-        ]
-        legend = (
-            u"\nLegend:\n"
-            f"{table[u'reference'][u'title']} "
-            f"Avg({table[u'include-tests']}): "
-            f"Mean value of {table[u'include-tests']} [Mpps] computed from a "
-            f"series of runs of the listed tests executed using "
-            f"{table[u'reference'][u'title']} NIC.\n"
-            f"{table[u'reference'][u'title']} "
-            f"Stdev({table[u'include-tests']}): "
-            f"Standard deviation value of {table[u'include-tests']} [Mpps] "
-            f"computed from a series of runs of the listed tests executed "
-            f"using {table[u'reference'][u'title']} NIC.\n"
-            f"{table[u'compare'][u'title']} "
-            f"Avg({table[u'include-tests']}): "
-            f"Mean value of {table[u'include-tests']} [Mpps] computed from a "
-            f"series of runs of the listed tests executed using "
-            f"{table[u'compare'][u'title']} NIC.\n"
-            f"{table[u'compare'][u'title']} "
-            f"Stdev({table[u'include-tests']}): "
-            f"Standard deviation value of {table[u'include-tests']} [Mpps] "
-            f"computed from a series of runs of the listed tests executed "
-            f"using {table[u'compare'][u'title']} NIC.\n"
-            f"Diff({table[u'reference'][u'title']},"
-            f"{table[u'compare'][u'title']}): "
-            f"Percentage change calculated for mean values.\n"
-            u"Stdev(Diff): "
-            u"Standard deviation of percentage change calculated for mean "
-            u"values.\n"
-            u":END"
-        )
-
-    except (AttributeError, KeyError) as err:
-        logging.error(f"The model is invalid, missing parameter: {repr(err)}")
-        return
-
-    # Prepare data to the table:
-    tbl_dict = dict()
-    for job, builds in table[u"data"].items():
-        for build in builds:
-            for tst_name, tst_data in data[job][str(build)].items():
-                tst_name_mod = _tpc_modify_test_name(tst_name, ignore_nic=True)
-                if tbl_dict.get(tst_name_mod, None) is None:
-                    name = tst_data[u'name'].rsplit(u'-', 1)[0]
-                    tbl_dict[tst_name_mod] = {
-                        u"name": name,
-                        u"ref-data": list(),
-                        u"cmp-data": list()
-                    }
-                try:
-                    if table[u"include-tests"] == u"MRR":
-                        result = (tst_data[u"result"][u"receive-rate"],
-                                  tst_data[u"result"][u"receive-stdev"])
-                    elif table[u"include-tests"] == u"PDR":
-                        result = tst_data[u"throughput"][u"PDR"][u"LOWER"]
-                    elif table[u"include-tests"] == u"NDR":
-                        result = tst_data[u"throughput"][u"NDR"][u"LOWER"]
-                    else:
-                        continue
-
-                    if result and \
-                            table[u"reference"][u"nic"] in tst_data[u"tags"]:
-                        tbl_dict[tst_name_mod][u"ref-data"].append(result)
-                    elif result and \
-                            table[u"compare"][u"nic"] in tst_data[u"tags"]:
-                        tbl_dict[tst_name_mod][u"cmp-data"].append(result)
-                except (TypeError, KeyError) as err:
-                    logging.debug(f"No data for {tst_name}\n{repr(err)}")
-                    # No data in output.xml for this test
-
-    tbl_lst = list()
-    for tst_name in tbl_dict:
-        item = [tbl_dict[tst_name][u"name"], ]
-        data_r = tbl_dict[tst_name][u"ref-data"]
-        if data_r:
-            if table[u"include-tests"] == u"MRR":
-                data_r_mean = data_r[0][0]
-                data_r_stdev = data_r[0][1]
-            else:
-                data_r_mean = mean(data_r)
-                data_r_stdev = stdev(data_r)
-            item.append(round(data_r_mean / 1e6, 1))
-            item.append(round(data_r_stdev / 1e6, 1))
-        else:
-            data_r_mean = None
-            data_r_stdev = None
-            item.extend([None, None])
-        data_c = tbl_dict[tst_name][u"cmp-data"]
-        if data_c:
-            if table[u"include-tests"] == u"MRR":
-                data_c_mean = data_c[0][0]
-                data_c_stdev = data_c[0][1]
-            else:
-                data_c_mean = mean(data_c)
-                data_c_stdev = stdev(data_c)
-            item.append(round(data_c_mean / 1e6, 1))
-            item.append(round(data_c_stdev / 1e6, 1))
-        else:
-            data_c_mean = None
-            data_c_stdev = None
-            item.extend([None, None])
-        if data_r_mean is not None and data_c_mean is not None:
-            delta, d_stdev = relative_change_stdev(
-                data_r_mean, data_c_mean, data_r_stdev, data_c_stdev
-            )
-            try:
-                item.append(round(delta))
-            except ValueError:
-                item.append(delta)
-            try:
-                item.append(round(d_stdev))
-            except ValueError:
-                item.append(d_stdev)
-            tbl_lst.append(item)
-
-    # Sort the table according to the relative change
-    tbl_lst.sort(key=lambda rel: rel[-1], reverse=True)
-
-    # Generate csv tables:
-    with open(f"{table[u'output-file']}.csv", u"wt") as file_handler:
-        file_handler.write(u";".join(header) + u"\n")
-        for test in tbl_lst:
-            file_handler.write(u";".join([str(item) for item in test]) + u"\n")
-
-    convert_csv_to_pretty_txt(f"{table[u'output-file']}.csv",
-                              f"{table[u'output-file']}.txt",
-                              delimiter=u";")
-
-    with open(table[u'output-file'], u'a') as txt_file:
-        txt_file.write(legend)
-
-    # Generate html table:
-    _tpc_generate_html_table(
-        header,
-        tbl_lst,
-        table[u'output-file'],
-        legend=legend,
-        title=table.get(u"title", u"")
-    )
-
-
 def table_soak_vs_ndr(table, input_data):
     """Generate the table(s) with algorithm: table_soak_vs_ndr
     specified in the specification file.
@@ -2404,6 +1452,7 @@ def table_comparison(table, input_data):
         if col.get(u"data-set", None) is None:
             logging.warning(f"No data for column {col.get(u'title', u'')}")
             continue
+        tag = col.get(u"tag", None)
         data = input_data.filter_data(
             table,
             params=[u"throughput", u"result", u"name", u"parent", u"tags"],
@@ -2417,8 +1466,11 @@ def table_comparison(table, input_data):
         for builds in data.values:
             for build in builds:
                 for tst_name, tst_data in build.items():
+                    if tag and tag not in tst_data[u"tags"]:
+                        continue
                     tst_name_mod = \
-                        _tpc_modify_test_name(tst_name).replace(u"2n1l-", u"")
+                        _tpc_modify_test_name(tst_name, ignore_nic=True).\
+                        replace(u"2n1l-", u"")
                     if col_data[u"data"].get(tst_name_mod, None) is None:
                         name = tst_data[u'name'].rsplit(u'-', 1)[0]
                         if u"across testbeds" in table[u"title"].lower() or \
@@ -2432,7 +1484,7 @@ def table_comparison(table, input_data):
                             u"stdev": None
                         }
                     _tpc_insert_data(
-                        target=col_data[u"data"][tst_name_mod][u"data"],
+                        target=col_data[u"data"][tst_name_mod],
                         src=tst_data,
                         include_tests=table[u"include-tests"]
                     )
@@ -2448,8 +1500,10 @@ def table_comparison(table, input_data):
             for builds in rpl_data.values:
                 for build in builds:
                     for tst_name, tst_data in build.items():
+                        if tag and tag not in tst_data[u"tags"]:
+                            continue
                         tst_name_mod = \
-                            _tpc_modify_test_name(tst_name).\
+                            _tpc_modify_test_name(tst_name, ignore_nic=True).\
                             replace(u"2n1l-", u"")
                         if col_data[u"data"].get(tst_name_mod, None) is None:
                             name = tst_data[u'name'].rsplit(u'-', 1)[0]
@@ -2468,7 +1522,7 @@ def table_comparison(table, input_data):
                             col_data[u"data"][tst_name_mod][u"replace"] = False
                             col_data[u"data"][tst_name_mod][u"data"] = list()
                         _tpc_insert_data(
-                            target=col_data[u"data"][tst_name_mod][u"data"],
+                            target=col_data[u"data"][tst_name_mod],
                             src=tst_data,
                             include_tests=table[u"include-tests"]
                         )
@@ -2478,11 +1532,6 @@ def table_comparison(table, input_data):
                 if tst_data[u"data"]:
                     tst_data[u"mean"] = mean(tst_data[u"data"])
                     tst_data[u"stdev"] = stdev(tst_data[u"data"])
-        elif table[u"include-tests"] in (u"MRR", ):
-            for tst_name, tst_data in col_data[u"data"].items():
-                if tst_data[u"data"]:
-                    tst_data[u"mean"] = tst_data[u"data"][0]
-                    tst_data[u"stdev"] = tst_data[u"data"][0]
 
         cols.append(col_data)
 
index f30edbd..af224cf 100644 (file)
         - 31  # NDRPDR sel
         - 32  # NDRPDR sel
         - 34  # NDRPDR sel
-    vpp-performance-changes-3n-hsw:
-      - "vpp-performance-changes-3n-hsw-h1"
-      - "vpp-performance-changes-3n-hsw-ref"
-      - "vpp-performance-changes-3n-hsw-cmp"
 
     vpp-performance-changes-3n-skx-h1:
       csit-vpp-perf-verify-1904-3n-skx:
         - 72  # NDRPDR sel - new2001.0 - vpp build: 20.01.0-release, new BIOS and ucode, irqbalance set
         - 76  # NDRPDR sel - new2001.0 - vpp build: 20.01.0-release, new BIOS and ucode, irqbalance set
         - 77  # NDRPDR sel - new2001.0 - vpp build: 20.01.0-release, new BIOS and ucode, irqbalance set
-    vpp-performance-changes-3n-skx:
-      - "vpp-performance-changes-3n-skx-h1"
-      - "vpp-performance-changes-3n-skx-ref"
-      - "vpp-performance-changes-3n-skx-cmp"
 
     vpp-performance-changes-2n-skx-h1:
       csit-vpp-perf-verify-1904-2n-skx:
         - 152  # NDRPDR sel - new2001.0 - vpp build: 20.01.0-release, new BIOS and ucode, irqbalance set
         - 153  # NDRPDR sel - new2001.0 - vpp build: 20.01.0-release, new BIOS and ucode, irqbalance set
         - 154  # NDRPDR sel - new2001.0 - vpp build: 20.01.0-release, new BIOS and ucode, irqbalance set
-    vpp-performance-changes-2n-skx:
-      - "vpp-performance-changes-2n-skx-h1"
-      - "vpp-performance-changes-2n-skx-ref"
-      - "vpp-performance-changes-2n-skx-cmp"
 
     vpp-performance-changes-nfv-2n-skx-ref:
       csit-vpp-perf-verify-1908-2n-skx:
       csit-vpp-perf-verify-2001-2n-skx:
         - 30  # NFV
         - 31  # NFV
-    vpp-performance-changes-nfv-2n-skx:
-      - "vpp-performance-changes-nfv-2n-skx-ref"
-      - "vpp-performance-changes-nfv-2n-skx-cmp"
 
     vpp-performance-changes-2n-dnv-ref:
       csit-vpp-perf-verify-1908-2n-dnv:
         - 11  # NDRPDR sel
         - 13  # NDRPDR sel
         - 16  # NDRPDR sel
-    vpp-performance-changes-2n-dnv:
-      - "vpp-performance-changes-2n-dnv-ref"
-      - "vpp-performance-changes-2n-dnv-cmp"
 
     vpp-performance-changes-3n-dnv-ref:
       csit-vpp-perf-verify-1908-3n-dnv:
         - 16  # NDRPDR sel
         - 17  # NDRPDR sel
         - 18  # NDRPDR sel
-    vpp-performance-changes-3n-dnv:
-      - "vpp-performance-changes-3n-dnv-ref"
-      - "vpp-performance-changes-3n-dnv-cmp"
 
     vpp-performance-changes-3n-tsh-ref:
       csit-vpp-perf-verify-1908-3n-tsh:
         - 14  # NDRPDR sel
         - 15  # NDRPDR sel
         - 21  # NDRPDR sel
-    vpp-performance-changes-3n-tsh:
-      - "vpp-performance-changes-3n-tsh-ref"
-      - "vpp-performance-changes-3n-tsh-cmp"
 
     vpp-soak-vs-ndr-2n-skx-ref:
       csit-vpp-perf-verify-2001-2n-skx:
     vpp-performance-changes-3n-hsw-mrr-cmp:
       csit-vpp-perf-verify-2001-3n-hsw:
         - 17  # MRR sel
-    vpp-performance-changes-3n-hsw-mrr:
-      - "vpp-performance-changes-3n-hsw-mrr-h1"
-      - "vpp-performance-changes-3n-hsw-mrr-ref"
-      - "vpp-performance-changes-3n-hsw-mrr-cmp"
 
     vpp-performance-changes-3n-skx-mrr-h1:
       csit-vpp-perf-verify-1904-3n-skx:
       csit-vpp-perf-verify-2001-3n-skx:
         - 50  # MRR sel
         - 53  # MRR sel addition
-    vpp-performance-changes-3n-skx-mrr:
-      - "vpp-performance-changes-3n-skx-mrr-h1"
-      - "vpp-performance-changes-3n-skx-mrr-ref"
-      - "vpp-performance-changes-3n-skx-mrr-cmp"
 
     vpp-performance-changes-2n-skx-mrr-h1:
       csit-vpp-perf-verify-1904-2n-skx:
       csit-vpp-perf-verify-2001-2n-skx:
         - 101 # MRR sel
         - 128 # MRR sel addition
-    vpp-performance-changes-2n-skx-mrr:
-      - "vpp-performance-changes-2n-skx-mrr-h1"
-      - "vpp-performance-changes-2n-skx-mrr-ref"
-      - "vpp-performance-changes-2n-skx-mrr-cmp"
 
     vpp-performance-changes-nfv-2n-skx-mrr-ref:
       csit-vpp-perf-verify-1908-2n-skx:
       # csit-vpp-perf-verify-2001-2n-skx:
       csit-vpp-perf-verify-1908-2n-skx:
         - 71  # NFV MRR
-    vpp-performance-changes-nfv-2n-skx-mrr:
-      - "vpp-performance-changes-nfv-2n-skx-mrr-ref"
-      - "vpp-performance-changes-nfv-2n-skx-mrr-cmp"
 
     vpp-performance-changes-2n-dnv-mrr-ref:
       csit-vpp-perf-verify-1908-2n-dnv:
     vpp-performance-changes-2n-dnv-mrr-cmp:
       csit-vpp-perf-verify-2001-2n-dnv:
         - 12  # MRR sel
-    vpp-performance-changes-2n-dnv-mrr:
-      - "vpp-performance-changes-2n-dnv-mrr-ref"
-      - "vpp-performance-changes-2n-dnv-mrr-cmp"
 
     vpp-performance-changes-3n-dnv-mrr-ref:
       csit-vpp-perf-verify-1908-3n-dnv:
     vpp-performance-changes-3n-dnv-mrr-cmp:
       csit-vpp-perf-verify-2001-3n-dnv:
         - 11  # MRR sel
-    vpp-performance-changes-3n-dnv-mrr:
-      - "vpp-performance-changes-3n-dnv-mrr-ref"
-      - "vpp-performance-changes-3n-dnv-mrr-cmp"
 
     vpp-performance-changes-3n-tsh-mrr-ref:
       csit-vpp-perf-verify-1908-3n-tsh:
     vpp-performance-changes-3n-tsh-mrr-cmp:
       csit-vpp-perf-verify-2001-3n-tsh:
         - 9   # MRR sel
-    vpp-performance-changes-3n-tsh-mrr:
-      - "vpp-performance-changes-3n-tsh-mrr-ref"
-      - "vpp-performance-changes-3n-tsh-mrr-cmp"
 
     dpdk-performance-changes-3n-hsw-h1:
       csit-dpdk-perf-verify-1904-3n-hsw:
         - 22  # NDRPDR sel
         - 23  # NDRPDR sel
         - 24  # NDRPDR sel
-    dpdk-performance-changes-3n-hsw:
-      - "dpdk-performance-changes-3n-hsw-h1"
-      - "dpdk-performance-changes-3n-hsw-ref"
-      - "dpdk-performance-changes-3n-hsw-cmp"
 
     dpdk-performance-changes-3n-skx-h1:
       csit-dpdk-perf-verify-1904-3n-skx:
         - 46  # NDRPDR sel x710
         - 47  # NDRPDR sel x710
         - 48  # NDRPDR sel x710
-    dpdk-performance-changes-3n-skx:
-      - "dpdk-performance-changes-3n-skx-h1"
-      - "dpdk-performance-changes-3n-skx-ref"
-      - "dpdk-performance-changes-3n-skx-cmp"
 
     dpdk-performance-changes-2n-skx-h1:
       csit-dpdk-perf-verify-1904-2n-skx:
         - 50  # NDRPDR sel x710
         - 51  # NDRPDR sel x710
         - 54  # NDRPDR sel x710
-    dpdk-performance-changes-2n-skx:
-      - "dpdk-performance-changes-2n-skx-h1"
-      - "dpdk-performance-changes-2n-skx-ref"
-      - "dpdk-performance-changes-2n-skx-cmp"
 
     # Compare testbeds
 
         - 72  # NDRPDR sel - new2001.0 - vpp build: 20.01.0-release, new BIOS and ucode, irqbalance set
         - 76  # NDRPDR sel - new2001.0 - vpp build: 20.01.0-release, new BIOS and ucode, irqbalance set
         - 77  # NDRPDR sel - new2001.0 - vpp build: 20.01.0-release, new BIOS and ucode, irqbalance set
-    vpp-compare-testbeds:
-      - "vpp-compare-testbeds-ref"
-      - "vpp-compare-testbeds-cmp"
 
     vpp-compare-testbeds-skx-clx-ref:
       csit-vpp-perf-verify-2001-2n-skx:
         - 47  # NDRPDR sel
         - 48  # NDRPDR sel
         - 49  # NDRPDR sel
-    vpp-compare-testbeds-skx-clx:
-      - "vpp-compare-testbeds-skx-clx-ref"
-      - "vpp-compare-testbeds-skx-clx-cmp"
 
     vpp-compare-testbeds-hsw-clx-ref:
       csit-vpp-perf-verify-2001-3n-hsw:
         - 47  # NDRPDR sel
         - 48  # NDRPDR sel
         - 49  # NDRPDR sel
-    vpp-compare-testbeds-hsw-clx:
-      - "vpp-compare-testbeds-hsw-clx-ref"
-      - "vpp-compare-testbeds-hsw-clx-cmp"
 
     vpp-compare-testbeds-mrr-ref:
       csit-vpp-perf-verify-2001-3n-hsw:
       csit-vpp-perf-verify-2001-3n-skx:
         - 50  # MRR sel
         - 53  # MRR sel addition
-    vpp-compare-testbeds-mrr:
-      - "vpp-compare-testbeds-mrr-ref"
-      - "vpp-compare-testbeds-mrr-cmp"
 
     vpp-compare-testbeds-mrr-skx-clx-ref:
       csit-vpp-perf-verify-2001-2n-skx:
     vpp-compare-testbeds-mrr-skx-clx-cmp:
       csit-vpp-perf-verify-2001-2n-clx:
         - 39  # MRR
-    vpp-compare-testbeds-mrr-skx-clx:
-      - "vpp-compare-testbeds-mrr-skx-clx-ref"
-      - "vpp-compare-testbeds-mrr-skx-clx-cmp"
 
     vpp-compare-testbeds-mrr-hsw-clx-ref:
       csit-vpp-perf-verify-2001-3n-hsw:
     vpp-compare-testbeds-mrr-hsw-clx-cmp:
       csit-vpp-perf-verify-2001-2n-clx:
         - 39  # MRR
-    vpp-compare-testbeds-mrr-hsw-clx:
-      - "vpp-compare-testbeds-mrr-hsw-clx-ref"
-      - "vpp-compare-testbeds-mrr-hsw-clx-cmp"
 
     dpdk-compare-testbeds-ref:
       csit-dpdk-perf-verify-2001-3n-hsw:
         - 46  # NDRPDR sel x710
         - 47  # NDRPDR sel x710
         - 48  # NDRPDR sel x710
-    dpdk-compare-testbeds:
-      - "dpdk-compare-testbeds-ref"
-      - "dpdk-compare-testbeds-cmp"
 
     dpdk-compare-testbeds-skx-clx-ref:
       csit-dpdk-perf-verify-2001-2n-skx:
         - 33  # NDRPDR sel
         - 34  # NDRPDR sel
 
-    dpdk-compare-testbeds-skx-clx:
-      - "dpdk-compare-testbeds-skx-clx-ref"
-      - "dpdk-compare-testbeds-skx-clx-cmp"
-
     # Compare topologies
 
     vpp-compare-topologies-ref:
         - 152  # NDRPDR sel - new2001.0 - vpp build: 20.01.0-release, new BIOS and ucode, irqbalance set
         - 153  # NDRPDR sel - new2001.0 - vpp build: 20.01.0-release, new BIOS and ucode, irqbalance set
         - 154  # NDRPDR sel - new2001.0 - vpp build: 20.01.0-release, new BIOS and ucode, irqbalance set
-    vpp-compare-topologies:
-      - "vpp-compare-topologies-ref"
-      - "vpp-compare-topologies-cmp"
 
     vpp-compare-topologies-mrr-ref:
       csit-vpp-perf-verify-2001-3n-skx:
       csit-vpp-perf-verify-2001-2n-skx:
         - 101 # MRR sel
         - 128 # MRR sel addition
-    vpp-compare-topologies-mrr:
-      - "vpp-compare-topologies-mrr-ref"
-      - "vpp-compare-topologies-mrr-cmp"
 
     dpdk-compare-topologies-ref:
       csit-dpdk-perf-verify-2001-3n-skx:
         - 50  # NDRPDR sel x710
         - 51  # NDRPDR sel x710
         - 54  # NDRPDR sel x710
-    dpdk-compare-topologies:
-      - "dpdk-compare-topologies-ref"
-      - "dpdk-compare-topologies-cmp"
 
   plot-layouts:
 
       - 1   # NDRPDR sel
       - 2   # NDRPDR sel
     csit-vpp-perf-verify-2001-3n-skx:
-#      - 45  # NDRPDR sel
-#      - 46  # NDRPDR sel
-#      - 47  # NDRPDR sel
-#      - 48  # NDRPDR sel
-#      - 49  # NDRPDR sel
-#      - 51  # NDRPDR sel
-#      - 52  # NDRPDR sel
-#      - 59  # NDRPDR sel
-#      - 65  # NDRPDR sel
-#      - 66  # NDRPDR sel
-#      - 54  # NDRPDR sel addition
-#      - 55  # NDRPDR sel addition
-#      - 56  # NDRPDR sel addition
-#      - 57  # NDRPDR sel addition
-#      - 58  # NDRPDR sel addition
-#      - 60  # NDRPDR sel addition
-#      - 61  # NDRPDR sel addition
-#      - 62  # NDRPDR sel addition
-#      - 63  # NDRPDR sel addition
-#      - 64  # NDRPDR sel addition
       - 69  # NDRPDR sel - new2001.0 - vpp build: 20.01.0-release, new BIOS and ucode, irqbalance set
       - 71  # NDRPDR sel - new2001.0 - vpp build: 20.01.0-release, new BIOS and ucode, irqbalance set
       - 72  # NDRPDR sel - new2001.0 - vpp build: 20.01.0-release, new BIOS and ucode, irqbalance set
       - 97  # NDRPDR sel vhost - old1908 - vpp build: 19.08-release
       - 98  # NDRPDR sel vhost - old1908 - vpp build: 19.08-release
       - 69  # MRR sel - old1908 - vpp build: 19.08-release
-#      - 22  # NFV
-#      - 31  # NFV
-#      - 32  # NFV
-#      - 71  # NFV MRR
     csit-vpp-perf-verify-1908_1-2n-skx:
       - 3   # NDRPDR sel - old1908.1 - vpp build: 19.08.1-release, old BIOS and ucode
       - 4   # NDRPDR sel - old1908.1 - vpp build: 19.08.1-release, old BIOS and ucode
       - 9   # NDRPDR sel
       - 10  # NDRPDR sel
     csit-vpp-perf-verify-2001-2n-skx:
-#      - 92  # NDRPDR sel - old
-#      - 93  # NDRPDR sel - old
-#      - 94  # NDRPDR sel - old
-#      - 95  # NDRPDR sel - old
-#      - 96  # NDRPDR sel - old
-#      - 97  # NDRPDR sel - old
-#      - 98  # NDRPDR sel - old
-#      - 99  # NDRPDR sel - old
-#      - 100 # NDRPDR sel - old
-#      - 102 # NDRPDR sel - old
-#      - 129 # NDRPDR sel addition - old
-#      - 130 # NDRPDR sel addition - old
-#      - 131 # NDRPDR sel addition - old
-#      - 132 # NDRPDR sel addition - old
-#      - 133 # NDRPDR sel addition - old
-#      - 134 # NDRPDR sel addition - old
-#      - 135 # NDRPDR sel addition - old
-#      - 136 # NDRPDR sel addition - old
-#      - 137 # NDRPDR sel addition - old
-#      - 138 # NDRPDR sel addition - old
       - 143  # NDRPDR sel - new2001.0 - vpp build: 20.01.0-release, new BIOS and ucode, irqbalance set
       - 146  # NDRPDR sel - new2001.0 - vpp build: 20.01.0-release, new BIOS and ucode, irqbalance set
       - 147  # NDRPDR sel - new2001.0 - vpp build: 20.01.0-release, new BIOS and ucode, irqbalance set
       - 51  # NDRPDR sel x710
       - 54  # NDRPDR sel x710
 
-
     csit-dpdk-perf-verify-2001-2n-clx:
       - 15  # NDRPDR sel
       - 16  # NDRPDR sel
 # VPP Compare NICs 3n-skx 2t1c ndr
 - type: "table"
   title: "VPP Compare NICs 3n-skx 2t1c ndr"
-  algorithm: "table_nics_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-skx-2t1c-nics-ndr"
-  reference:
-    title: "x710"
-    nic: "NIC_Intel-X710"
-  compare:
-    title: "xxv710"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-nic-comparison-3n-skx"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'2T1C' and 'NDRPDR' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "x710"
+      data-set: "vpp-nic-comparison-3n-skx"
+      tag: "NIC_Intel-X710"
+    - title: "xxv710"
+      data-set: "vpp-nic-comparison-3n-skx"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table:"
+    - "x710, xxv710 - NICs tested."
+    - "Diff - difference between x710 and xxv710 NIC."
 
 # VPP Compare NICs 3n-skx 4t2c ndr
 - type: "table"
   title: "VPP Compare NICs 3n-skx 4t2c ndr"
-  algorithm: "table_nics_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-skx-4t2c-nics-ndr"
-  reference:
-    title: "x710"
-    nic: "NIC_Intel-X710"
-  compare:
-    title: "xxv710"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-nic-comparison-3n-skx"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'4T2C' and 'NDRPDR' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "x710"
+      data-set: "vpp-nic-comparison-3n-skx"
+      tag: "NIC_Intel-X710"
+    - title: "xxv710"
+      data-set: "vpp-nic-comparison-3n-skx"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table:"
+    - "x710, xxv710 - NICs tested."
+    - "Diff - difference between x710 and xxv710 NIC."
 
 # VPP Compare NICs 3n-skx 2t1c pdr
 - type: "table"
   title: "VPP Compare NICs 3n-skx 2t1c pdr"
-  algorithm: "table_nics_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-skx-2t1c-nics-pdr"
-  reference:
-    title: "x710"
-    nic: "NIC_Intel-X710"
-  compare:
-    title: "xxv710"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-nic-comparison-3n-skx"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'2T1C' and 'NDRPDR' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "x710"
+      data-set: "vpp-nic-comparison-3n-skx"
+      tag: "NIC_Intel-X710"
+    - title: "xxv710"
+      data-set: "vpp-nic-comparison-3n-skx"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table:"
+    - "x710, xxv710 - NICs tested."
+    - "Diff - difference between x710 and xxv710 NIC."
 
- # VPP Compare NICs 3n-skx 4t2c pdr
+# VPP Compare NICs 3n-skx 4t2c pdr
 - type: "table"
   title: "VPP Compare NICs 3n-skx 4t2c pdr"
-  algorithm: "table_nics_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-skx-4t2c-nics-pdr"
-  reference:
-    title: "x710"
-    nic: "NIC_Intel-X710"
-  compare:
-    title: "xxv710"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-nic-comparison-3n-skx"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'4T2C' and 'NDRPDR' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "x710"
+      data-set: "vpp-nic-comparison-3n-skx"
+      tag: "NIC_Intel-X710"
+    - title: "xxv710"
+      data-set: "vpp-nic-comparison-3n-skx"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table:"
+    - "x710, xxv710 - NICs tested."
+    - "Diff - difference between x710 and xxv710 NIC."
 
 # VPP Compare NICs 3n-skx 2t1c mrr
 - type: "table"
   title: "VPP Compare NICs 3n-skx 2t1c mrr"
-  algorithm: "table_nics_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-skx-2t1c-nics-mrr"
-  reference:
-    title: "x710"
-    nic: "NIC_Intel-X710"
-  compare:
-    title: "xxv710"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-nic-comparison-3n-skx-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "'2T1C' and 'MRR' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
-  - "tags"
+  columns:
+    - title: "x710"
+      data-set: "vpp-nic-comparison-3n-skx-mrr"
+      tag: "NIC_Intel-X710"
+    - title: "xxv710"
+      data-set: "vpp-nic-comparison-3n-skx-mrr"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table:"
+    - "x710, xxv710 - NICs tested."
+    - "Diff - difference between x710 and xxv710 NIC."
 
 # VPP Compare NICs 3n-skx 4t2c mrr
 - type: "table"
   title: "VPP Compare NICs 3n-skx 4t2c mrr"
-  algorithm: "table_nics_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-skx-4t2c-nics-mrr"
-  reference:
-    title: "x710"
-    nic: "NIC_Intel-X710"
-  compare:
-    title: "xxv710"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-nic-comparison-3n-skx-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "'4T2C' and 'MRR' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
-  - "tags"
+  columns:
+    - title: "x710"
+      data-set: "vpp-nic-comparison-3n-skx-mrr"
+      tag: "NIC_Intel-X710"
+    - title: "xxv710"
+      data-set: "vpp-nic-comparison-3n-skx-mrr"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table:"
+    - "x710, xxv710 - NICs tested."
+    - "Diff - difference between x710 and xxv710 NIC."
 
- # VPP Compare NICs 3n-skx 8t4c mrr
+# VPP Compare NICs 3n-skx 8t4c mrr
 - type: "table"
   title: "VPP Compare NICs 3n-skx 8t4c mrr"
-  algorithm: "table_nics_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-skx-8t4c-nics-mrr"
-  reference:
-    title: "x710"
-    nic: "NIC_Intel-X710"
-  compare:
-    title: "xxv710"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-nic-comparison-3n-skx-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "'8T4C' and 'MRR' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
-  - "tags"
+  columns:
+    - title: "x710"
+      data-set: "vpp-nic-comparison-3n-skx-mrr"
+      tag: "NIC_Intel-X710"
+    - title: "xxv710"
+      data-set: "vpp-nic-comparison-3n-skx-mrr"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table:"
+    - "x710, xxv710 - NICs tested."
+    - "Diff - difference between x710 and xxv710 NIC."
 
 # VPP Compare NICs 2n-skx 2t1c ndr
 - type: "table"
   title: "VPP Compare NICs 2n-skx 2t1c ndr"
-  algorithm: "table_nics_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-2n-skx-2t1c-nics-ndr"
-  reference:
-    title: "x710"
-    nic: "NIC_Intel-X710"
-  compare:
-    title: "xxv710"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-nic-comparison-2n-skx"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'2T1C' and 'NDRPDR' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "x710"
+      data-set: "vpp-nic-comparison-2n-skx"
+      tag: "NIC_Intel-X710"
+    - title: "xxv710"
+      data-set: "vpp-nic-comparison-2n-skx"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table:"
+    - "x710, xxv710 - NICs tested."
+    - "Diff - difference between x710 and xxv710 NIC."
 
 # VPP Compare NICs 2n-skx 4t2c ndr
 - type: "table"
   title: "VPP Compare NICs 2n-skx 4t2c ndr"
-  algorithm: "table_nics_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-2n-skx-4t2c-nics-ndr"
-  reference:
-    title: "x710"
-    nic: "NIC_Intel-X710"
-  compare:
-    title: "xxv710"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-nic-comparison-2n-skx"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'4T2C' and 'NDRPDR' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "x710"
+      data-set: "vpp-nic-comparison-2n-skx"
+      tag: "NIC_Intel-X710"
+    - title: "xxv710"
+      data-set: "vpp-nic-comparison-2n-skx"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table:"
+    - "x710, xxv710 - NICs tested."
+    - "Diff - difference between x710 and xxv710 NIC."
 
- # VPP Compare NICs 2n-skx 2t1c pdr
+# VPP Compare NICs 2n-skx 2t1c pdr
 - type: "table"
   title: "VPP Compare NICs 2n-skx 2t1c pdr"
-  algorithm: "table_nics_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-2n-skx-2t1c-nics-pdr"
-  reference:
-    title: "x710"
-    nic: "NIC_Intel-X710"
-  compare:
-    title: "xxv710"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-nic-comparison-2n-skx"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'2T1C' and 'NDRPDR' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "x710"
+      data-set: "vpp-nic-comparison-2n-skx"
+      tag: "NIC_Intel-X710"
+    - title: "xxv710"
+      data-set: "vpp-nic-comparison-2n-skx"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table:"
+    - "x710, xxv710 - NICs tested."
+    - "Diff - difference between x710 and xxv710 NIC."
 
 # VPP Compare NICs 2n-skx 4t2c pdr
 - type: "table"
   title: "VPP Compare NICs 2n-skx 4t2c pdr"
-  algorithm: "table_nics_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-2n-skx-4t2c-nics-pdr"
-  reference:
-    title: "x710"
-    nic: "NIC_Intel-X710"
-  compare:
-    title: "xxv710"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-nic-comparison-2n-skx"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'4T2C' and 'NDRPDR' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "x710"
+      data-set: "vpp-nic-comparison-2n-skx"
+      tag: "NIC_Intel-X710"
+    - title: "xxv710"
+      data-set: "vpp-nic-comparison-2n-skx"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table:"
+    - "x710, xxv710 - NICs tested."
+    - "Diff - difference between x710 and xxv710 NIC."
 
 # VPP Compare NICs 2n-skx 2t1c mrr
 - type: "table"
   title: "VPP Compare NICs 2n-skx 2t1c mrr"
-  algorithm: "table_nics_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-2n-skx-2t1c-nics-mrr"
-  reference:
-    title: "x710"
-    nic: "NIC_Intel-X710"
-  compare:
-    title: "xxv710"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-nic-comparison-2n-skx-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "'2T1C' and 'MRR' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
-  - "tags"
+  columns:
+    - title: "x710"
+      data-set: "vpp-nic-comparison-2n-skx-mrr"
+      tag: "NIC_Intel-X710"
+    - title: "xxv710"
+      data-set: "vpp-nic-comparison-2n-skx-mrr"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table:"
+    - "x710, xxv710 - NICs tested."
+    - "Diff - difference between x710 and xxv710 NIC."
 
 # VPP Compare NICs 2n-skx 4t2c mrr
 - type: "table"
   title: "VPP Compare NICs 2n-skx 4t2c mrr"
-  algorithm: "table_nics_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-2n-skx-4t2c-nics-mrr"
-  reference:
-    title: "x710"
-    nic: "NIC_Intel-X710"
-  compare:
-    title: "xxv710"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-nic-comparison-2n-skx-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "'4T2C' and 'MRR' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
-  - "tags"
+  columns:
+    - title: "x710"
+      data-set: "vpp-nic-comparison-2n-skx-mrr"
+      tag: "NIC_Intel-X710"
+    - title: "xxv710"
+      data-set: "vpp-nic-comparison-2n-skx-mrr"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table:"
+    - "x710, xxv710 - NICs tested."
+    - "Diff - difference between x710 and xxv710 NIC."
 
 # VPP Compare NICs 2n-skx 8t4c mrr
 - type: "table"
   title: "VPP Compare NICs 2n-skx 8t4c mrr"
-  algorithm: "table_nics_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-2n-skx-8t4c-nics-mrr"
-  reference:
-    title: "x710"
-    nic: "NIC_Intel-X710"
-  compare:
-    title: "xxv710"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-nic-comparison-2n-skx-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "'8T4C' and 'MRR' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
-  - "tags"
+  columns:
+    - title: "x710"
+      data-set: "vpp-nic-comparison-2n-skx-mrr"
+      tag: "NIC_Intel-X710"
+    - title: "xxv710"
+      data-set: "vpp-nic-comparison-2n-skx-mrr"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table:"
+    - "x710, xxv710 - NICs tested."
+    - "Diff - difference between x710 and xxv710 NIC."
 
 ################################################################################
 # VPP
 # VPP Performance Changes 3n-hsw 1t1c pdr
 - type: "table"
   title: "VPP Performance Changes 3n-hsw 1t1c pdr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-hsw-1t1c-pdr"
-  history:
-    - title: "1904"
-      data: "vpp-performance-changes-3n-hsw-h1"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-hsw-ref"
-    data-replacement: "replacement-1908-vpp-throughput-lat-tsa-3n-hsw-vhost"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-hsw-cmp"
-  data: "vpp-performance-changes-3n-hsw"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'1T1C' and 'NDRPDR' and 'NIC_Intel-XL710' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
+  columns:
+    - title: "1904"
+      data-set: "vpp-performance-changes-3n-hsw-h1"
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-hsw-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-hsw-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
 # VPP Performance Changes 3n-hsw 2t2c pdr
 - type: "table"
   title: "VPP Performance Changes 3n-hsw 2t2c pdr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-hsw-2t2c-pdr"
-  history:
-    - title: "1904"
-      data: "vpp-performance-changes-3n-hsw-h1"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-hsw-ref"
-    data-replacement: "replacement-1908-vpp-throughput-lat-tsa-3n-hsw-vhost"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-hsw-cmp"
-  data: "vpp-performance-changes-3n-hsw"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'2T2C' and 'NDRPDR' and 'NIC_Intel-XL710' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
+  columns:
+    - title: "1904"
+      data-set: "vpp-performance-changes-3n-hsw-h1"
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-hsw-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-hsw-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
 # VPP Performance Changes 3n-hsw 1t1c ndr
 - type: "table"
   title: "VPP Performance Changes 3n-hsw 1t1c ndr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-hsw-1t1c-ndr"
-  history:
-    - title: "1904"
-      data: "vpp-performance-changes-3n-hsw-h1"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-hsw-ref"
-    data-replacement: "replacement-1908-vpp-throughput-lat-tsa-3n-hsw-vhost"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-hsw-cmp"
-  data: "vpp-performance-changes-3n-hsw"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'1T1C' and 'NDRPDR' and 'NIC_Intel-XL710' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-
-# VPP Performance Changes 3n-hsw 2t2c ndr
-- type: "table"
-  title: "VPP Performance Changes 3n-hsw 2t2c ndr"
-  algorithm: "table_perf_comparison"
-  output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-hsw-2t2c-ndr"
-  history:
+  columns:
     - title: "1904"
-      data: "vpp-performance-changes-3n-hsw-h1"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-hsw-ref"
-    data-replacement: "replacement-1908-vpp-throughput-lat-tsa-3n-hsw-vhost"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-hsw-cmp"
-  data: "vpp-performance-changes-3n-hsw"
+      data-set: "vpp-performance-changes-3n-hsw-h1"
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-hsw-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-hsw-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
+
+# VPP Performance Changes 3n-hsw 2t2c ndr
+- type: "table"
+  title: "VPP Performance Changes 3n-hsw 2t2c ndr"
+  algorithm: "table_comparison"
+  output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-hsw-2t2c-ndr"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'2T2C' and 'NDRPDR' and 'NIC_Intel-XL710' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
+  columns:
+    - title: "1904"
+      data-set: "vpp-performance-changes-3n-hsw-h1"
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-hsw-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-hsw-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
 # VPP Root Cause Analysis 3n-skx-xxv710 2t1c pdr
 - type: "table"
 # VPP Performance Changes 3n-skx 2t1c pdr
 - type: "table"
   title: "VPP Performance Changes 3n-skx 2t1c pdr"
-  algorithm: "table_perf_comparison_nic"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-skx-2t1c-pdr"
-#  rca:
-#    title: "RCA"
-#    data-file: "rca/rca-3n-skx-2t1c-pdr.yaml"
-  history:
-    - title: "1904"
-      data: "vpp-performance-changes-3n-skx-h1"
-      nic: "NIC_Intel-X710"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-skx-ref"
-    data-replacement: "replacement-1908-vpp-throughput-lat-tsa-3n-skx-vhost"
-    nic: "NIC_Intel-XXV710"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-skx-cmp"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-performance-changes-3n-skx"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'2T1C' and 'NDRPDR' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "1904"
+      data-set: "vpp-performance-changes-3n-skx-h1"
+      tag: "NIC_Intel-X710"
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-skx-ref"
+      data-replacement: "replacement-1908-vpp-throughput-lat-tsa-3n-skx-vhost"
+      tag: "NIC_Intel-XXV710"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-skx-cmp"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
 # VPP Performance Changes 3n-skx 4t2c pdr
 - type: "table"
   title: "VPP Performance Changes 3n-skx 4t2c pdr"
-  algorithm: "table_perf_comparison_nic"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-skx-4t2c-pdr"
-#  rca:
-#    title: "RCA"
-#    data-file: "rca/rca-3n-skx-4t2c-pdr.yaml"
-  history:
-    - title: "1904"
-      data: "vpp-performance-changes-3n-skx-h1"
-      nic: "NIC_Intel-X710"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-skx-ref"
-    data-replacement: "replacement-1908-vpp-throughput-lat-tsa-3n-skx-vhost"
-    nic: "NIC_Intel-XXV710"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-skx-cmp"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-performance-changes-3n-skx"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'4T2C' and 'NDRPDR' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "1904"
+      data-set: "vpp-performance-changes-3n-skx-h1"
+      tag: "NIC_Intel-X710"
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-skx-ref"
+      data-replacement: "replacement-1908-vpp-throughput-lat-tsa-3n-skx-vhost"
+      tag: "NIC_Intel-XXV710"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-skx-cmp"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
 # VPP Performance Changes 3n-skx 2t1c ndr
 - type: "table"
   title: "VPP Performance Changes 3n-skx 2t1c ndr"
-  algorithm: "table_perf_comparison_nic"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-skx-2t1c-ndr"
-#  rca:
-#    title: "RCA"
-#    data-file: "rca/rca-3n-skx-2t1c-ndr.yaml"
-  history:
-    - title: "1904"
-      data: "vpp-performance-changes-3n-skx-h1"
-      nic: "NIC_Intel-X710"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-skx-ref"
-    data-replacement: "replacement-1908-vpp-throughput-lat-tsa-3n-skx-vhost"
-    nic: "NIC_Intel-XXV710"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-skx-cmp"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-performance-changes-3n-skx"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'2T1C' and 'NDRPDR' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "1904"
+      data-set: "vpp-performance-changes-3n-skx-h1"
+      tag: "NIC_Intel-X710"
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-skx-ref"
+      data-replacement: "replacement-1908-vpp-throughput-lat-tsa-3n-skx-vhost"
+      tag: "NIC_Intel-XXV710"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-skx-cmp"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
 # VPP Performance Changes 3n-skx 4t2c ndr
 - type: "table"
   title: "VPP Performance Changes 3n-skx 4t2c ndr"
-  algorithm: "table_perf_comparison_nic"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-skx-4t2c-ndr"
-#  rca:
-#    title: "RCA"
-#    data-file: "rca/rca-3n-skx-4t2c-ndr.yaml"
-  history:
-    - title: "1904"
-      data: "vpp-performance-changes-3n-skx-h1"
-      nic: "NIC_Intel-X710"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-skx-ref"
-    data-replacement: "replacement-1908-vpp-throughput-lat-tsa-3n-skx-vhost"
-    nic: "NIC_Intel-XXV710"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-skx-cmp"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-performance-changes-3n-skx"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'4T2C' and 'NDRPDR' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "1904"
+      data-set: "vpp-performance-changes-3n-skx-h1"
+      tag: "NIC_Intel-X710"
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-skx-ref"
+      data-replacement: "replacement-1908-vpp-throughput-lat-tsa-3n-skx-vhost"
+      tag: "NIC_Intel-XXV710"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-skx-cmp"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
 # VPP Root Cause Analysis 2n-skx-xxv710 2t1c pdr
 - type: "table"
 # VPP Performance Changes 2n-skx 2t1c pdr
 - type: "table"
   title: "VPP Performance Changes 2n-skx 2t1c pdr"
-  algorithm: "table_perf_comparison_nic"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-2n-skx-2t1c-pdr"
-#  rca:
-#    title: "RCA"
-#    data-file: "rca/rca-2n-skx-2t1c-pdr.yaml"
-  history:
-    - title: "1904"
-      data: "vpp-performance-changes-2n-skx-h1"
-      nic: "NIC_Intel-X710"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-2n-skx-ref"
-    data-replacement: "replacement-1908-vpp-throughput-lat-tsa-2n-skx-vhost"
-    nic: "NIC_Intel-XXV710"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-2n-skx-cmp"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-performance-changes-2n-skx"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'2T1C' and 'NDRPDR' and not 'NF_DENSITY'"
-  parameters:
-    - "name"
-    - "parent"
-    - "throughput"
-    - "tags"
+  columns:
+    - title: "1904"
+      data-set: "vpp-performance-changes-2n-skx-h1"
+      tag: "NIC_Intel-X710"
+    - title: "1908"
+      data-set: "vpp-performance-changes-2n-skx-ref"
+      data-replacement: "replacement-1908-vpp-throughput-lat-tsa-2n-skx-vhost"
+      tag: "NIC_Intel-XXV710"
+    - title: "2001"
+      data-set: "vpp-performance-changes-2n-skx-cmp"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
 # VPP Performance Changes 2n-skx 4t2c pdr
 - type: "table"
   title: "VPP Performance Changes 2n-skx 4t2c pdr"
-  algorithm: "table_perf_comparison_nic"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-2n-skx-4t2c-pdr"
-#  rca:
-#    title: "RCA"
-#    data-file: "rca/rca-2n-skx-4t2c-pdr.yaml"
-  history:
-    - title: "1904"
-      data: "vpp-performance-changes-2n-skx-h1"
-      nic: "NIC_Intel-X710"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-2n-skx-ref"
-    data-replacement: "replacement-1908-vpp-throughput-lat-tsa-2n-skx-vhost"
-    nic: "NIC_Intel-XXV710"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-2n-skx-cmp"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-performance-changes-2n-skx"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'4T2C' and 'NDRPDR' and not 'NF_DENSITY'"
-  parameters:
-    - "name"
-    - "parent"
-    - "throughput"
-    - "tags"
+  columns:
+    - title: "1904"
+      data-set: "vpp-performance-changes-2n-skx-h1"
+      tag: "NIC_Intel-X710"
+    - title: "1908"
+      data-set: "vpp-performance-changes-2n-skx-ref"
+      data-replacement: "replacement-1908-vpp-throughput-lat-tsa-3n-skx-vhost"
+      tag: "NIC_Intel-XXV710"
+    - title: "2001"
+      data-set: "vpp-performance-changes-2n-skx-cmp"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
 # VPP Performance Changes 2n-skx 2t1c ndr
 - type: "table"
   title: "VPP Performance Changes 2n-skx 2t1c ndr"
-  algorithm: "table_perf_comparison_nic"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-2n-skx-2t1c-ndr"
-#  rca:
-#    title: "RCA"
-#    data-file: "rca/rca-2n-skx-2t1c-ndr.yaml"
-  history:
-    - title: "1904"
-      data: "vpp-performance-changes-2n-skx-h1"
-      nic: "NIC_Intel-X710"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-2n-skx-ref"
-    data-replacement: "replacement-1908-vpp-throughput-lat-tsa-2n-skx-vhost"
-    nic: "NIC_Intel-XXV710"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-2n-skx-cmp"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-performance-changes-2n-skx"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'2T1C' and 'NDRPDR' and not 'NF_DENSITY'"
-  parameters:
-    - "name"
-    - "parent"
-    - "throughput"
-    - "tags"
+  columns:
+    - title: "1904"
+      data-set: "vpp-performance-changes-2n-skx-h1"
+      tag: "NIC_Intel-X710"
+    - title: "1908"
+      data-set: "vpp-performance-changes-2n-skx-ref"
+      data-replacement: "replacement-1908-vpp-throughput-lat-tsa-2n-skx-vhost"
+      tag: "NIC_Intel-XXV710"
+    - title: "2001"
+      data-set: "vpp-performance-changes-2n-skx-cmp"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
 # VPP Performance Changes 2n-skx 4t2c ndr
 - type: "table"
   title: "VPP Performance Changes 2n-skx 4t2c ndr"
-  algorithm: "table_perf_comparison_nic"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-2n-skx-4t2c-ndr"
-#  rca:
-#    title: "RCA"
-#    data-file: "rca/rca-2n-skx-4t2c-ndr.yaml"
-  history:
-    - title: "1904"
-      data: "vpp-performance-changes-2n-skx-h1"
-      nic: "NIC_Intel-X710"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-2n-skx-ref"
-    data-replacement: "replacement-1908-vpp-throughput-lat-tsa-2n-skx-vhost"
-    nic: "NIC_Intel-XXV710"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-2n-skx-cmp"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-performance-changes-2n-skx"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'4T2C' and 'NDRPDR' and not 'NF_DENSITY'"
-  parameters:
-    - "name"
-    - "parent"
-    - "throughput"
-    - "tags"
-
-## VPP Performance Changes NFV Service Density 2n-skx 2t1c pdr
-#- type: "table"
-#  title: "VPP Performance Changes NFV Service Density 2n-skx 2t1c pdr"
-#  algorithm: "table_perf_comparison"
-#  output-file: "{DIR[STATIC,VPP]}/performance-changes-nfv-2n-skx-2t1c-pdr"
-#  reference:
-#    title: "1908"
-#    data: "vpp-performance-changes-nfv-2n-skx-ref"
-#  compare:
-#    title: "2001"
-#    data: "vpp-performance-changes-nfv-2n-skx-cmp"
-#  data: "vpp-performance-changes-nfv-2n-skx"
-#  include-tests: "PDR" # "PDR" | "NDR" | "MRR"
-#  filter: "'2T1C' and 'NDRPDR' and 'NF_DENSITY'"
-#  parameters:
-#  - "name"
-#  - "parent"
-#  - "throughput"
-#  - "tags"
-#
-## VPP Performance Changes NFV Service Density 2n-skx 4t2c pdr
-#- type: "table"
-#  title: "VPP Performance Changes NFV Service Density 2n-skx 4t2c pdr"
-#  algorithm: "table_perf_comparison"
-#  output-file: "{DIR[STATIC,VPP]}/performance-changes-nfv-2n-skx-4t2c-pdr"
-#  reference:
-#    title: "1908"
-#    data: "vpp-performance-changes-nfv-2n-skx-ref"
-#  compare:
-#    title: "2001"
-#    data: "vpp-performance-changes-nfv-2n-skx-cmp"
-#  data: "vpp-performance-changes-nfv-2n-skx"
-#  include-tests: "PDR" # "PDR" | "NDR" | "MRR"
-#  filter: "'4T2C' and 'NDRPDR' and 'NF_DENSITY'"
-#  parameters:
-#  - "name"
-#  - "parent"
-#  - "throughput"
-#  - "tags"
-#
-## VPP Performance Changes NFV Service Density 2n-skx 2t1c ndr
-#- type: "table"
-#  title: "VPP Performance Changes NFV Service Density 2n-skx 2t1c ndr"
-#  algorithm: "table_perf_comparison"
-#  output-file: "{DIR[STATIC,VPP]}/performance-changes-nfv-2n-skx-2t1c-ndr"
-#  reference:
-#    title: "1908"
-#    data: "vpp-performance-changes-nfv-2n-skx-ref"
-#  compare:
-#    title: "2001"
-#    data: "vpp-performance-changes-nfv-2n-skx-cmp"
-#  data: "vpp-performance-changes-nfv-2n-skx"
-#  include-tests: "NDR" # "PDR" | "NDR" | "MRR"
-#  filter: "'2T1C' and 'NDRPDR' and 'NF_DENSITY'"
-#  parameters:
-#  - "name"
-#  - "parent"
-#  - "throughput"
-#  - "tags"
-#
-## VPP Performance Changes NFV Service Density 2n-skx 4t2c ndr
-#- type: "table"
-#  title: "VPP Performance Changes NFV Service Density 2n-skx 4t2c ndr"
-#  algorithm: "table_perf_comparison"
-#  output-file: "{DIR[STATIC,VPP]}/performance-changes-nfv-2n-skx-4t2c-ndr"
-#  reference:
-#    title: "1908"
-#    data: "vpp-performance-changes-nfv-2n-skx-ref"
-#  compare:
-#    title: "2001"
-#    data: "vpp-performance-changes-nfv-2n-skx-cmp"
-#  data: "vpp-performance-changes-nfv-2n-skx"
-#  include-tests: "NDR" # "PDR" | "NDR" | "MRR"
-#  filter: "'4T2C' and 'NDRPDR' and 'NF_DENSITY'"
-#  parameters:
-#  - "name"
-#  - "parent"
-#  - "throughput"
-#  - "tags"
+  columns:
+    - title: "1904"
+      data-set: "vpp-performance-changes-2n-skx-h1"
+      tag: "NIC_Intel-X710"
+    - title: "1908"
+      data-set: "vpp-performance-changes-2n-skx-ref"
+      data-replacement: "replacement-1908-vpp-throughput-lat-tsa-2n-skx-vhost"
+      tag: "NIC_Intel-XXV710"
+    - title: "2001"
+      data-set: "vpp-performance-changes-2n-skx-cmp"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
 # VPP Performance Changes 2n-dnv 1t1c pdr
 - type: "table"
   title: "VPP Performance Changes 2n-dnv 1t1c pdr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-2n-dnv-1t1c-pdr"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-2n-dnv-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-2n-dnv-cmp"
-  data: "vpp-performance-changes-2n-dnv"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'1T1C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "1908"
+      data-set: "vpp-performance-changes-2n-dnv-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-2n-dnv-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
 # VPP Performance Changes 2n-dnv 2t2c pdr
 - type: "table"
   title: "VPP Performance Changes 2n-dnv 2t2c pdr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-2n-dnv-2t2c-pdr"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-2n-dnv-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-2n-dnv-cmp"
-  data: "vpp-performance-changes-2n-dnv"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'2T2C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "1908"
+      data-set: "vpp-performance-changes-2n-dnv-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-2n-dnv-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
 # VPP Performance Changes 2n-dnv 1t1c ndr
 - type: "table"
   title: "VPP Performance Changes 2n-dnv 1t1c ndr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-2n-dnv-1t1c-ndr"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-2n-dnv-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-2n-dnv-cmp"
-  data: "vpp-performance-changes-2n-dnv"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'1T1C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "1908"
+      data-set: "vpp-performance-changes-2n-dnv-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-2n-dnv-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
 # VPP Performance Changes 2n-dnv 2t2c ndr
 - type: "table"
   title: "VPP Performance Changes 2n-dnv 2t2c ndr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-2n-dnv-2t2c-ndr"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-2n-dnv-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-2n-dnv-cmp"
-  data: "vpp-performance-changes-2n-dnv"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'2T2C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "1908"
+      data-set: "vpp-performance-changes-2n-dnv-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-2n-dnv-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
 # VPP Performance Changes 3n-dnv 1t1c pdr
 - type: "table"
   title: "VPP Performance Changes 3n-dnv 1t1c pdr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-dnv-1t1c-pdr"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-dnv-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-dnv-cmp"
-  data: "vpp-performance-changes-3n-dnv"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'1T1C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-dnv-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-dnv-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
 # VPP Performance Changes 3n-dnv 2t2c pdr
 - type: "table"
   title: "VPP Performance Changes 3n-dnv 2t2c pdr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-dnv-2t2c-pdr"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-dnv-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-dnv-cmp"
-  data: "vpp-performance-changes-3n-dnv"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'2T2C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-dnv-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-dnv-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
 # VPP Performance Changes 3n-dnv 1t1c ndr
 - type: "table"
   title: "VPP Performance Changes 3n-dnv 1t1c ndr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-dnv-1t1c-ndr"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-dnv-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-dnv-cmp"
-  data: "vpp-performance-changes-3n-dnv"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'1T1C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-dnv-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-dnv-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
 # VPP Performance Changes 3n-dnv 2t2c ndr
 - type: "table"
   title: "VPP Performance Changes 3n-dnv 2t2c ndr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-dnv-2t2c-ndr"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-dnv-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-dnv-cmp"
-  data: "vpp-performance-changes-3n-dnv"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'2T2C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-dnv-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-dnv-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
 # VPP Performance Changes 3n-tsh 1t1c pdr
 - type: "table"
   title: "VPP Performance Changes 3n-tsh 1t1c pdr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-tsh-1t1c-pdr"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-tsh-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-tsh-cmp"
-  data: "vpp-performance-changes-3n-tsh"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'1T1C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-tsh-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-tsh-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
 # VPP Performance Changes 3n-tsh 2t2c pdr
 - type: "table"
   title: "VPP Performance Changes 3n-tsh 2t2c pdr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-tsh-2t2c-pdr"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-tsh-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-tsh-cmp"
-  data: "vpp-performance-changes-3n-tsh"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'2T2C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-tsh-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-tsh-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
 # VPP Performance Changes 3n-tsh 1t1c ndr
 - type: "table"
   title: "VPP Performance Changes 3n-tsh 1t1c ndr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-tsh-1t1c-ndr"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-tsh-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-tsh-cmp"
-  data: "vpp-performance-changes-3n-tsh"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'1T1C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-tsh-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-tsh-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
 # VPP Performance Changes 3n-tsh 2t2c ndr
 - type: "table"
   title: "VPP Performance Changes 3n-tsh 2t2c ndr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-tsh-2t2c-ndr"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-tsh-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-tsh-cmp"
-  data: "vpp-performance-changes-3n-tsh"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'2T2C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-tsh-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-tsh-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
 # VPP Comparison Across Testbeds 3n-hsw to 3n-skx 1c ndr
 - type: "table"
   title: "VPP Comparison Across Testbeds 3n-hsw to 3n-skx 1c ndr"
-  algorithm: "table_perf_comparison_nic"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-compare-testbeds-3n-hsw-3n-skx-1c-ndr"
-  reference:
-    title: "3n-hsw xl710"
-    data: "vpp-compare-testbeds-ref"
-    nic: "NIC_Intel-XL710"
-  compare:
-    title: "3n-skx xxv710"
-    data: "vpp-compare-testbeds-cmp"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-compare-testbeds"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "('NIC_Intel-XXV710' or 'NIC_Intel-XL710') and 'NDRPDR' and '1C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "3n-hsw xl710"
+      data-set: "vpp-compare-testbeds-ref"
+      tag: "NIC_Intel-XL710"
+    - title: "3n-skx xxv710"
+      data-set: "vpp-compare-testbeds-cmp"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "3n-hsw xl710, 3n-skx xxv710 - testbeds and NICs tested."
+    - "Diff - difference between 3n-hsw xl710 and 3n-skx xxv710 testbeds."
 
 # VPP Comparison Across Testbeds 3n-hsw to 3n-skx 2c ndr
 - type: "table"
   title: "VPP Comparison Across Testbeds 3n-hsw to 3n-skx 2c ndr"
-  algorithm: "table_perf_comparison_nic"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-compare-testbeds-3n-hsw-3n-skx-2c-ndr"
-  reference:
-    title: "3n-hsw xl710"
-    data: "vpp-compare-testbeds-ref"
-    nic: "NIC_Intel-XL710"
-  compare:
-    title: "3n-skx xxv710"
-    data: "vpp-compare-testbeds-cmp"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-compare-testbeds"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "('NIC_Intel-XXV710' or 'NIC_Intel-XL710') and 'NDRPDR' and '2C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "3n-hsw xl710"
+      data-set: "vpp-compare-testbeds-ref"
+      tag: "NIC_Intel-XL710"
+    - title: "3n-skx xxv710"
+      data-set: "vpp-compare-testbeds-cmp"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "3n-hsw xl710, 3n-skx xxv710 - testbeds and NICs tested."
+    - "Diff - difference between 3n-hsw xl710 and 3n-skx xxv710 testbeds."
 
 # VPP Comparison Across Testbeds 3n-hsw to 3n-skx 1c pdr
 - type: "table"
   title: "VPP Comparison Across Testbeds 3n-hsw to 3n-skx 1c pdr"
-  algorithm: "table_perf_comparison_nic"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-compare-testbeds-3n-hsw-3n-skx-1c-pdr"
-  reference:
-    title: "3n-hsw xl710"
-    data: "vpp-compare-testbeds-ref"
-    nic: "NIC_Intel-XL710"
-  compare:
-    title: "3n-skx xxv710"
-    data: "vpp-compare-testbeds-cmp"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-compare-testbeds"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "('NIC_Intel-XXV710' or 'NIC_Intel-XL710') and 'NDRPDR' and '1C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "3n-hsw xl710"
+      data-set: "vpp-compare-testbeds-ref"
+      tag: "NIC_Intel-XL710"
+    - title: "3n-skx xxv710"
+      data-set: "vpp-compare-testbeds-cmp"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "3n-hsw xl710, 3n-skx xxv710 - testbeds and NICs tested."
+    - "Diff - difference between 3n-hsw xl710 and 3n-skx xxv710 testbeds."
 
 # VPP Comparison Across Testbeds 3n-hsw to 3n-skx 2c pdr
 - type: "table"
   title: "VPP Comparison Across Testbeds 3n-hsw to 3n-skx 2c pdr"
-  algorithm: "table_perf_comparison_nic"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-compare-testbeds-3n-hsw-3n-skx-2c-pdr"
-  reference:
-    title: "3n-hsw xl710"
-    data: "vpp-compare-testbeds-ref"
-    nic: "NIC_Intel-XL710"
-  compare:
-    title: "3n-skx xxv710"
-    data: "vpp-compare-testbeds-cmp"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-compare-testbeds"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "('NIC_Intel-XXV710' or 'NIC_Intel-XL710') and 'NDRPDR' and '2C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "3n-hsw xl710"
+      data-set: "vpp-compare-testbeds-ref"
+      tag: "NIC_Intel-XL710"
+    - title: "3n-skx xxv710"
+      data-set: "vpp-compare-testbeds-cmp"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "3n-hsw xl710, 3n-skx xxv710 - testbeds and NICs tested."
+    - "Diff - difference between 3n-hsw xl710 and 3n-skx xxv710 testbeds."
+
+# VPP Comparison Across Testbeds 2n-skx to 2n-clx 2t1c ndr
+- type: "table"
+  title: "VPP Comparison Across Testbeds 2n-skx to 2n-clx 2t1c ndr"
+  algorithm: "table_comparison"
+  output-file: "{DIR[STATIC,VPP]}/performance-compare-testbeds-2n-skx-2n-clx-2t1c-ndr"
+  include-tests: "NDR" # "PDR" | "NDR" | "MRR"
+  filter: "'2T1C' and 'NIC_Intel-XXV710'"
+  columns:
+    - title: "2n-skx"
+      data-set: "vpp-compare-testbeds-skx-clx-ref"
+    - title: "2n-clx"
+      data-set: "vpp-compare-testbeds-skx-clx-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "2n-skx, 2n-clx - testbeds and NICs tested."
+    - "Diff - difference between 2n-skx and 2n-clx testbeds."
+
+# VPP Comparison Across Testbeds 2n-skx to 2n-clx 4t2c ndr
+- type: "table"
+  title: "VPP Comparison Across Testbeds 2n-skx to 2n-clx 4t2c ndr"
+  algorithm: "table_comparison"
+  output-file: "{DIR[STATIC,VPP]}/performance-compare-testbeds-2n-skx-2n-clx-4t2c-ndr"
+  include-tests: "NDR" # "PDR" | "NDR" | "MRR"
+  filter: "'4T2C' and 'NIC_Intel-XXV710'"
+  columns:
+    - title: "2n-skx"
+      data-set: "vpp-compare-testbeds-skx-clx-ref"
+    - title: "2n-clx"
+      data-set: "vpp-compare-testbeds-skx-clx-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "2n-skx, 2n-clx - testbeds and NICs tested."
+    - "Diff - difference between 2n-skx and 2n-clx testbeds."
 
 # VPP Comparison Across Testbeds 2n-skx to 2n-clx 2t1c pdr
 - type: "table"
   title: "VPP Comparison Across Testbeds 2n-skx to 2n-clx 2t1c pdr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-compare-testbeds-2n-skx-2n-clx-2t1c-pdr"
-  reference:
-    title: "2n-skx"
-    data: "vpp-compare-testbeds-skx-clx-ref"
-  compare:
-    title: "2n-clx"
-    data: "vpp-compare-testbeds-skx-clx-cmp"
-  data: "vpp-compare-testbeds-skx-clx"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'2T1C' and 'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "2n-skx"
+      data-set: "vpp-compare-testbeds-skx-clx-ref"
+    - title: "2n-clx"
+      data-set: "vpp-compare-testbeds-skx-clx-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "2n-skx, 2n-clx - testbeds and NICs tested."
+    - "Diff - difference between 2n-skx and 2n-clx testbeds."
 
 # VPP Comparison Across Testbeds 2n-skx to 2n-clx 4t2c pdr
 - type: "table"
   title: "VPP Comparison Across Testbeds 2n-skx to 2n-clx 4t2c pdr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-compare-testbeds-2n-skx-2n-clx-4t2c-pdr"
-  reference:
-    title: "2n-skx"
-    data: "vpp-compare-testbeds-skx-clx-ref"
-  compare:
-    title: "2n-clx"
-    data: "vpp-compare-testbeds-skx-clx-cmp"
-  data: "vpp-compare-testbeds-skx-clx"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'4T2C' and 'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "2n-skx"
+      data-set: "vpp-compare-testbeds-skx-clx-ref"
+    - title: "2n-clx"
+      data-set: "vpp-compare-testbeds-skx-clx-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "2n-skx, 2n-clx - testbeds and NICs tested."
+    - "Diff - difference between 2n-skx and 2n-clx testbeds."
 
-# VPP Comparison Across Testbeds 2n-skx to 2n-clx 2t1c ndr
+# VPP Comparison Across Testbeds 3n-hsw to 2n-clx 1c ndr
 - type: "table"
-  title: "VPP Comparison Across Testbeds 2n-skx to 2n-clx 2t1c ndr"
-  algorithm: "table_perf_comparison"
-  output-file: "{DIR[STATIC,VPP]}/performance-compare-testbeds-2n-skx-2n-clx-2t1c-ndr"
-  reference:
-    title: "2n-skx"
-    data: "vpp-compare-testbeds-skx-clx-ref"
-  compare:
-    title: "2n-clx"
-    data: "vpp-compare-testbeds-skx-clx-cmp"
-  data: "vpp-compare-testbeds-skx-clx"
-  include-tests: "NDR" # "PDR" | "NDR" | "MRR"
-  filter: "'2T1C' and 'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
-
-# VPP Comparison Across Testbeds 2n-skx to 2n-clx 4t2c ndr
-- type: "table"
-  title: "VPP Comparison Across Testbeds 2n-skx to 2n-clx 4t2c ndr"
-  algorithm: "table_perf_comparison"
-  output-file: "{DIR[STATIC,VPP]}/performance-compare-testbeds-2n-skx-2n-clx-4t2c-ndr"
-  reference:
-    title: "2n-skx"
-    data: "vpp-compare-testbeds-skx-clx-ref"
-  compare:
-    title: "2n-clx"
-    data: "vpp-compare-testbeds-skx-clx-cmp"
-  data: "vpp-compare-testbeds-skx-clx"
-  include-tests: "NDR" # "PDR" | "NDR" | "MRR"
-  filter: "'4T2C' and 'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
-
-# VPP Comparison Across Testbeds 3n-hsw to 2n-clx 1c ndr
-- type: "table"
-  title: "VPP Comparison Across Testbeds 3n-hsw to 2n-clx 1c ndr"
-  algorithm: "table_perf_comparison_nic"
-  output-file: "{DIR[STATIC,VPP]}/performance-compare-testbeds-3n-hsw-2n-clx-1c-ndr"
-  reference:
-    title: "3n-hsw xl710"
-    data: "vpp-compare-testbeds-hsw-clx-ref"
-    nic: "NIC_Intel-XL710"
-  compare:
-    title: "2n-clx xxv710"
-    data: "vpp-compare-testbeds-hsw-clx-cmp"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-compare-testbeds-hsw-clx"
+  title: "VPP Comparison Across Testbeds 3n-hsw to 2n-clx 1c ndr"
+  algorithm: "table_comparison"
+  output-file: "{DIR[STATIC,VPP]}/performance-compare-testbeds-3n-hsw-2n-clx-1c-ndr"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "('NIC_Intel-XXV710' or 'NIC_Intel-XL710') and 'NDRPDR' and '1C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "3n-hsw xl710"
+      data-set: "vpp-compare-testbeds-hsw-clx-ref"
+      tag: "NIC_Intel-XL710"
+    - title: "2n-clx xxv710"
+      data-set: "vpp-compare-testbeds-hsw-clx-cmp"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "3n-hsw xl710, 2n-clx xxv710 - testbeds and NICs tested."
+    - "Diff - difference between 3n-hsw xl710 and 2n-clx xxv710 testbeds."
 
 # VPP Comparison Across Testbeds 3n-hsw to 2n-clx 2c ndr
 - type: "table"
   title: "VPP Comparison Across Testbeds 3n-hsw to 2n-clx 2c ndr"
-  algorithm: "table_perf_comparison_nic"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-compare-testbeds-3n-hsw-2n-clx-2c-ndr"
-  reference:
-    title: "3n-hsw xl710"
-    data: "vpp-compare-testbeds-hsw-clx-ref"
-    nic: "NIC_Intel-XL710"
-  compare:
-    title: "2n-clx xxv710"
-    data: "vpp-compare-testbeds-hsw-clx-cmp"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-compare-testbeds-hsw-clx"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "('NIC_Intel-XXV710' or 'NIC_Intel-XL710') and 'NDRPDR' and '2C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "3n-hsw xl710"
+      data-set: "vpp-compare-testbeds-hsw-clx-ref"
+      tag: "NIC_Intel-XL710"
+    - title: "2n-clx xxv710"
+      data-set: "vpp-compare-testbeds-hsw-clx-cmp"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "3n-hsw xl710, 2n-clx xxv710 - testbeds and NICs tested."
+    - "Diff - difference between 3n-hsw xl710 and 2n-clx xxv710 testbeds."
 
 # VPP Comparison Across Testbeds 3n-hsw to 2n-clx 1c pdr
 - type: "table"
   title: "VPP Comparison Across Testbeds 3n-hsw to 2n-clx 1c pdr"
-  algorithm: "table_perf_comparison_nic"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-compare-testbeds-3n-hsw-2n-clx-1c-pdr"
-  reference:
-    title: "3n-hsw xl710"
-    data: "vpp-compare-testbeds-hsw-clx-ref"
-    nic: "NIC_Intel-XL710"
-  compare:
-    title: "2n-clx xxv710"
-    data: "vpp-compare-testbeds-hsw-clx-cmp"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-compare-testbeds-hsw-clx"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "('NIC_Intel-XXV710' or 'NIC_Intel-XL710') and 'NDRPDR' and '1C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "3n-hsw xl710"
+      data-set: "vpp-compare-testbeds-hsw-clx-ref"
+      tag: "NIC_Intel-XL710"
+    - title: "2n-clx xxv710"
+      data-set: "vpp-compare-testbeds-hsw-clx-cmp"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "3n-hsw xl710, 2n-clx xxv710 - testbeds and NICs tested."
+    - "Diff - difference between 3n-hsw xl710 and 2n-clx xxv710 testbeds."
 
 # VPP Comparison Across Testbeds 3n-hsw to 2n-clx 2c pdr
 - type: "table"
   title: "VPP Comparison Across Testbeds 3n-hsw to 2n-clx 2c pdr"
-  algorithm: "table_perf_comparison_nic"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-compare-testbeds-3n-hsw-2n-clx-2c-pdr"
-  reference:
-    title: "3n-hsw xl710"
-    data: "vpp-compare-testbeds-hsw-clx-ref"
-    nic: "NIC_Intel-XL710"
-  compare:
-    title: "2n-clx xxv710"
-    data: "vpp-compare-testbeds-hsw-clx-cmp"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-compare-testbeds-hsw-clx"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "('NIC_Intel-XXV710' or 'NIC_Intel-XL710') and 'NDRPDR' and '2C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
-  - "tags"
+  columns:
+    - title: "3n-hsw xl710"
+      data-set: "vpp-compare-testbeds-hsw-clx-ref"
+      tag: "NIC_Intel-XL710"
+    - title: "2n-clx xxv710"
+      data-set: "vpp-compare-testbeds-hsw-clx-cmp"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "3n-hsw xl710, 2n-clx xxv710 - testbeds and NICs tested."
+    - "Diff - difference between 3n-hsw xl710 and 2n-clx xxv710 testbeds."
 
 # VPP Comparison Across Topologies 3n-skx to 2n-skx 1c ndr
 - type: "table"
   title: "VPP Comparison Across Topologies 3n-skx to 2n-skx 1c ndr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-compare-topologies-3n-skx-2n-skx-1c-ndr"
-  reference:
-    title: "3n-skx"
-    data: "vpp-compare-topologies-ref"
-  compare:
-    title: "2n-skx"
-    data: "vpp-compare-topologies-cmp"
-  data: "vpp-compare-topologies"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'NDRPDR' and '1C' and 'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
+  columns:
+    - title: "3n-skx"
+      data-set: "vpp-compare-topologies-ref"
+    - title: "2n-skx"
+      data-set: "vpp-compare-topologies-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "3n-skx, 2n-skx - topologies tested."
+    - "Diff - difference between 3n-skx and 2n-skx topologies."
 
 # VPP Comparison Across Topologies 3n-skx to 2n-skx 2c ndr
 - type: "table"
   title: "VPP Comparison Across Topologies 3n-skx to 2n-skx 2c ndr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-compare-topologies-3n-skx-2n-skx-2c-ndr"
-  reference:
-    title: "3n-skx"
-    data: "vpp-compare-topologies-ref"
-  compare:
-    title: "2n-skx"
-    data: "vpp-compare-topologies-cmp"
-  data: "vpp-compare-topologies"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'NDRPDR' and '2C' and 'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
+  columns:
+    - title: "3n-skx"
+      data-set: "vpp-compare-topologies-ref"
+    - title: "2n-skx"
+      data-set: "vpp-compare-topologies-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "3n-skx, 2n-skx - topologies tested."
+    - "Diff - difference between 3n-skx and 2n-skx topologies."
 
 # VPP Comparison Across Topologies 3n-skx to 2n-skx 1c pdr
 - type: "table"
   title: "VPP Comparison Across Topologies 3n-skx to 2n-skx 1c pdr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-compare-topologies-3n-skx-2n-skx-1c-pdr"
-  reference:
-    title: "3n-skx"
-    data: "vpp-compare-topologies-ref"
-  compare:
-    title: "2n-skx"
-    data: "vpp-compare-topologies-cmp"
-  data: "vpp-compare-topologies"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'NDRPDR' and '1C' and 'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
+  columns:
+    - title: "3n-skx"
+      data-set: "vpp-compare-topologies-ref"
+    - title: "2n-skx"
+      data-set: "vpp-compare-topologies-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "3n-skx, 2n-skx - topologies tested."
+    - "Diff - difference between 3n-skx and 2n-skx topologies."
 
 # VPP Comparison Across Topologies 3n-skx to 2n-skx 2c pdr
 - type: "table"
   title: "VPP Comparison Across Topologies 3n-skx to 2n-skx 2c pdr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-compare-topologies-3n-skx-2n-skx-2c-pdr"
-  reference:
-    title: "3n-skx"
-    data: "vpp-compare-topologies-ref"
-  compare:
-    title: "2n-skx"
-    data: "vpp-compare-topologies-cmp"
-  data: "vpp-compare-topologies"
-  include-tests: "PDR"
+  include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'NDRPDR' and '2C' and 'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
+  columns:
+    - title: "3n-skx"
+      data-set: "vpp-compare-topologies-ref"
+    - title: "2n-skx"
+      data-set: "vpp-compare-topologies-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "3n-skx, 2n-skx - topologies tested."
+    - "Diff - difference between 3n-skx and 2n-skx topologies."
 
-# VPP Performance Changes 3n-hsw 1t1c MRR
+# VPP Performance Changes 3n-hsw 1t1c mrr
 - type: "table"
-  title: "VPP Performance Changes 3n-hsw 1t1c MRR"
-  algorithm: "table_perf_comparison"
+  title: "VPP Performance Changes 3n-hsw 1t1c mrr"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-hsw-1t1c-mrr"
-  history:
-    - title: "1904"
-      data: "vpp-performance-changes-3n-hsw-mrr-h1"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-hsw-mrr-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-hsw-mrr-cmp"
-  data: "vpp-performance-changes-3n-hsw-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "'1T1C' and 'MRR' and 'NIC_Intel-XL710' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
+  columns:
+    - title: "1904"
+      data-set: "vpp-performance-changes-3n-hsw-mrr-h1"
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-hsw-mrr-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-hsw-mrr-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
-# VPP Performance Changes 3n-hsw 2t2c MRR
+# VPP Performance Changes 3n-hsw 2t2c mrr
 - type: "table"
-  title: "VPP Performance Changes 3n-hsw 2t2c MRR"
-  algorithm: "table_perf_comparison"
+  title: "VPP Performance Changes 3n-hsw 2t2c mrr"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-hsw-2t2c-mrr"
-  history:
-    - title: "1904"
-      data: "vpp-performance-changes-3n-hsw-mrr-h1"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-hsw-mrr-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-hsw-mrr-cmp"
-  data: "vpp-performance-changes-3n-hsw-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
-  filter: "'2T2C' and 'MRR' and 'NIC_Intel-XL710' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
+  filter: "'2t2c' and 'MRR' and 'NIC_Intel-XL710' and not 'NF_DENSITY'"
+  columns:
+    - title: "1904"
+      data-set: "vpp-performance-changes-3n-hsw-mrr-h1"
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-hsw-mrr-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-hsw-mrr-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
-# VPP Performance Changes 3n-hsw 4t4c MRR
+# VPP Performance Changes 3n-hsw 4t4c mrr
 - type: "table"
-  title: "VPP Performance Changes 3n-hsw 4t4c MRR"
-  algorithm: "table_perf_comparison"
+  title: "VPP Performance Changes 3n-hsw 4t4c mrr"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-hsw-4t4c-mrr"
-  history:
-    - title: "1904"
-      data: "vpp-performance-changes-3n-hsw-mrr-h1"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-hsw-mrr-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-hsw-mrr-cmp"
-  data: "vpp-performance-changes-3n-hsw-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "'4T4C' and 'MRR' and 'NIC_Intel-XL710' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
+  columns:
+    - title: "1904"
+      data-set: "vpp-performance-changes-3n-hsw-mrr-h1"
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-hsw-mrr-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-hsw-mrr-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
-# VPP Performance Changes 3n-skx 2t1c MRR
+# VPP Performance Changes 3n-skx 2t1c mrr
 - type: "table"
-  title: "VPP Performance Changes 3n-skx 2t1c MRR"
-  algorithm: "table_perf_comparison"
+  title: "VPP Performance Changes 3n-skx 2t1c mrr"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-skx-2t1c-mrr"
-#  rca:
-#    title: "RCA"
-#    data-file: "rca/rca-3n-skx-2t1c-mrr.yaml"
-  history:
-    - title: "1904"
-      data: "vpp-performance-changes-3n-skx-mrr-h1"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-skx-mrr-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-skx-mrr-cmp"
-  data: "vpp-performance-changes-3n-skx-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "'2T1C' and 'MRR' and 'NIC_Intel-XXV710' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
+  columns:
+    - title: "1904"
+      data-set: "vpp-performance-changes-3n-skx-mrr-h1"
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-skx-mrr-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-skx-mrr-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
-# VPP Performance Changes 3n-skx 4t2c MRR
+# VPP Performance Changes 3n-skx 4t2c mrr
 - type: "table"
-  title: "VPP Performance Changes 3n-skx 4t2c MRR"
-  algorithm: "table_perf_comparison"
+  title: "VPP Performance Changes 3n-skx 4t2c mrr"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-skx-4t2c-mrr"
-#  rca:
-#    title: "RCA"
-#    data-file: "rca/rca-3n-skx-4t2c-mrr.yaml"
-  history:
-    - title: "1904"
-      data: "vpp-performance-changes-3n-skx-mrr-h1"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-skx-mrr-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-skx-mrr-cmp"
-  data: "vpp-performance-changes-3n-skx-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "'4T2C' and 'MRR' and 'NIC_Intel-XXV710' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
+  columns:
+    - title: "1904"
+      data-set: "vpp-performance-changes-3n-skx-mrr-h1"
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-skx-mrr-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-skx-mrr-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
-# VPP Performance Changes 3n-skx 8t4c MRR
+# VPP Performance Changes 3n-skx 8t4c mrr
 - type: "table"
-  title: "VPP Performance Changes 3n-skx 8t4c MRR"
-  algorithm: "table_perf_comparison"
+  title: "VPP Performance Changes 3n-skx 8t4c mrr"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-skx-8t4c-mrr"
-#  rca:
-#    title: "RCA"
-#    data-file: "rca/rca-3n-skx-8t4c-mrr.yaml"
-  history:
-    - title: "1904"
-      data: "vpp-performance-changes-3n-skx-mrr-h1"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-skx-mrr-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-skx-mrr-cmp"
-  data: "vpp-performance-changes-3n-skx-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "'8T4C' and 'MRR' and 'NIC_Intel-XXV710' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
+  columns:
+    - title: "1904"
+      data-set: "vpp-performance-changes-3n-skx-mrr-h1"
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-skx-mrr-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-skx-mrr-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
-# VPP Performance Changes 2n-skx 2t1c MRR
+# VPP Performance Changes 2n-skx 2t1c mrr
 - type: "table"
-  title: "VPP Performance Changes 2n-skx 2t1c MRR"
-  algorithm: "table_perf_comparison"
+  title: "VPP Performance Changes 2n-skx 2t1c mrr"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-2n-skx-2t1c-mrr"
-#  rca:
-#    title: "RCA"
-#    data-file: "rca/rca-2n-skx-2t1c-mrr.yaml"
-  history:
-    - title: "1904"
-      data: "vpp-performance-changes-2n-skx-mrr-h1"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-2n-skx-mrr-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-2n-skx-mrr-cmp"
-  data: "vpp-performance-changes-2n-skx-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "'2T1C' and 'MRR' and 'NIC_Intel-XXV710' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
+  columns:
+    - title: "1904"
+      data-set: "vpp-performance-changes-2n-skx-mrr-h1"
+    - title: "1908"
+      data-set: "vpp-performance-changes-2n-skx-mrr-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-2n-skx-mrr-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
-# VPP Performance Changes 2n-skx 4t2c MRR
+# VPP Performance Changes 2n-skx 4t2c mrr
 - type: "table"
-  title: "VPP Performance Changes 2n-skx 4t2c MRR"
-  algorithm: "table_perf_comparison"
+  title: "VPP Performance Changes 2n-skx 4t2c mrr"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-2n-skx-4t2c-mrr"
-#  rca:
-#    title: "RCA"
-#    data-file: "rca/rca-2n-skx-4t2c-mrr.yaml"
-  history:
-    - title: "1904"
-      data: "vpp-performance-changes-2n-skx-mrr-h1"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-2n-skx-mrr-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-2n-skx-mrr-cmp"
-  data: "vpp-performance-changes-2n-skx-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "'4T2C' and 'MRR' and 'NIC_Intel-XXV710' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
+  columns:
+    - title: "1904"
+      data-set: "vpp-performance-changes-2n-skx-mrr-h1"
+    - title: "1908"
+      data-set: "vpp-performance-changes-2n-skx-mrr-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-2n-skx-mrr-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
-# VPP Performance Changes 2n-skx 8t4c MRR
+# VPP Performance Changes 2n-skx 8t4c mrr
 - type: "table"
-  title: "VPP Performance Changes 2n-skx 8t4c MRR"
-  algorithm: "table_perf_comparison"
+  title: "VPP Performance Changes 2n-skx 8t4c mrr"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-2n-skx-8t4c-mrr"
-#  rca:
-#    title: "RCA"
-#    data-file: "rca/rca-2n-skx-8t4c-mrr.yaml"
-  history:
-    - title: "1904"
-      data: "vpp-performance-changes-2n-skx-mrr-h1"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-2n-skx-mrr-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-2n-skx-mrr-cmp"
-  data: "vpp-performance-changes-2n-skx-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "'8T4C' and 'MRR' and 'NIC_Intel-XXV710' and not 'NF_DENSITY'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
-
-## VPP Performance Changes NFV Service Density 2n-skx 2t1c mrr
-#- type: "table"
-#  title: "VPP Performance Changes NFV Service Density 2n-skx 2t1c mrr"
-#  algorithm: "table_perf_comparison"
-#  output-file: "{DIR[STATIC,VPP]}/performance-changes-nfv-2n-skx-2t1c-mrr"
-#  reference:
-#    title: "1908"
-#    data: "vpp-performance-changes-nfv-2n-skx-mrr-ref"
-#  compare:
-#    title: "2001"
-#    data: "vpp-performance-changes-nfv-2n-skx-mrr-cmp"
-#  data: "vpp-performance-changes-nfv-2n-skx-mrr"
-#  include-tests: "MRR" # "PDR" | "NDR" | "MRR"
-#  filter: "'2T1C' and 'MRR' and 'NF_DENSITY'"
-#  parameters:
-#  - "name"
-#  - "parent"
-#  - "result"
-#
-## VPP Performance Changes NFV Service Density 2n-skx 4t2c mrr
-#- type: "table"
-#  title: "VPP Performance Changes NFV Service Density 2n-skx 4t2c mrr"
-#  algorithm: "table_perf_comparison"
-#  output-file: "{DIR[STATIC,VPP]}/performance-changes-nfv-2n-skx-4t2c-mrr"
-#  reference:
-#    title: "1908"
-#    data: "vpp-performance-changes-nfv-2n-skx-mrr-ref"
-#  compare:
-#    title: "2001"
-#    data: "vpp-performance-changes-nfv-2n-skx-mrr-cmp"
-#  data: "vpp-performance-changes-nfv-2n-skx-mrr"
-#  include-tests: "MRR" # "PDR" | "NDR" | "MRR"
-#  filter: "'4T2C' and 'MRR' and 'NF_DENSITY'"
-#  parameters:
-#  - "name"
-#  - "parent"
-#  - "result"
-#
-## VPP Performance Changes NFV Service Density 2n-skx 8t4c mrr
-#- type: "table"
-#  title: "VPP Performance Changes NFV Service Density 2n-skx 8t4c mrr"
-#  algorithm: "table_perf_comparison"
-#  output-file: "{DIR[STATIC,VPP]}/performance-changes-nfv-2n-skx-8t4c-mrr"
-#  reference:
-#    title: "1908"
-#    data: "vpp-performance-changes-nfv-2n-skx-mrr-ref"
-#  compare:
-#    title: "2001"
-#    data: "vpp-performance-changes-nfv-2n-skx-mrr-cmp"
-#  data: "vpp-performance-changes-nfv-2n-skx-mrr"
-#  include-tests: "MRR" # "PDR" | "NDR" | "MRR"
-#  filter: "'8T4C' and 'MRR' and 'NF_DENSITY'"
-#  parameters:
-#  - "name"
-#  - "parent"
-#  - "result"
+  columns:
+    - title: "1904"
+      data-set: "vpp-performance-changes-2n-skx-mrr-h1"
+    - title: "1908"
+      data-set: "vpp-performance-changes-2n-skx-mrr-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-2n-skx-mrr-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
-# VPP Performance Changes 2n-dnv 1t1c MRR
+# VPP Performance Changes 2n-dnv 1t1c mrr
 - type: "table"
-  title: "VPP Performance Changes 2n-dnv 1t1c MRR"
-  algorithm: "table_perf_comparison"
+  title: "VPP Performance Changes 2n-dnv 1t1c mrr"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-2n-dnv-1t1c-mrr"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-2n-dnv-mrr-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-2n-dnv-mrr-cmp"
-  data: "vpp-performance-changes-2n-dnv-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
-  filter: "'1T1C' and 'MRR'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
+  filter: "'1T1C'"
+  columns:
+    - title: "1908"
+      data-set: "vpp-performance-changes-2n-dnv-mrr-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-2n-dnv-mrr-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
-# VPP Performance Changes 2n-dnv 2t2c MRR
+# VPP Performance Changes 2n-dnv 2t2c mrr
 - type: "table"
-  title: "VPP Performance Changes 2n-dnv 2t2c MRR"
-  algorithm: "table_perf_comparison"
+  title: "VPP Performance Changes 2n-dnv 2t2c mrr"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-2n-dnv-2t2c-mrr"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-2n-dnv-mrr-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-2n-dnv-mrr-cmp"
-  data: "vpp-performance-changes-2n-dnv-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
-  filter: "'2T2C' and 'MRR'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
+  filter: "'2T2C'"
+  columns:
+    - title: "1908"
+      data-set: "vpp-performance-changes-2n-dnv-mrr-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-2n-dnv-mrr-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
-# VPP Performance Changes 2n-dnv 4t4c MRR
+# VPP Performance Changes 2n-dnv 4t4c mrr
 - type: "table"
-  title: "VPP Performance Changes 2n-dnv 4t4c MRR"
-  algorithm: "table_perf_comparison"
+  title: "VPP Performance Changes 2n-dnv 4t4c mrr"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-2n-dnv-4t4c-mrr"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-2n-dnv-mrr-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-2n-dnv-mrr-cmp"
-  data: "vpp-performance-changes-2n-dnv-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
-  filter: "'4T4C' and 'MRR'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
+  filter: "'4T4C'"
+  columns:
+    - title: "1908"
+      data-set: "vpp-performance-changes-2n-dnv-mrr-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-2n-dnv-mrr-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
-# VPP Performance Changes 3n-dnv 1t1c MRR
+# VPP Performance Changes 3n-dnv 1t1c mrr
 - type: "table"
-  title: "VPP Performance Changes 3n-dnv 1t1c MRR"
-  algorithm: "table_perf_comparison"
+  title: "VPP Performance Changes 3n-dnv 1t1c mrr"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-dnv-1t1c-mrr"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-dnv-mrr-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-dnv-mrr-cmp"
-  data: "vpp-performance-changes-3n-dnv-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
-  filter: "'1T1C' and 'MRR'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
+  filter: "'1T1C'"
+  columns:
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-dnv-mrr-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-dnv-mrr-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
-# VPP Performance Changes 3n-dnv 2t2c MRR
+# VPP Performance Changes 3n-dnv 2t2c mrr
 - type: "table"
-  title: "VPP Performance Changes 3n-dnv 2t2c MRR"
-  algorithm: "table_perf_comparison"
+  title: "VPP Performance Changes 3n-dnv 2t2c mrr"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-dnv-2t2c-mrr"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-dnv-mrr-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-dnv-mrr-cmp"
-  data: "vpp-performance-changes-3n-dnv-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
-  filter: "'2T2C' and 'MRR'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
+  filter: "'2T2C'"
+  columns:
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-dnv-mrr-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-dnv-mrr-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
-# VPP Performance Changes 3n-dnv 4t4c MRR
+# VPP Performance Changes 3n-dnv 4t4c mrr
 - type: "table"
-  title: "VPP Performance Changes 3n-dnv 4t4c MRR"
-  algorithm: "table_perf_comparison"
+  title: "VPP Performance Changes 3n-dnv 4t4c mrr"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-dnv-4t4c-mrr"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-dnv-mrr-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-dnv-mrr-cmp"
-  data: "vpp-performance-changes-3n-dnv-mrr"
-  include-tests: "MRR" # "PDR" | "NDR" | "MRR"
-  filter: "'4T4C' and 'MRR'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
+  include-tests: "MRR" # "PDR" | "NDR" | "MRR"
+  filter: "'4T4C'"
+  columns:
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-dnv-mrr-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-dnv-mrr-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
-# VPP Performance Changes 3n-tsh 1t1c MRR
+# VPP Performance Changes 3n-tsh 1t1c mrr
 - type: "table"
-  title: "VPP Performance Changes 3n-tsh 1t1c MRR"
-  algorithm: "table_perf_comparison"
+  title: "VPP Performance Changes 3n-tsh 1t1c mrr"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-tsh-1t1c-mrr"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-tsh-mrr-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-tsh-mrr-cmp"
-  data: "vpp-performance-changes-3n-tsh-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
-  filter: "'1T1C' and 'MRR'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
+  filter: "'1T1C'"
+  columns:
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-tsh-mrr-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-tsh-mrr-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
-# VPP Performance Changes 3n-tsh 2t2c MRR
+# VPP Performance Changes 3n-tsh 2t2c mrr
 - type: "table"
-  title: "VPP Performance Changes 3n-tsh 2t2c MRR"
-  algorithm: "table_perf_comparison"
+  title: "VPP Performance Changes 3n-tsh 2t2c mrr"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-tsh-2t2c-mrr"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-tsh-mrr-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-tsh-mrr-cmp"
-  data: "vpp-performance-changes-3n-tsh-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
-  filter: "'2T2C' and 'MRR'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
+  filter: "'2T2C'"
+  columns:
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-tsh-mrr-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-tsh-mrr-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
-# VPP Performance Changes 3n-tsh 4t4c MRR
+# VPP Performance Changes 3n-tsh 4t4c mrr
 - type: "table"
-  title: "VPP Performance Changes 3n-tsh 4t4c MRR"
-  algorithm: "table_perf_comparison"
+  title: "VPP Performance Changes 3n-tsh 4t4c mrr"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-changes-3n-tsh-4t4c-mrr"
-  reference:
-    title: "1908"
-    data: "vpp-performance-changes-3n-tsh-mrr-ref"
-  compare:
-    title: "2001"
-    data: "vpp-performance-changes-3n-tsh-mrr-cmp"
-  data: "vpp-performance-changes-3n-tsh-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
-  filter: "'4T4C' and 'MRR'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
+  filter: "'4T4C'"
+  columns:
+    - title: "1908"
+      data-set: "vpp-performance-changes-3n-tsh-mrr-ref"
+    - title: "2001"
+      data-set: "vpp-performance-changes-3n-tsh-mrr-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "1908, 2001 - VPP versions tested."
+    - "Diff - difference between 1908 and 2001 VPP version."
 
 # VPP Comparison Across Testbeds 3n-hsw to 3n-skx 1c mrr
 - type: "table"
   title: "VPP Comparison Across Testbeds 3n-hsw to 3n-skx 1c mrr"
-  algorithm: "table_perf_comparison_nic"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-compare-testbeds-3n-hsw-3n-skx-1c-mrr"
-  reference:
-    title: "3n-hsw xl710"
-    data: "vpp-compare-testbeds-mrr-ref"
-    nic: "NIC_Intel-XL710"
-  compare:
-    title: "3n-skx xxv710"
-    data: "vpp-compare-testbeds-mrr-cmp"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-compare-testbeds-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "('NIC_Intel-XXV710' or 'NIC_Intel-XL710') and 'MRR' and '1C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
-  - "tags"
+  columns:
+    - title: "3n-hsw xl710"
+      data-set: "vpp-compare-testbeds-mrr-ref"
+      tag: "NIC_Intel-XL710"
+    - title: "3n-skx xxv710"
+      data-set: "vpp-compare-testbeds-mrr-cmp"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "3n-hsw xl710, 3n-skx xxv710 - testbeds and NICs tested."
+    - "Diff - difference between 3n-hsw xl710 and 3n-skx xxv710 testbeds."
 
 # VPP Comparison Across Testbeds 3n-hsw to 3n-skx 2c mrr
 - type: "table"
   title: "VPP Comparison Across Testbeds 3n-hsw to 3n-skx 2c mrr"
-  algorithm: "table_perf_comparison_nic"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-compare-testbeds-3n-hsw-3n-skx-2c-mrr"
-  reference:
-    title: "3n-hsw xl710"
-    data: "vpp-compare-testbeds-mrr-ref"
-    nic: "NIC_Intel-XL710"
-  compare:
-    title: "3n-skx xxv710"
-    data: "vpp-compare-testbeds-mrr-cmp"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-compare-testbeds-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "('NIC_Intel-XXV710' or 'NIC_Intel-XL710') and 'MRR' and '2C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
-  - "tags"
+  columns:
+    - title: "3n-hsw xl710"
+      data-set: "vpp-compare-testbeds-mrr-ref"
+      tag: "NIC_Intel-XL710"
+    - title: "3n-skx xxv710"
+      data-set: "vpp-compare-testbeds-mrr-cmp"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "3n-hsw xl710, 3n-skx xxv710 - testbeds and NICs tested."
+    - "Diff - difference between 3n-hsw xl710 and 3n-skx xxv710 testbeds."
 
 # VPP Comparison Across Testbeds 3n-hsw to 3n-skx 4c mrr
 - type: "table"
   title: "VPP Comparison Across Testbeds 3n-hsw to 3n-skx 4c mrr"
-  algorithm: "table_perf_comparison_nic"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-compare-testbeds-3n-hsw-3n-skx-4c-mrr"
-  reference:
-    title: "3n-hsw xl710"
-    data: "vpp-compare-testbeds-mrr-ref"
-    nic: "NIC_Intel-XL710"
-  compare:
-    title: "3n-skx xxv710"
-    data: "vpp-compare-testbeds-mrr-cmp"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-compare-testbeds-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "('NIC_Intel-XXV710' or 'NIC_Intel-XL710') and 'MRR' and '4C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
-  - "tags"
+  columns:
+    - title: "3n-hsw xl710"
+      data-set: "vpp-compare-testbeds-mrr-ref"
+      tag: "NIC_Intel-XL710"
+    - title: "3n-skx xxv710"
+      data-set: "vpp-compare-testbeds-mrr-cmp"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "3n-hsw xl710, 3n-skx xxv710 - testbeds and NICs tested."
+    - "Diff - difference between 3n-hsw xl710 and 3n-skx xxv710 testbeds."
 
 # VPP Comparison Across Testbeds 2n-skx to 2n-clx 2t1c mrr
 - type: "table"
   title: "VPP Comparison Across Testbeds 2n-skx to 2n-clx 2t1c mrr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-compare-testbeds-2n-skx-2n-clx-2t1c-mrr"
-  reference:
-    title: "2n-skx"
-    data: "vpp-compare-testbeds-mrr-skx-clx-ref"
-  compare:
-    title: "2n-clx"
-    data: "vpp-compare-testbeds-mrr-skx-clx-cmp"
-  data: "vpp-compare-testbeds-mrr-skx-clx"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "'2T1C' and 'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
-  - "tags"
+  columns:
+    - title: "2n-skx"
+      data-set: "vpp-compare-testbeds-mrr-skx-clx-ref"
+    - title: "2n-clx"
+      data-set: "vpp-compare-testbeds-mrr-skx-clx-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "2n-skx, 2n-clx - testbeds and NICs tested."
+    - "Diff - difference between 2n-skx and 2n-clx testbeds."
 
 # VPP Comparison Across Testbeds 2n-skx to 2n-clx 4t2c mrr
 - type: "table"
   title: "VPP Comparison Across Testbeds 2n-skx to 2n-clx 4t2c mrr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-compare-testbeds-2n-skx-2n-clx-4t2c-mrr"
-  reference:
-    title: "2n-skx"
-    data: "vpp-compare-testbeds-mrr-skx-clx-ref"
-  compare:
-    title: "2n-clx"
-    data: "vpp-compare-testbeds-mrr-skx-clx-cmp"
-  data: "vpp-compare-testbeds-mrr-skx-clx"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "'4T2C' and 'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
-  - "tags"
+  columns:
+    - title: "2n-skx"
+      data-set: "vpp-compare-testbeds-mrr-skx-clx-ref"
+    - title: "2n-clx"
+      data-set: "vpp-compare-testbeds-mrr-skx-clx-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "2n-skx, 2n-clx - testbeds and NICs tested."
+    - "Diff - difference between 2n-skx and 2n-clx testbeds."
 
 # VPP Comparison Across Testbeds 2n-skx to 2n-clx 8t4c mrr
 - type: "table"
   title: "VPP Comparison Across Testbeds 2n-skx to 2n-clx 8t4c mrr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-compare-testbeds-2n-skx-2n-clx-8t4c-mrr"
-  reference:
-    title: "2n-skx"
-    data: "vpp-compare-testbeds-mrr-skx-clx-ref"
-  compare:
-    title: "2n-clx"
-    data: "vpp-compare-testbeds-mrr-skx-clx-cmp"
-  data: "vpp-compare-testbeds-mrr-skx-clx"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "'8T4C' and 'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
-  - "tags"
+  columns:
+    - title: "2n-skx"
+      data-set: "vpp-compare-testbeds-mrr-skx-clx-ref"
+    - title: "2n-clx"
+      data-set: "vpp-compare-testbeds-mrr-skx-clx-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "2n-skx, 2n-clx - testbeds and NICs tested."
+    - "Diff - difference between 2n-skx and 2n-clx testbeds."
 
 # VPP Comparison Across Topologies 3n-skx to 2n-skx 1c mrr
 - type: "table"
   title: "VPP Comparison Across Topologies 3n-skx to 2n-skx 1c mrr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-compare-topologies-3n-skx-2n-skx-1c-mrr"
-  reference:
-    title: "3n-skx"
-    data: "vpp-compare-topologies-mrr-ref"
-  compare:
-    title: "2n-skx"
-    data: "vpp-compare-topologies-mrr-cmp"
-  data: "vpp-compare-topologies-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "'MRR' and '1C' and 'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
+  columns:
+    - title: "3n-skx"
+      data-set: "vpp-compare-topologies-mrr-ref"
+    - title: "2n-skx"
+      data-set: "vpp-compare-topologies-mrr-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "3n-skx, 2n-skx - topologies tested."
+    - "Diff - difference between 3n-skx and 2n-skx topologies."
 
 # VPP Comparison Across Topologies 3n-skx to 2n-skx 2c mrr
 - type: "table"
   title: "VPP Comparison Across Topologies 3n-skx to 2n-skx 2c mrr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-compare-topologies-3n-skx-2n-skx-2c-mrr"
-  reference:
-    title: "3n-skx"
-    data: "vpp-compare-topologies-mrr-ref"
-  compare:
-    title: "2n-skx"
-    data: "vpp-compare-topologies-mrr-cmp"
-  data: "vpp-compare-topologies-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "'MRR' and '2C' and 'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
+  columns:
+    - title: "3n-skx"
+      data-set: "vpp-compare-topologies-mrr-ref"
+    - title: "2n-skx"
+      data-set: "vpp-compare-topologies-mrr-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "3n-skx, 2n-skx - topologies tested."
+    - "Diff - difference between 3n-skx and 2n-skx topologies."
 
 # VPP Comparison Across Topologies 3n-skx to 2n-skx 4c mrr
 - type: "table"
   title: "VPP Comparison Across Topologies 3n-skx to 2n-skx 4c mrr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-compare-topologies-3n-skx-2n-skx-4c-mrr"
-  reference:
-    title: "3n-skx"
-    data: "vpp-compare-topologies-mrr-ref"
-  compare:
-    title: "2n-skx"
-    data: "vpp-compare-topologies-mrr-cmp"
-  data: "vpp-compare-topologies-mrr"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "'MRR' and '4C' and 'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
+  columns:
+    - title: "3n-skx"
+      data-set: "vpp-compare-topologies-mrr-ref"
+    - title: "2n-skx"
+      data-set: "vpp-compare-topologies-mrr-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "3n-skx, 2n-skx - topologies tested."
+    - "Diff - difference between 3n-skx and 2n-skx topologies."
 
 # VPP Comparison Across Testbeds 3n-hsw to 2n-clx 1c mrr
 - type: "table"
   title: "VPP Comparison Across Testbeds 3n-hsw to 2n-clx 1c mrr"
-  algorithm: "table_perf_comparison_nic"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-compare-testbeds-3n-hsw-2n-clx-1c-mrr"
-  reference:
-    title: "3n-hsw xl710"
-    data: "vpp-compare-testbeds-mrr-hsw-clx-ref"
-    nic: "NIC_Intel-XL710"
-  compare:
-    title: "2n-clx xxv710"
-    data: "vpp-compare-testbeds-mrr-hsw-clx-cmp"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-compare-testbeds-mrr-hsw-clx"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "('NIC_Intel-XXV710' or 'NIC_Intel-XL710') and 'MRR' and '1C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
-  - "tags"
+  columns:
+    - title: "3n-hsw xl710"
+      data-set: "vpp-compare-testbeds-mrr-hsw-clx-ref"
+      tag: "NIC_Intel-XL710"
+    - title: "2n-clx xxv710"
+      data-set: "vpp-compare-testbeds-mrr-hsw-clx-cmp"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "3n-hsw xl710, 2n-clx xxv710 - testbeds and NICs tested."
+    - "Diff - difference between 3n-hsw xl710 and 2n-clx xxv710 testbeds."
 
 # VPP Comparison Across Testbeds 3n-hsw to 2n-clx 2c mrr
 - type: "table"
   title: "VPP Comparison Across Testbeds 3n-hsw to 2n-clx 2c mrr"
-  algorithm: "table_perf_comparison_nic"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-compare-testbeds-3n-hsw-2n-clx-2c-mrr"
-  reference:
-    title: "3n-hsw xl710"
-    data: "vpp-compare-testbeds-mrr-hsw-clx-ref"
-    nic: "NIC_Intel-XL710"
-  compare:
-    title: "2n-clx xxv710"
-    data: "vpp-compare-testbeds-mrr-hsw-clx-cmp"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-compare-testbeds-mrr-hsw-clx"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "('NIC_Intel-XXV710' or 'NIC_Intel-XL710') and 'MRR' and '2C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
-  - "tags"
+  columns:
+    - title: "3n-hsw xl710"
+      data-set: "vpp-compare-testbeds-mrr-hsw-clx-ref"
+      tag: "NIC_Intel-XL710"
+    - title: "2n-clx xxv710"
+      data-set: "vpp-compare-testbeds-mrr-hsw-clx-cmp"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "3n-hsw xl710, 2n-clx xxv710 - testbeds and NICs tested."
+    - "Diff - difference between 3n-hsw xl710 and 2n-clx xxv710 testbeds."
 
 # VPP Comparison Across Testbeds 3n-hsw to 2n-clx 4c mrr
 - type: "table"
   title: "VPP Comparison Across Testbeds 3n-hsw to 2n-clx 4c mrr"
-  algorithm: "table_perf_comparison_nic"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,VPP]}/performance-compare-testbeds-3n-hsw-2n-clx-4c-mrr"
-  reference:
-    title: "3n-hsw xl710"
-    data: "vpp-compare-testbeds-mrr-hsw-clx-ref"
-    nic: "NIC_Intel-XL710"
-  compare:
-    title: "2n-clx xxv710"
-    data: "vpp-compare-testbeds-mrr-hsw-clx-cmp"
-    nic: "NIC_Intel-XXV710"
-  data: "vpp-compare-testbeds-mrr-hsw-clx"
   include-tests: "MRR" # "PDR" | "NDR" | "MRR"
   filter: "('NIC_Intel-XXV710' or 'NIC_Intel-XL710') and 'MRR' and '4C'"
-  parameters:
-  - "name"
-  - "parent"
-  - "result"
-  - "tags"
+  columns:
+    - title: "3n-hsw xl710"
+      data-set: "vpp-compare-testbeds-mrr-hsw-clx-ref"
+      tag: "NIC_Intel-XL710"
+    - title: "2n-clx xxv710"
+      data-set: "vpp-compare-testbeds-mrr-hsw-clx-cmp"
+      tag: "NIC_Intel-XXV710"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "3n-hsw xl710, 2n-clx xxv710 - testbeds and NICs tested."
+    - "Diff - difference between 3n-hsw xl710 and 2n-clx xxv710 testbeds."
 
 # Detailed Test Results - VPP Performance Results 3n-hsw
 - type: "table"
 # DPDK Performance Changes 3n-hsw 1t1c pdr
 - type: "table"
   title: "DPDK Performance Changes 3n-hsw 1t1c pdr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,DPDK]}/performance-changes-3n-hsw-1t1c-pdr"
-  history:
-    - title: "1904"
-      data: "dpdk-performance-changes-3n-hsw-h1"
-  reference:
-    title: "1908"
-    data: "dpdk-performance-changes-3n-hsw-ref"
-  compare:
-    title: "2001"
-    data: "dpdk-performance-changes-3n-hsw-cmp"
-  data: "dpdk-performance-changes-3n-hsw"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'1T1C' and 'NDRPDR' and 'NIC_Intel-XL710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
+  columns:
+    - title: "1904"
+      data-set: "dpdk-performance-changes-3n-hsw-h1"
+    - title: "1908"
+      data-set: "dpdk-performance-changes-3n-hsw-ref"
+    - title: "2001"
+      data-set: "dpdk-performance-changes-3n-hsw-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - DPDK versions tested."
+    - "Diff - difference between 1908 and 2001 DPDK version."
 
 # DPDK Performance Changes 3n-hsw 2t2c pdr
 - type: "table"
   title: "DPDK Performance Changes 3n-hsw 2t2c pdr"
-  algorithm: "table_perf_comparison"
-  output-file: "{DIR[STATIC,DPDK]}/performance-changes-3n-hsw-2t2c-pdr"
-  history:
-    - title: "1904"
-      data: "dpdk-performance-changes-3n-hsw-h1"
-  reference:
-    title: "1908"
-    data: "dpdk-performance-changes-3n-hsw-ref"
-  compare:
-    title: "2001"
-    data: "dpdk-performance-changes-3n-hsw-cmp"
-  data: "dpdk-performance-changes-3n-hsw"
-  include-tests: "PDR" # "PDR" | "NDR" | "MRR"
-  filter: "'2T2C' and 'NDRPDR' and 'NIC_Intel-XL710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
+  algorithm: "table_comparison"
+  output-file: "{DIR[STATIC,DPDK]}/performance-changes-3n-hsw-2t2c-pdr"
+  include-tests: "PDR" # "PDR" | "NDR" | "MRR"
+  filter: "'2T2C' and 'NDRPDR' and 'NIC_Intel-XL710'"
+  columns:
+    - title: "1904"
+      data-set: "dpdk-performance-changes-3n-hsw-h1"
+    - title: "1908"
+      data-set: "dpdk-performance-changes-3n-hsw-ref"
+    - title: "2001"
+      data-set: "dpdk-performance-changes-3n-hsw-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - DPDK versions tested."
+    - "Diff - difference between 1908 and 2001 DPDK version."
 
-# DPDK Performance Changes 3n-hsw 1t1c ndr
+# DPDK Performance Changes 3n-hsw 1t1c pdr
 - type: "table"
   title: "DPDK Performance Changes 3n-hsw 1t1c ndr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,DPDK]}/performance-changes-3n-hsw-1t1c-ndr"
-  history:
-    - title: "1904"
-      data: "dpdk-performance-changes-3n-hsw-h1"
-  reference:
-    title: "1908"
-    data: "dpdk-performance-changes-3n-hsw-ref"
-  compare:
-    title: "2001"
-    data: "dpdk-performance-changes-3n-hsw-cmp"
-  data: "dpdk-performance-changes-3n-hsw"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'1T1C' and 'NDRPDR' and 'NIC_Intel-XL710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
+  columns:
+    - title: "1904"
+      data-set: "dpdk-performance-changes-3n-hsw-h1"
+    - title: "1908"
+      data-set: "dpdk-performance-changes-3n-hsw-ref"
+    - title: "2001"
+      data-set: "dpdk-performance-changes-3n-hsw-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - DPDK versions tested."
+    - "Diff - difference between 1908 and 2001 DPDK version."
 
 # DPDK Performance Changes 3n-hsw 2t2c ndr
 - type: "table"
   title: "DPDK Performance Changes 3n-hsw 2t2c ndr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,DPDK]}/performance-changes-3n-hsw-2t2c-ndr"
-  history:
-    - title: "1904"
-      data: "dpdk-performance-changes-3n-hsw-h1"
-  reference:
-    title: "1908"
-    data: "dpdk-performance-changes-3n-hsw-ref"
-  compare:
-    title: "2001"
-    data: "dpdk-performance-changes-3n-hsw-cmp"
-  data: "dpdk-performance-changes-3n-hsw"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'2T2C' and 'NDRPDR' and 'NIC_Intel-XL710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
+  columns:
+    - title: "1904"
+      data-set: "dpdk-performance-changes-3n-hsw-h1"
+    - title: "1908"
+      data-set: "dpdk-performance-changes-3n-hsw-ref"
+    - title: "2001"
+      data-set: "dpdk-performance-changes-3n-hsw-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - DPDK versions tested."
+    - "Diff - difference between 1908 and 2001 DPDK version."
 
 # DPDK Performance Changes 3n-skx 2t1c pdr
 - type: "table"
   title: "DPDK Performance Changes 3n-skx 2t1c pdr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,DPDK]}/performance-changes-3n-skx-2t1c-pdr"
-  history:
-    - title: "1904"
-      data: "dpdk-performance-changes-3n-skx-h1"
-  reference:
-    title: "1908"
-    data: "dpdk-performance-changes-3n-skx-ref"
-  compare:
-    title: "2001"
-    data: "dpdk-performance-changes-3n-skx-cmp"
-  data: "dpdk-performance-changes-3n-skx"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'2T1C' and 'NDRPDR' and 'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
+  columns:
+    - title: "1904"
+      data-set: "dpdk-performance-changes-3n-skx-h1"
+    - title: "1908"
+      data-set: "dpdk-performance-changes-3n-skx-ref"
+    - title: "2001"
+      data-set: "dpdk-performance-changes-3n-skx-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - DPDK versions tested."
+    - "Diff - difference between 1908 and 2001 DPDK version."
 
 # DPDK Performance Changes 3n-skx 4t2c pdr
 - type: "table"
   title: "DPDK Performance Changes 3n-skx 4t2c pdr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,DPDK]}/performance-changes-3n-skx-4t2c-pdr"
-  history:
-    - title: "1904"
-      data: "dpdk-performance-changes-3n-skx-h1"
-  reference:
-    title: "1908"
-    data: "dpdk-performance-changes-3n-skx-ref"
-  compare:
-    title: "2001"
-    data: "dpdk-performance-changes-3n-skx-cmp"
-  data: "dpdk-performance-changes-3n-skx"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'4T2C' and 'NDRPDR' and 'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
+  columns:
+    - title: "1904"
+      data-set: "dpdk-performance-changes-3n-skx-h1"
+    - title: "1908"
+      data-set: "dpdk-performance-changes-3n-skx-ref"
+    - title: "2001"
+      data-set: "dpdk-performance-changes-3n-skx-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - DPDK versions tested."
+    - "Diff - difference between 1908 and 2001 DPDK version."
 
 # DPDK Performance Changes 3n-skx 2t1c ndr
 - type: "table"
   title: "DPDK Performance Changes 3n-skx 2t1c ndr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,DPDK]}/performance-changes-3n-skx-2t1c-ndr"
-  history:
-    - title: "1904"
-      data: "dpdk-performance-changes-3n-skx-h1"
-  reference:
-    title: "1908"
-    data: "dpdk-performance-changes-3n-skx-ref"
-  compare:
-    title: "2001"
-    data: "dpdk-performance-changes-3n-skx-cmp"
-  data: "dpdk-performance-changes-3n-skx"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'2T1C' and 'NDRPDR' and 'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
+  columns:
+    - title: "1904"
+      data-set: "dpdk-performance-changes-3n-skx-h1"
+    - title: "1908"
+      data-set: "dpdk-performance-changes-3n-skx-ref"
+    - title: "2001"
+      data-set: "dpdk-performance-changes-3n-skx-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - DPDK versions tested."
+    - "Diff - difference between 1908 and 2001 DPDK version."
 
 # DPDK Performance Changes 3n-skx 4t2c ndr
 - type: "table"
   title: "DPDK Performance Changes 3n-skx 4t2c ndr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,DPDK]}/performance-changes-3n-skx-4t2c-ndr"
-  history:
-    - title: "1904"
-      data: "dpdk-performance-changes-3n-skx-h1"
-  reference:
-    title: "1908"
-    data: "dpdk-performance-changes-3n-skx-ref"
-  compare:
-    title: "2001"
-    data: "dpdk-performance-changes-3n-skx-cmp"
-  data: "dpdk-performance-changes-3n-skx"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'4T2C' and 'NDRPDR' and 'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
+  columns:
+    - title: "1904"
+      data-set: "dpdk-performance-changes-3n-skx-h1"
+    - title: "1908"
+      data-set: "dpdk-performance-changes-3n-skx-ref"
+    - title: "2001"
+      data-set: "dpdk-performance-changes-3n-skx-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - DPDK versions tested."
+    - "Diff - difference between 1908 and 2001 DPDK version."
 
 # DPDK Performance Changes 2n-skx 2t1c pdr
 - type: "table"
   title: "DPDK Performance Changes 2n-skx 2t1c pdr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,DPDK]}/performance-changes-2n-skx-2t1c-pdr"
-  history:
-    - title: "1904"
-      data: "dpdk-performance-changes-2n-skx-h1"
-  reference:
-    title: "1908"
-    data: "dpdk-performance-changes-2n-skx-ref"
-  compare:
-    title: "2001"
-    data: "dpdk-performance-changes-2n-skx-cmp"
-  data: "dpdk-performance-changes-2n-skx"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'2T1C' and 'NDRPDR' and 'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
+  columns:
+    - title: "1904"
+      data-set: "dpdk-performance-changes-2n-skx-h1"
+    - title: "1908"
+      data-set: "dpdk-performance-changes-2n-skx-ref"
+    - title: "2001"
+      data-set: "dpdk-performance-changes-2n-skx-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - DPDK versions tested."
+    - "Diff - difference between 1908 and 2001 DPDK version."
 
 # DPDK Performance Changes 2n-skx 4t2c pdr
 - type: "table"
   title: "DPDK Performance Changes 2n-skx 4t2c pdr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,DPDK]}/performance-changes-2n-skx-4t2c-pdr"
-  history:
-    - title: "1904"
-      data: "dpdk-performance-changes-2n-skx-h1"
-  reference:
-    title: "1908"
-    data: "dpdk-performance-changes-2n-skx-ref"
-  compare:
-    title: "2001"
-    data: "dpdk-performance-changes-2n-skx-cmp"
-  data: "dpdk-performance-changes-2n-skx"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'4T2C' and 'NDRPDR' and 'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
+  columns:
+    - title: "1904"
+      data-set: "dpdk-performance-changes-2n-skx-h1"
+    - title: "1908"
+      data-set: "dpdk-performance-changes-2n-skx-ref"
+    - title: "2001"
+      data-set: "dpdk-performance-changes-2n-skx-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - DPDK versions tested."
+    - "Diff - difference between 1908 and 2001 DPDK version."
 
 # DPDK Performance Changes 2n-skx 2t1c ndr
 - type: "table"
   title: "DPDK Performance Changes 2n-skx 2t1c ndr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,DPDK]}/performance-changes-2n-skx-2t1c-ndr"
-  history:
-    - title: "1904"
-      data: "dpdk-performance-changes-2n-skx-h1"
-  reference:
-    title: "1908"
-    data: "dpdk-performance-changes-2n-skx-ref"
-  compare:
-    title: "2001"
-    data: "dpdk-performance-changes-2n-skx-cmp"
-  data: "dpdk-performance-changes-2n-skx"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'2T1C' and 'NDRPDR' and 'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
+  columns:
+    - title: "1904"
+      data-set: "dpdk-performance-changes-2n-skx-h1"
+    - title: "1908"
+      data-set: "dpdk-performance-changes-2n-skx-ref"
+    - title: "2001"
+      data-set: "dpdk-performance-changes-2n-skx-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - DPDK versions tested."
+    - "Diff - difference between 1908 and 2001 DPDK version."
 
 # DPDK Performance Changes 2n-skx 4t2c ndr
 - type: "table"
   title: "DPDK Performance Changes 2n-skx 4t2c ndr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,DPDK]}/performance-changes-2n-skx-4t2c-ndr"
-  history:
-    - title: "1904"
-      data: "dpdk-performance-changes-2n-skx-h1"
-  reference:
-    title: "1908"
-    data: "dpdk-performance-changes-2n-skx-ref"
-  compare:
-    title: "2001"
-    data: "dpdk-performance-changes-2n-skx-cmp"
-  data: "dpdk-performance-changes-2n-skx"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'4T2C' and 'NDRPDR' and 'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
+  columns:
+    - title: "1904"
+      data-set: "dpdk-performance-changes-2n-skx-h1"
+    - title: "1908"
+      data-set: "dpdk-performance-changes-2n-skx-ref"
+    - title: "2001"
+      data-set: "dpdk-performance-changes-2n-skx-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 2
+      compare: 3
+  legend:
+    - "Legend to Table"
+    - "1904, 1908, 2001 - DPDK versions tested."
+    - "Diff - difference between 1908 and 2001 DPDK version."
 
 # DPDK Comparison Across Testbeds 3n-hsw to 3n-skx ndr
 - type: "table"
   title: "DPDK Comparison Across Testbeds 3n-hsw to 3n-skx ndr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,DPDK]}/performance-compare-testbeds-3n-hsw-3n-skx-ndr"
-  reference:
-    title: "3n-hsw"
-    data: "dpdk-compare-testbeds-ref"
-  compare:
-    title: "3n-skx"
-    data: "dpdk-compare-testbeds-cmp"
-  data: "dpdk-compare-testbeds"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'NIC_Intel-X710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
+  columns:
+    - title: "3n-hsw x710"
+      data-set: "dpdk-compare-testbeds-ref"
+    - title: "3n-skx x710"
+      data-set: "dpdk-compare-testbeds-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "3n-hsw x710, 3n-skx x710 - testbeds and NICs tested."
+    - "Diff - difference between 3n-hsw x710 and 3n-skx x710 testbeds."
 
 # DPDK Comparison Across Testbeds 3n-hsw to 3n-skx pdr
 - type: "table"
   title: "DPDK Comparison Across Testbeds 3n-hsw to 3n-skx pdr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,DPDK]}/performance-compare-testbeds-3n-hsw-3n-skx-pdr"
-  reference:
-    title: "3n-hsw"
-    data: "dpdk-compare-testbeds-ref"
-  compare:
-    title: "3n-skx"
-    data: "dpdk-compare-testbeds-cmp"
-  data: "dpdk-compare-testbeds"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'NIC_Intel-X710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
+  columns:
+    - title: "3n-hsw x710"
+      data-set: "dpdk-compare-testbeds-ref"
+    - title: "3n-skx x710"
+      data-set: "dpdk-compare-testbeds-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "3n-hsw x710, 3n-skx x710 - testbeds and NICs tested."
+    - "Diff - difference between 3n-hsw x710 and 3n-skx x710 testbeds."
 
 # DPDK Comparison Across Testbeds 2n-skx to 2n-clx ndr
 - type: "table"
   title: "DPDK Comparison Across Testbeds 2n-skx to 2n-clx ndr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,DPDK]}/performance-compare-testbeds-2n-skx-2n-clx-ndr"
-  reference:
-    title: "2n-skx"
-    data: "dpdk-compare-testbeds-skx-clx-ref"
-  compare:
-    title: "2n-clx"
-    data: "dpdk-compare-testbeds-skx-clx-cmp"
-  data: "dpdk-compare-testbeds-skx-clx"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
+  columns:
+    - title: "2n-skx"
+      data-set: "dpdk-compare-testbeds-skx-clx-ref"
+    - title: "2n-clx"
+      data-set: "dpdk-compare-testbeds-skx-clx-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "2n-skx, 2n-clx - testbeds and NICs tested."
+    - "Diff - difference between 2n-skx and 2n-clx testbeds."
 
 # DPDK Comparison Across Testbeds 2n-skx to 2n-clx pdr
 - type: "table"
   title: "DPDK Comparison Across Testbeds 2n-skx to 2n-clx pdr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,DPDK]}/performance-compare-testbeds-2n-skx-2n-clx-pdr"
-  reference:
-    title: "2n-skx"
-    data: "dpdk-compare-testbeds-skx-clx-ref"
-  compare:
-    title: "2n-clx"
-    data: "dpdk-compare-testbeds-skx-clx-cmp"
-  data: "dpdk-compare-testbeds-skx-clx"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
+  columns:
+    - title: "2n-skx"
+      data-set: "dpdk-compare-testbeds-skx-clx-ref"
+    - title: "2n-clx"
+      data-set: "dpdk-compare-testbeds-skx-clx-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "2n-skx, 2n-clx - testbeds and NICs tested."
+    - "Diff - difference between 2n-skx and 2n-clx testbeds."
 
 # DPDK Comparison Across Topologies 3n-skx to 2n-skx ndr
 - type: "table"
   title: "DPDK Comparison Across Topologies 3n-skx to 2n-skx ndr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,DPDK]}/performance-compare-topologies-3n-skx-2n-skx-ndr"
-  reference:
-    title: "3n-skx"
-    data: "dpdk-compare-topologies-ref"
-  compare:
-    title: "2n-skx"
-    data: "dpdk-compare-topologies-cmp"
-  data: "dpdk-compare-topologies"
   include-tests: "NDR" # "PDR" | "NDR" | "MRR"
   filter: "'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
+  columns:
+    - title: "3n-skx"
+      data-set: "dpdk-compare-topologies-ref"
+    - title: "2n-skx"
+      data-set: "dpdk-compare-topologies-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "3n-skx, 2n-skx - topologies tested."
+    - "Diff - difference between 3n-skx and 2n-skx topologies."
 
 # DPDK Comparison Across Topologies 3n-skx to 2n-skx pdr
 - type: "table"
   title: "DPDK Comparison Across Topologies 3n-skx to 2n-skx pdr"
-  algorithm: "table_perf_comparison"
+  algorithm: "table_comparison"
   output-file: "{DIR[STATIC,DPDK]}/performance-compare-topologies-3n-skx-2n-skx-pdr"
-  reference:
-    title: "3n-skx"
-    data: "dpdk-compare-topologies-ref"
-  compare:
-    title: "2n-skx"
-    data: "dpdk-compare-topologies-cmp"
-  data: "dpdk-compare-topologies"
   include-tests: "PDR" # "PDR" | "NDR" | "MRR"
   filter: "'NIC_Intel-XXV710'"
-  parameters:
-  - "name"
-  - "parent"
-  - "throughput"
+  columns:
+    - title: "3n-skx"
+      data-set: "dpdk-compare-topologies-ref"
+    - title: "2n-skx"
+      data-set: "dpdk-compare-topologies-cmp"
+  comparisons:
+    - title: "Diff"
+      reference: 1
+      compare: 2
+  legend:
+    - "Legend to Table"
+    - "3n-skx, 2n-skx - topologies tested."
+    - "Diff - difference between 3n-skx and 2n-skx topologies."
 
 # Detailed Test Results - DPDK Performance Results 3n-hsw
 - type: "table"