Align compact GPU metrics
This commit is contained in:
17
mm/cli.py
17
mm/cli.py
@@ -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:
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user