From b48fe71c6aa5828dc5a421e90721e0609fb66f93 Mon Sep 17 00:00:00 2001 From: Derek Feichtinger Date: Tue, 2 Jun 2026 17:13:50 +0200 Subject: [PATCH] define MaxRSS_max as an additional sample row --- slurm-eff-tool.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/slurm-eff-tool.py b/slurm-eff-tool.py index fb44503..04a28d1 100755 --- a/slurm-eff-tool.py +++ b/slurm-eff-tool.py @@ -65,6 +65,7 @@ DEFAULT_COLUMNS = [ "Nodes", "ReqMem", "MemPerCPU", + "MaxRSS_max", "ReqWalltime", "Count", "CPU_Efficiency", @@ -136,6 +137,7 @@ class OutputRow: Memory_Efficiency: float | None Time_Efficiency: float | None jobname: str + maxrss_max: float | None _cpu_eff_values: list[float] = field(default_factory=list, repr=False) _mem_eff_values: list[float] = field(default_factory=list, repr=False) _time_eff_values: list[float] = field(default_factory=list, repr=False) @@ -147,6 +149,7 @@ class OutputRow: "CPUs": self.CPUs, "Nodes": self.Nodes, "ReqMem": self.ReqMem, + "MaxRSS_max": self.maxrss_max, "MemPerCPU": self.MemPerCPU, "ReqWalltime": self.ReqWalltime, "Count": self.Count, @@ -480,6 +483,7 @@ def make_single_row(rec: JobRecord) -> OutputRow: Memory_Efficiency=rec.mem_eff, Time_Efficiency=rec.time_eff, jobname=rec.jobname, + maxrss_max=rec.maxrss_bytes / (1024**3) if rec.maxrss_bytes is not None else None, _cpu_eff_values=[rec.cpu_eff] if rec.cpu_eff is not None else [], _mem_eff_values=[rec.mem_eff] if rec.mem_eff is not None else [], _time_eff_values=[rec.time_eff] if rec.time_eff is not None else [], @@ -505,7 +509,7 @@ def make_aggregate_row(records: list[JobRecord], username: str, jobname: str) -> Memory_Efficiency=mean_or_none(mem_eff_vals), Time_Efficiency=mean_or_none(time_eff_vals), jobname=jobname, - Testcolumn=10, + maxrss_max=max([r.maxrss_bytes for r in records if r.maxrss_bytes is not None]) / (1024**3) or None, _cpu_eff_values=cpu_eff_vals, _mem_eff_values=mem_eff_vals, _time_eff_values=time_eff_vals, @@ -570,7 +574,7 @@ def columns_for_sdev(base_cols: list[str]) -> list[str]: -def format_reqmem_gb(value: float | None) -> str: +def format_gb_value(value: float | None) -> str: if value is None: return "NA" return f"{value:.2f}G" @@ -583,10 +587,8 @@ def format_reqwall_hours(value: float | None) -> str: def format_value(value: Any, column: str | None = None) -> str: - if column == "ReqMem": - return format_reqmem_gb(value) - if column == "MemPerCPU": - return format_reqmem_gb(value) + if column in ["ReqMem", "MemPerCPU", "MaxRSS_max"]: + return format_gb_value(value) if column == "ReqWalltime": return format_reqwall_hours(value)