Align compact GPU metrics

This commit is contained in:
2026-06-25 11:25:42 +08:00
parent 77c22ab21f
commit b8f007fd5c
2 changed files with 29 additions and 13 deletions

View File

@@ -328,8 +328,8 @@ def gpu_memory_percent(gpu: GPUStat) -> float | None:
def format_percent(value: float | None) -> str:
if value is None:
return "??"
return f"{value:.0f}"
return " ?.?"
return f"{value:5.1f}"
def metric_style(value: float | None) -> str:
@@ -357,18 +357,11 @@ def format_memory_pair(gpu: GPUStat) -> str:
used = gpu.memory_used_mib
total = gpu.memory_total_mib
if used is None or total is None or total <= 0:
return "??"
return " ?.?/ ?.?G"
if used >= 1024 or total >= 1024:
return f"{format_gib(used)}/{format_gib(total)}G"
return f"{used:.0f}/{total:.0f}M"
def format_gib(value: float) -> str:
gib = value / 1024
if gib >= 10 or gib.is_integer():
return f"{gib:.0f}"
return f"{gib:.1f}"
return f"{used / 1024:5.1f}/{total / 1024:5.1f}G"
return f"{used:5.1f}/{total:5.1f}M"
def build_parser() -> argparse.ArgumentParser:

View File

@@ -2,7 +2,14 @@ from pathlib import Path
from tempfile import TemporaryDirectory
import unittest
from mm.cli import load_machines, parse_nvidia_smi_csv
from mm.cli import (
GPUStat,
MachineConfig,
MachineResult,
gpu_summary,
load_machines,
parse_nvidia_smi_csv,
)
class ConfigTests(unittest.TestCase):
@@ -59,5 +66,21 @@ class NvidiaSmiParsingTests(unittest.TestCase):
self.assertEqual(gpus[1].power_draw_w, 49.8)
class RenderingTests(unittest.TestCase):
def test_gpu_summary_uses_fixed_width_decimal_metrics(self) -> None:
result = MachineResult(
machine=MachineConfig(alias="dash0", label="dash0"),
gpus=(
GPUStat("0", "GPU", 88 * 1024, 96 * 1024, 0, None, None, None),
GPUStat("1", "GPU", 0, 96 * 1024, 0, None, None, None),
),
)
self.assertEqual(
gpu_summary(result).plain,
"0 88.0/ 96.0G 0.0% 1 0.0/ 96.0G 0.0%",
)
if __name__ == "__main__":
unittest.main()