diff --git a/darshan-util/pydarshan/darshan/backend/cffi_backend.py b/darshan-util/pydarshan/darshan/backend/cffi_backend.py index 5a62f3ad8..8b64dd490 100644 --- a/darshan-util/pydarshan/darshan/backend/cffi_backend.py +++ b/darshan-util/pydarshan/darshan/backend/cffi_backend.py @@ -70,6 +70,8 @@ "APXC", "APMPI", "HEATMAP", + "DFS", + "DAOS", ] def mod_name_to_idx(mod_name): return _mod_names.index(mod_name) diff --git a/darshan-util/pydarshan/darshan/cli/summary.py b/darshan-util/pydarshan/darshan/cli/summary.py index 9daf06a9c..da3b70aec 100644 --- a/darshan-util/pydarshan/darshan/cli/summary.py +++ b/darshan-util/pydarshan/darshan/cli/summary.py @@ -508,7 +508,7 @@ def register_figures(self): sect_title = f"Per-Module Statistics: {mod}" try: - if mod in ["POSIX", "MPI-IO", "STDIO"]: + if mod in ["POSIX", "MPI-IO", "STDIO", "DFS", "DAOS"]: # get the module's record dataframe and then pass to # Darshan accumulator interface to generate a cumulative # record and derived metrics @@ -526,9 +526,10 @@ def register_figures(self): fig_grid_area="overview") self.figures.append(mod_overview_fig) + data_type = "File" if mod != "DAOS" else "Object" file_count_summary_fig = ReportFigure( section_title=sect_title, - fig_title=f"File Count Summary
(estimated by {mod} I/O access offsets)", + fig_title=f"{data_type} Count Summary
(estimated by {mod} I/O access offsets)", fig_func=log_file_count_summary_table, fig_args=dict(derived_metrics=acc.derived_metrics, mod_name=mod), diff --git a/darshan-util/pydarshan/darshan/lib/accum.py b/darshan-util/pydarshan/darshan/lib/accum.py index 4d40ee0da..c8d8702f3 100644 --- a/darshan-util/pydarshan/darshan/lib/accum.py +++ b/darshan-util/pydarshan/darshan/lib/accum.py @@ -10,18 +10,19 @@ def log_file_count_summary_table(derived_metrics, mod_name: str): + data_type = "files" if mod_name != "DAOS" else "objects" # the darshan_file_category enum is not really # exposed in CFFI/Python layer, so we effectively # re-export the content indices we need here # so that we can properly index the C-level data - darshan_file_category = {"total files":0, - "read-only files":1, - "write-only files":2, - "read/write files":3} + darshan_file_category = {f"total {data_type}":0, + f"read-only {data_type}":1, + f"write-only {data_type}":2, + f"read/write {data_type}":3} df = pd.DataFrame.from_dict(darshan_file_category, orient="index") df.rename(columns={0:"index"}, inplace=True) df.index.rename('type', inplace=True) - df["number of files"] = np.zeros(4, dtype=int) + df[f"number of {data_type}"] = np.zeros(4, dtype=int) df["avg. size"] = np.zeros(4, dtype=str) df["max size"] = np.zeros(4, dtype=str) @@ -59,9 +60,10 @@ def log_module_overview_table(derived_metrics, mod_overview = [] total_cat = derived_metrics.category_counters[0] - total_files = total_cat.count - indices = ["files accessed", "bytes read", "bytes written", "I/O performance estimate"] - mod_overview.append(f"{total_files}") + total_count = total_cat.count + data_type = "files" if mod_name != "DAOS" else "objects" + indices = [f"{data_type} accessed", "bytes read", "bytes written", "I/O performance estimate"] + mod_overview.append(f"{total_count}") total_bytes_read = total_cat.total_read_volume_bytes total_bytes_read_str = humanize.naturalsize(total_bytes_read, binary=True, format="%.2f") total_bytes_written = total_cat.total_write_volume_bytes