From d3b342222be767e97725a4f87051b4742711edca Mon Sep 17 00:00:00 2001 From: nileshnegi Date: Fri, 20 Mar 2026 23:58:44 -0500 Subject: [PATCH 01/24] feat(cluster-mon): Add BaseCollector ABC and complete Pydantic config migration - backend/app/collectors/base.py: BaseCollector ABC with collect_timeout, asyncio.wait_for enforcement, supervisor-compatible run(), CollectorState, CollectorResult dataclass - backend/app/core/config.py: Complete Settings with _YamlSource, StorageConfig, RCCLConfig, backward-compat properties for existing main.py - backend/tests/: Initial test suite for BaseCollector and Settings --- .../backend/app/collectors/base.py | 130 +++++++++ .../cluster-mon/backend/app/core/config.py | 268 +++++++++--------- cvs/monitors/cluster-mon/backend/pytest.ini | 2 + .../cluster-mon/backend/tests/__init__.py | 0 .../backend/tests/test_base_collector.py | 213 ++++++++++++++ .../cluster-mon/backend/tests/test_config.py | 75 +++++ 6 files changed, 558 insertions(+), 130 deletions(-) create mode 100644 cvs/monitors/cluster-mon/backend/app/collectors/base.py create mode 100644 cvs/monitors/cluster-mon/backend/pytest.ini create mode 100644 cvs/monitors/cluster-mon/backend/tests/__init__.py create mode 100644 cvs/monitors/cluster-mon/backend/tests/test_base_collector.py create mode 100644 cvs/monitors/cluster-mon/backend/tests/test_config.py diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/base.py b/cvs/monitors/cluster-mon/backend/app/collectors/base.py new file mode 100644 index 00000000..17c1403c --- /dev/null +++ b/cvs/monitors/cluster-mon/backend/app/collectors/base.py @@ -0,0 +1,130 @@ +""" +BaseCollector ABC and supporting types for CVS cluster-mon collectors. +""" + +from abc import ABC, abstractmethod +from dataclasses import dataclass, field +from datetime import datetime, timezone +from enum import Enum +from typing import Any, Optional +import asyncio +import logging + +logger = logging.getLogger(__name__) + + +class CollectorState(str, Enum): + OK = "ok" + NO_SERVICE = "no_service" # Service not running (e.g. no RCCL job) + UNREACHABLE = "unreachable" # SSH/TCP timeout — node down + ERROR = "error" # Parse or protocol failure + + +@dataclass +class CollectorResult: + collector_name: str + timestamp: str # ISO-8601 UTC string + state: CollectorState + data: dict[str, Any] + error: Optional[str] = None + node_errors: dict[str, bool] = field(default_factory=dict) + + @staticmethod + def now_iso() -> str: + return datetime.now(timezone.utc).isoformat() + + +class BaseCollector(ABC): + name: str # class-level attribute — set on each subclass + poll_interval: int # seconds between collection cycles + collect_timeout: float # max seconds per collect() call + critical: bool = False # if True, failures affect overall_status as "critical" + + @abstractmethod + async def collect(self, ssh_manager) -> CollectorResult: + """ + One collection cycle. Must NOT raise — all errors go into CollectorResult. + ssh_manager is Union[Pssh, JumpHostPssh]. + Must call ssh_manager.exec_async() (not exec()) to avoid blocking the event loop. + """ + ... + + async def run(self, ssh_manager, app_state: Any) -> None: + """ + Default task body. Loops until app_state.is_collecting is False. + Wraps collect() in asyncio.wait_for to enforce collect_timeout. + Subclasses with non-poll lifecycles (e.g. RCCL monitor mode) override this. + """ + while app_state.is_collecting: + try: + result = await asyncio.wait_for( + self.collect(ssh_manager), + timeout=self.collect_timeout, + ) + except asyncio.TimeoutError: + logger.warning( + f"{self.name} collect() timed out after {self.collect_timeout}s" + ) + result = CollectorResult( + collector_name=self.name, + timestamp=CollectorResult.now_iso(), + state=CollectorState.ERROR, + data={}, + error=f"collect() timed out after {self.collect_timeout}s", + ) + except asyncio.CancelledError: + raise + except ConnectionError as e: + logger.error(f"{self.name} collector ConnectionError: {e}") + if hasattr(app_state, 'probe_requested') and app_state.probe_requested: + app_state.probe_requested.set() + result = CollectorResult( + collector_name=self.name, + timestamp=CollectorResult.now_iso(), + state=CollectorState.UNREACHABLE, + data={}, + error=str(e), + ) + except Exception as e: + logger.error( + f"{self.name} collector unexpected error: {e}", exc_info=True + ) + result = CollectorResult( + collector_name=self.name, + timestamp=CollectorResult.now_iso(), + state=CollectorState.ERROR, + data={}, + error=str(e), + ) + + # Store per-collector result + if hasattr(app_state, 'collector_results'): + app_state.collector_results[self.name] = result + + # Node health update — only GPU collector populates node_errors + if hasattr(app_state, 'node_health_status'): + for node, has_error in result.node_errors.items(): + _update_node_status_via_app_state(app_state, node, has_error) + + # Update latest_metrics for WebSocket broadcast + if hasattr(app_state, 'latest_metrics'): + app_state.latest_metrics[self.name] = result.data + app_state.latest_metrics["timestamp"] = result.timestamp + + # Broadcast (imported lazily to avoid circular imports) + try: + from app.main import broadcast_metrics + await broadcast_metrics(app_state.latest_metrics) + except Exception as e: + logger.debug(f"broadcast_metrics not available: {e}") + + await asyncio.sleep(self.poll_interval) + + +def _update_node_status_via_app_state(app_state: Any, node: str, has_error: bool) -> None: + """Update node health status via app_state. Avoids circular import from main.""" + try: + from app.main import update_node_status + update_node_status(node, has_error, "unreachable") + except Exception: + pass diff --git a/cvs/monitors/cluster-mon/backend/app/core/config.py b/cvs/monitors/cluster-mon/backend/app/core/config.py index 3a9df112..c53595f2 100644 --- a/cvs/monitors/cluster-mon/backend/app/core/config.py +++ b/cvs/monitors/cluster-mon/backend/app/core/config.py @@ -1,175 +1,183 @@ """ -Configuration management for GPU cluster monitor. +Configuration management for CVS Cluster Monitor. +Uses pydantic-settings with a YAML source and env var overrides. """ -from pydantic_settings import BaseSettings -from pydantic import Field -from typing import Optional, List +from pydantic import BaseModel, Field +from pydantic_settings import BaseSettings, PydanticBaseSettingsSource, SettingsConfigDict +from typing import Any, Optional, Tuple, Type, List import yaml from pathlib import Path +import os -class JumpHostConfig(BaseSettings): - """Jump host (bastion) configuration.""" +class JumpHostConfig(BaseModel): + enabled: bool = False + host: Optional[str] = None + username: str = "root" + password: Optional[str] = None + key_file: str = "~/.ssh/id_rsa" + node_username: str = "root" # replaces: node_username_via_jumphost + node_key_file: str = "~/.ssh/id_rsa" # replaces: node_key_file_on_jumphost - enabled: bool = Field(default=False, description="Enable jump host") - host: Optional[str] = Field(default=None, description="Jump host IP/hostname") - username: str = Field(default="root", description="Jump host username") - password: Optional[str] = Field(default=None, description="Jump host password") - key_file: str = Field(default="~/.ssh/id_rsa", description="Jump host SSH key") +class SSHConfig(BaseModel): + username: str = "root" + key_file: str = "~/.ssh/id_rsa" + password: Optional[str] = None + timeout: int = 30 + jump_host: JumpHostConfig = Field(default_factory=JumpHostConfig) -class ClusterSSHConfig(BaseSettings): - """SSH configuration for cluster nodes.""" - username: str = Field(default="root", description="SSH username") - password: Optional[str] = Field(default=None, description="SSH password") - key_file: str = Field(default="~/.ssh/id_rsa", description="SSH private key file") - timeout: int = Field(default=30, description="SSH timeout in seconds") - jump_host: JumpHostConfig = Field(default_factory=JumpHostConfig, description="Jump host config") +class PollingConfig(BaseModel): + interval: int = 60 + batch_size: int = 10 + stagger_delay: int = 2 + failure_threshold: int = 5 -class PollingConfig(BaseSettings): - """Polling configuration.""" +class AlertsConfig(BaseModel): + gpu_temp_threshold: float = 85.0 + gpu_util_threshold: float = 95.0 - interval: int = Field(default=15, description="Polling interval in seconds") - batch_size: int = Field(default=10, description="Number of nodes per batch") - stagger_delay: int = Field(default=2, description="Delay between batches in seconds") +class RedisConfig(BaseModel): + url: str = "redis://localhost:6379" + db: int = 0 + snapshot_max_entries: int = 1000 + event_max_entries: int = 10000 -class RedisConfig(BaseSettings): - """Redis configuration.""" - - host: str = Field(default="localhost", description="Redis host") - port: int = Field(default=6379, description="Redis port") - password: Optional[str] = Field(default=None, description="Redis password") - db: int = Field(default=0, description="Redis database number") - ttl: int = Field(default=900, description="TTL for cached data in seconds (15 min)") +class StorageConfig(BaseModel): + redis: RedisConfig = Field(default_factory=RedisConfig) -class InfluxDBConfig(BaseSettings): - """InfluxDB configuration.""" - url: str = Field(default="http://localhost:8086", description="InfluxDB URL") - token: Optional[str] = Field(default=None, description="InfluxDB auth token") - org: str = Field(default="gpu-monitor", description="InfluxDB organization") - bucket: str = Field(default="gpu_cluster", description="InfluxDB bucket") +class RCCLConfig(BaseModel): + """Forward-declaration for RCCL extension config. No runtime behaviour in base robustness spec.""" + ras_port: int = 28028 + poll_interval: int = 30 + collective_timeout_secs: int = 10 + debug_log_path: Optional[str] = None -class AlertConfig(BaseSettings): - """Alert threshold configuration.""" +class _YamlSource(PydanticBaseSettingsSource): + """ + Loads cluster.yaml as a pydantic-settings source. + Compatible with pydantic-settings 2.1.0. + """ - gpu_temp_threshold: float = Field(default=85.0, description="GPU temperature threshold (C)") - gpu_util_threshold: float = Field(default=95.0, description="GPU utilization threshold (%)") - gpu_mem_threshold: float = Field(default=95.0, description="GPU memory threshold (%)") - error_count_threshold: int = Field(default=10, description="Error count threshold") - nic_error_threshold: int = Field(default=100, description="NIC error count threshold") + def __init__(self, settings_cls: Type[BaseSettings], yaml_path: Path): + super().__init__(settings_cls) + self._path = yaml_path + def __call__(self) -> dict[str, Any]: + if self._path.exists(): + raw = yaml.safe_load(self._path.read_text()) or {} + return raw.get("cluster", {}) + return {} -class Settings(BaseSettings): - """Main application settings.""" + def get_field_value(self, field: Any, field_name: str) -> tuple[Any, str, bool]: + # Required by PydanticBaseSettingsSource ABC in pydantic-settings 2.1.0. + # Not called when __call__() returns the full dict; stub satisfies the ABC. + raise NotImplementedError - # Application - app_name: str = "GPU Cluster Monitor" - debug: bool = False + def field_is_complex(self, field: Any) -> bool: + return True - # Cluster nodes - nodes_file: str = Field(default="../config/nodes.txt", description="File with node IPs") - nodes: List[str] = Field(default_factory=list, description="List of node IPs") - # Sub-configurations - ssh: ClusterSSHConfig = Field(default_factory=ClusterSSHConfig) +class Settings(BaseSettings): + app_name: str = "CVS Cluster Monitor" + api_prefix: str = "/api" + cors_origins: List[str] = Field(default_factory=lambda: [ + "http://localhost:3000", + "http://localhost:5173", + ]) + nodes_file: str = "config/nodes.txt" + ssh: SSHConfig = Field(default_factory=SSHConfig) polling: PollingConfig = Field(default_factory=PollingConfig) - redis: RedisConfig = Field(default_factory=RedisConfig) - influxdb: InfluxDBConfig = Field(default_factory=InfluxDBConfig) - alerts: AlertConfig = Field(default_factory=AlertConfig) + alerts: AlertsConfig = Field(default_factory=AlertsConfig) + storage: StorageConfig = Field(default_factory=StorageConfig) + rccl: RCCLConfig = Field(default_factory=RCCLConfig) - # API - api_prefix: str = "/api" - cors_origins: List[str] = Field( - default_factory=lambda: [ - "http://localhost:3000", - "http://localhost:5173", - # Configured via environment or simple_config.py - ] - ) + model_config = SettingsConfigDict(env_nested_delimiter="__") - class Config: - env_file = ".env" - env_nested_delimiter = "__" - extra = "allow" # Allow extra fields for YAML loading compatibility + @classmethod + def settings_customise_sources( + cls, + settings_cls: Type[BaseSettings], + init_settings: PydanticBaseSettingsSource, + env_settings: PydanticBaseSettingsSource, + dotenv_settings: PydanticBaseSettingsSource, + file_secret_settings: PydanticBaseSettingsSource, + ) -> Tuple[PydanticBaseSettingsSource, ...]: + # Try Docker path first, then dev path + yaml_path = Path("/app/config/cluster.yaml") + if not yaml_path.exists(): + yaml_path = Path("../config/cluster.yaml") + return ( + init_settings, + env_settings, # env vars override YAML + _YamlSource(settings_cls, yaml_path), # YAML is primary source + file_secret_settings, + ) def load_nodes_from_file(self) -> List[str]: - """Load node IPs from file.""" - nodes_path = Path(self.nodes_file) - if nodes_path.exists(): - with open(nodes_path) as f: - nodes = [line.strip() for line in f if line.strip() and not line.startswith("#")] - self.nodes = nodes - return nodes + """Load node IPs from nodes file, trying multiple paths.""" + possible_paths = [ + Path("/app/config/nodes.txt"), + Path("../config/nodes.txt"), + Path(self.nodes_file), + ] + for p in possible_paths: + p = p.resolve() + if p.exists(): + nodes = [ + line.strip() + for line in p.read_text().splitlines() + if line.strip() and not line.startswith("#") + ] + if nodes: + return nodes return [] - @classmethod - def load_from_yaml(cls, yaml_file: str) -> "Settings": - """Load settings from YAML file.""" - with open(yaml_file) as f: - config_data = yaml.safe_load(f) + # Backward-compat properties used in existing main.py and api/config.py + # These will be removed after main.py is fully migrated. + @property + def node_username_via_jumphost(self) -> str: + return self.ssh.jump_host.node_username - # Flatten nested structure for Pydantic - settings_dict = {} + @property + def node_key_file_on_jumphost(self) -> str: + return self.ssh.jump_host.node_key_file - if "cluster" in config_data: - cluster = config_data["cluster"] + @property + def ssh_username(self) -> str: + return self.ssh.username - if "nodes_file" in cluster: - settings_dict["nodes_file"] = cluster["nodes_file"] + @property + def ssh_password(self) -> Optional[str]: + return self.ssh.password - if "ssh" in cluster: - for key, value in cluster["ssh"].items(): - if key == "jump_host" and isinstance(value, dict): - # Handle nested jump_host configuration - for jh_key, jh_value in value.items(): - settings_dict[f"ssh__jump_host__{jh_key}"] = jh_value - else: - settings_dict[f"ssh__{key}"] = value + @property + def ssh_key_file(self) -> str: + return self.ssh.key_file - if "polling" in cluster: - for key, value in cluster["polling"].items(): - settings_dict[f"polling__{key}"] = value + @property + def jump_host_enabled(self) -> bool: + return self.ssh.jump_host.enabled - if "storage" in cluster: - storage = cluster["storage"] - if "redis" in storage: - for key, value in storage["redis"].items(): - settings_dict[f"redis__{key}"] = value - if "influxdb" in storage: - for key, value in storage["influxdb"].items(): - settings_dict[f"influxdb__{key}"] = value + @property + def jump_host(self) -> Optional[str]: + return self.ssh.jump_host.host - if "alerts" in cluster: - for key, value in cluster["alerts"].items(): - settings_dict[f"alerts__{key}"] = value + @property + def jump_host_username(self) -> str: + return self.ssh.jump_host.username - return cls(**settings_dict) + @property + def jump_host_key_file(self) -> str: + return self.ssh.jump_host.key_file # Global settings instance -# Try to load from YAML first, fall back to defaults -try: - # Get absolute path to config file (relative to backend directory) - yaml_path = Path("../config/cluster.yaml").resolve() - - if yaml_path.exists(): - print(f"Loading configuration from: {yaml_path}") - settings = Settings.load_from_yaml(str(yaml_path)) - print(f"Jump host enabled: {settings.ssh.jump_host.enabled}") - print(f"Jump host: {settings.ssh.jump_host.host}") - else: - print(f"YAML file not found at: {yaml_path}, using defaults") - settings = Settings() -except Exception as e: - print(f"Error loading YAML config: {e}") - import traceback - - traceback.print_exc() - settings = Settings() +settings = Settings() diff --git a/cvs/monitors/cluster-mon/backend/pytest.ini b/cvs/monitors/cluster-mon/backend/pytest.ini new file mode 100644 index 00000000..2f4c80e3 --- /dev/null +++ b/cvs/monitors/cluster-mon/backend/pytest.ini @@ -0,0 +1,2 @@ +[pytest] +asyncio_mode = auto diff --git a/cvs/monitors/cluster-mon/backend/tests/__init__.py b/cvs/monitors/cluster-mon/backend/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/cvs/monitors/cluster-mon/backend/tests/test_base_collector.py b/cvs/monitors/cluster-mon/backend/tests/test_base_collector.py new file mode 100644 index 00000000..b19b74ad --- /dev/null +++ b/cvs/monitors/cluster-mon/backend/tests/test_base_collector.py @@ -0,0 +1,213 @@ +""" +Tests for BaseCollector ABC, CollectorResult, CollectorState. +Uses TDD - written before/alongside implementation. +""" +import asyncio +import pytest +from unittest.mock import AsyncMock, MagicMock, patch + +from app.collectors.base import ( + BaseCollector, + CollectorResult, + CollectorState, +) + + +# ── Concrete test subclass ────────────────────────────────────────────────── + + +class FakeCollector(BaseCollector): + name = "fake" + poll_interval = 1 + collect_timeout = 5.0 + critical = False + + def __init__(self, result: CollectorResult = None, raise_exc=None): + self._result = result or CollectorResult( + collector_name="fake", + timestamp=CollectorResult.now_iso(), + state=CollectorState.OK, + data={"value": 42}, + ) + self._raise_exc = raise_exc + self.collect_call_count = 0 + + async def collect(self, ssh_manager) -> CollectorResult: + self.collect_call_count += 1 + if self._raise_exc: + raise self._raise_exc + return self._result + + +class HangingCollector(BaseCollector): + name = "hanging" + poll_interval = 1 + collect_timeout = 0.1 # very short — will timeout + critical = False + + async def collect(self, ssh_manager) -> CollectorResult: + # Use an Event that is never set so collect() genuinely blocks, + # even if asyncio.sleep is patched in the test. + await asyncio.Event().wait() + return CollectorResult( + collector_name=self.name, + timestamp=CollectorResult.now_iso(), + state=CollectorState.OK, + data={}, + ) + + +# ── CollectorResult tests ─────────────────────────────────────────────────── + + +def test_collector_result_now_iso_is_utc(): + ts = CollectorResult.now_iso() + assert "T" in ts + assert ts.endswith("+00:00") or ts.endswith("Z") or "UTC" in ts or "+00" in ts + + +def test_collector_result_defaults(): + result = CollectorResult( + collector_name="gpu", + timestamp="2026-01-01T00:00:00+00:00", + state=CollectorState.OK, + data={"x": 1}, + ) + assert result.error is None + assert result.node_errors == {} + + +# ── CollectorState tests ──────────────────────────────────────────────────── + + +def test_collector_state_values(): + assert CollectorState.OK == "ok" + assert CollectorState.NO_SERVICE == "no_service" + assert CollectorState.UNREACHABLE == "unreachable" + assert CollectorState.ERROR == "error" + + +# ── BaseCollector.collect() is abstract ───────────────────────────────────── + + +def test_base_collector_is_abstract(): + with pytest.raises(TypeError): + BaseCollector() # cannot instantiate abstract class + + +# ── BaseCollector.run() — timeout enforcement ──────────────────────────────── + + +@pytest.mark.asyncio +async def test_run_times_out_and_produces_error_result(): + """If collect() hangs beyond collect_timeout, run() produces an ERROR result.""" + collector = HangingCollector() + ssh_manager = MagicMock() + + app_state = MagicMock() + app_state.is_collecting = True + app_state.collector_results = {} + app_state.latest_metrics = {} + app_state.probe_requested = None # no probe event + + # Run one iteration then stop + call_count = 0 + original_sleep = asyncio.sleep + + async def stop_after_one(seconds): + nonlocal call_count + call_count += 1 + app_state.is_collecting = False + await original_sleep(0) + + with patch("asyncio.sleep", side_effect=stop_after_one): + with patch("app.collectors.base._update_node_status_via_app_state"): + # broadcast_metrics is imported lazily inside run(); the import + # will fail in the test environment, but that's caught by the + # try/except inside run(). No need to patch it. + task = asyncio.create_task(collector.run(ssh_manager, app_state)) + await original_sleep(0.5) # let it run + task.cancel() + try: + await task + except asyncio.CancelledError: + pass + + # The collector_results should have an ERROR entry from timeout + if "hanging" in app_state.collector_results: + result = app_state.collector_results["hanging"] + assert result.state == CollectorState.ERROR + assert "timed out" in result.error.lower() + + +@pytest.mark.asyncio +async def test_run_cancelled_error_propagates(): + """CancelledError must propagate out of run() without being swallowed.""" + collector = FakeCollector() + ssh_manager = MagicMock() + app_state = MagicMock() + app_state.is_collecting = True + app_state.collector_results = {} + app_state.latest_metrics = {} + app_state.probe_requested = None + + task = asyncio.create_task(collector.run(ssh_manager, app_state)) + await asyncio.sleep(0.01) + task.cancel() + with pytest.raises(asyncio.CancelledError): + await task + + +@pytest.mark.asyncio +async def test_run_connection_error_sets_probe_requested(): + """ConnectionError in collect() should call probe_requested.set().""" + collector = FakeCollector(raise_exc=ConnectionError("SSH timeout")) + ssh_manager = MagicMock() + + probe_event = asyncio.Event() + app_state = MagicMock() + app_state.is_collecting = True + app_state.collector_results = {} + app_state.latest_metrics = {} + app_state.probe_requested = probe_event + + task = asyncio.create_task(collector.run(ssh_manager, app_state)) + await asyncio.sleep(0.05) + task.cancel() + try: + await task + except asyncio.CancelledError: + pass + + assert probe_event.is_set() + + +# ── Config tests ───────────────────────────────────────────────────────────── + + +def test_settings_defaults(): + from app.core.config import Settings + s = Settings() + assert s.polling.interval == 60 + assert s.polling.failure_threshold == 5 + assert s.rccl.ras_port == 28028 + assert s.storage.redis.url == "redis://localhost:6379" + + +def test_settings_backward_compat_properties(): + from app.core.config import Settings + s = Settings() + # These properties must exist for the existing main.py to keep working + assert hasattr(s, 'node_username_via_jumphost') + assert hasattr(s, 'node_key_file_on_jumphost') + assert hasattr(s, 'ssh_username') + + +def test_collector_state_str_enum(): + # CollectorState must be usable as a string (for JSON serialization) + # In Python 3.10, str() on (str, Enum) returns "ClassName.MEMBER", + # but the value and f-string formatting yield the raw string. + assert CollectorState.OK.value == "ok" + assert f"{CollectorState.OK}" == "ok" + # Enum equality with str works because CollectorState inherits from str + assert CollectorState.OK == "ok" diff --git a/cvs/monitors/cluster-mon/backend/tests/test_config.py b/cvs/monitors/cluster-mon/backend/tests/test_config.py new file mode 100644 index 00000000..004a468f --- /dev/null +++ b/cvs/monitors/cluster-mon/backend/tests/test_config.py @@ -0,0 +1,75 @@ +"""Tests for the new pydantic Settings config.""" +import pytest +from app.core.config import ( + Settings, + JumpHostConfig, + SSHConfig, + PollingConfig, + RCCLConfig, + StorageConfig, + RedisConfig, +) + + +def test_jump_host_config_defaults(): + cfg = JumpHostConfig() + assert cfg.enabled is False + assert cfg.node_username == "root" + assert cfg.node_key_file == "~/.ssh/id_rsa" + + +def test_ssh_config_has_jump_host(): + cfg = SSHConfig() + assert isinstance(cfg.jump_host, JumpHostConfig) + assert cfg.timeout == 30 + + +def test_polling_config_defaults(): + cfg = PollingConfig() + assert cfg.interval == 60 + assert cfg.failure_threshold == 5 + + +def test_rccl_config_defaults(): + cfg = RCCLConfig() + assert cfg.ras_port == 28028 + assert cfg.poll_interval == 30 + assert cfg.collective_timeout_secs == 10 + assert cfg.debug_log_path is None + + +def test_storage_redis_config_defaults(): + cfg = StorageConfig() + assert cfg.redis.url == "redis://localhost:6379" + assert cfg.redis.db == 0 + assert cfg.redis.snapshot_max_entries == 1000 + assert cfg.redis.event_max_entries == 10000 + + +def test_settings_has_all_sections(): + s = Settings() + assert hasattr(s, 'ssh') + assert hasattr(s, 'polling') + assert hasattr(s, 'alerts') + assert hasattr(s, 'storage') + assert hasattr(s, 'rccl') + + +def test_settings_env_nested_delimiter(): + """Verify env_nested_delimiter is set so POLLING__INTERVAL=30 works.""" + from app.core.config import Settings + import os + os.environ['POLLING__INTERVAL'] = '45' + s = Settings() + assert s.polling.interval == 45 + del os.environ['POLLING__INTERVAL'] + + +def test_settings_load_nodes_from_file_missing(): + """load_nodes_from_file returns [] when no file exists.""" + from app.core.config import Settings + s = Settings() + # In test environment, no nodes.txt at the expected paths + # Result should be [] (not an exception) + result = s.load_nodes_from_file() + assert isinstance(result, list) From 4ae8db056154092d2ed16618f0c2b5498bd104de Mon Sep 17 00:00:00 2001 From: nileshnegi Date: Sat, 21 Mar 2026 00:05:26 -0500 Subject: [PATCH 02/24] fix(cluster-mon/base): fix code quality issues from review - Log debug message instead of silently swallowing exception in _update_node_status_via_app_state - Document shared timestamp design decision in latest_metrics - Fix env var leak in test_settings_env_nested_delimiter (use monkeypatch) - Remove conditional assertion in timeout test (unconditional assert) --- cvs/monitors/cluster-mon/backend/app/collectors/base.py | 9 +++++++-- .../cluster-mon/backend/tests/test_base_collector.py | 9 +++++---- cvs/monitors/cluster-mon/backend/tests/test_config.py | 7 +++---- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/base.py b/cvs/monitors/cluster-mon/backend/app/collectors/base.py index 17c1403c..942ef636 100644 --- a/cvs/monitors/cluster-mon/backend/app/collectors/base.py +++ b/cvs/monitors/cluster-mon/backend/app/collectors/base.py @@ -109,6 +109,11 @@ async def run(self, ssh_manager, app_state: Any) -> None: # Update latest_metrics for WebSocket broadcast if hasattr(app_state, 'latest_metrics'): app_state.latest_metrics[self.name] = result.data + # Shared timestamp key: last-writer-wins across collectors. + # This preserves the existing WebSocket contract + # {"gpu": ..., "nic": ..., "timestamp": "..."}. + # Clients needing per-collector timestamps should use + # GET /api/collectors/status instead. app_state.latest_metrics["timestamp"] = result.timestamp # Broadcast (imported lazily to avoid circular imports) @@ -126,5 +131,5 @@ def _update_node_status_via_app_state(app_state: Any, node: str, has_error: bool try: from app.main import update_node_status update_node_status(node, has_error, "unreachable") - except Exception: - pass + except Exception as e: + logger.debug(f"update_node_status not available: {e}") diff --git a/cvs/monitors/cluster-mon/backend/tests/test_base_collector.py b/cvs/monitors/cluster-mon/backend/tests/test_base_collector.py index b19b74ad..361406a5 100644 --- a/cvs/monitors/cluster-mon/backend/tests/test_base_collector.py +++ b/cvs/monitors/cluster-mon/backend/tests/test_base_collector.py @@ -134,10 +134,11 @@ async def stop_after_one(seconds): pass # The collector_results should have an ERROR entry from timeout - if "hanging" in app_state.collector_results: - result = app_state.collector_results["hanging"] - assert result.state == CollectorState.ERROR - assert "timed out" in result.error.lower() + assert "hanging" in app_state.collector_results, \ + "Expected collector_results to have 'hanging' entry after timeout" + result = app_state.collector_results["hanging"] + assert result.state == CollectorState.ERROR + assert "timed out" in result.error.lower() @pytest.mark.asyncio diff --git a/cvs/monitors/cluster-mon/backend/tests/test_config.py b/cvs/monitors/cluster-mon/backend/tests/test_config.py index 004a468f..312e6a59 100644 --- a/cvs/monitors/cluster-mon/backend/tests/test_config.py +++ b/cvs/monitors/cluster-mon/backend/tests/test_config.py @@ -55,14 +55,13 @@ def test_settings_has_all_sections(): assert hasattr(s, 'rccl') -def test_settings_env_nested_delimiter(): +def test_settings_env_nested_delimiter(monkeypatch): """Verify env_nested_delimiter is set so POLLING__INTERVAL=30 works.""" from app.core.config import Settings - import os - os.environ['POLLING__INTERVAL'] = '45' + monkeypatch.setenv('POLLING__INTERVAL', '45') s = Settings() assert s.polling.interval == 45 - del os.environ['POLLING__INTERVAL'] + # monkeypatch automatically cleans up after the test def test_settings_load_nodes_from_file_missing(): From 395aa5f311b38d076bc171ae02517e968821feb1 Mon Sep 17 00:00:00 2001 From: nileshnegi Date: Sat, 21 Mar 2026 00:13:05 -0500 Subject: [PATCH 03/24] feat(cluster-mon): Add SSH port-forwarding support - backend/app/core/ssh_port_forward.py: _run_bridge() bidirectional socketpair bridge (no ephemeral port allocation, no TOCTOU race) - backend/app/core/jump_host_pssh.py: Add _exec_lock to serialize concurrent exec() calls; fix exec_async() to use asyncio.to_thread; remove dead _make_proxy(); add open_port_forward() async ctx manager - backend/app/core/cvs_parallel_ssh_reliable.py: Add _pf_clients pool, _get_pf_transport(), open_port_forward(), update destroy_clients() --- .../app/core/cvs_parallel_ssh_reliable.py | 93 ++++++++ .../backend/app/core/jump_host_pssh.py | 212 +++++++++++------- .../backend/app/core/ssh_port_forward.py | 69 ++++++ .../backend/tests/test_ssh_port_forward.py | 112 +++++++++ 4 files changed, 408 insertions(+), 78 deletions(-) create mode 100644 cvs/monitors/cluster-mon/backend/app/core/ssh_port_forward.py create mode 100644 cvs/monitors/cluster-mon/backend/tests/test_ssh_port_forward.py diff --git a/cvs/monitors/cluster-mon/backend/app/core/cvs_parallel_ssh_reliable.py b/cvs/monitors/cluster-mon/backend/app/core/cvs_parallel_ssh_reliable.py index 28cdbf7e..bbd44154 100644 --- a/cvs/monitors/cluster-mon/backend/app/core/cvs_parallel_ssh_reliable.py +++ b/cvs/monitors/cluster-mon/backend/app/core/cvs_parallel_ssh_reliable.py @@ -9,6 +9,10 @@ from pssh.clients import ParallelSSHClient from pssh.exceptions import Timeout, ConnectionError +import asyncio +import socket +from contextlib import asynccontextmanager +from typing import AsyncIterator import time import logging import threading @@ -20,6 +24,7 @@ # TCP probe for fast reachability detection from app.core.host_probe import discover_reachable_hosts +from app.core.ssh_port_forward import _run_bridge # Module-level logger logger = logging.getLogger(__name__) @@ -113,6 +118,9 @@ def __init__( f"{len(self.reachable_hosts)} reachable, {len(self.unreachable_hosts)} unreachable" ) + self._pf_clients: dict[str, paramiko.SSHClient] = {} + self._pf_lock = threading.Lock() # protects _pf_clients dict + # Only create ParallelSSHClient with reachable hosts if not self.reachable_hosts: logger.warning("No reachable hosts found! SSH manager will be inactive") @@ -442,10 +450,95 @@ def reboot_connections(self): print('Rebooting Connections') self.client.run_command('reboot -f', stop_on_errors=self.stop_on_errors) + def _get_pf_transport(self, node: str) -> paramiko.Transport: + """ + Get or create a dedicated paramiko SSH client for port-forwarding to node. + Thread-safe. Separate from the pssh connection pool (which does not expose transports). + + Security note: Uses AutoAddPolicy() (TOFU). See plan for hardening options. + """ + with self._pf_lock: + client = self._pf_clients.get(node) + transport = client.get_transport() if client else None + if transport is None or not transport.is_active(): + new_client = paramiko.SSHClient() + new_client.set_missing_host_key_policy( + paramiko.AutoAddPolicy() + # Security note: AutoAddPolicy() accepts any host key without + # verification (TOFU). Production hardening: pre-distribute known + # host keys via Ansible/Puppet and use RejectPolicy() + a + # pre-populated known_hosts file, or use OpenSSH certificate auth. + ) + new_client.connect( + node, + username=self.user, + key_filename=self.pkey, + password=self.password, + timeout=self.timeout, + ) + if client: + try: + client.close() # close the stale connection before replacing + except Exception: + pass + self._pf_clients[node] = new_client + return self._pf_clients[node].get_transport() + + @asynccontextmanager + async def open_port_forward( + self, node: str, remote_port: int + ) -> AsyncIterator[tuple]: + """ + Open a single-hop SSH tunnel: monitoring_host -> node:remote_port. + + Yields (asyncio.StreamReader, asyncio.StreamWriter) ready for asyncio use. + Uses a Unix socketpair() -- no ephemeral TCP port allocation, no TOCTOU race. + """ + asyncio_end, thread_end = socket.socketpair(socket.AF_UNIX, socket.SOCK_STREAM) + try: + transport = await asyncio.to_thread(self._get_pf_transport, node) + channel = await asyncio.to_thread( + transport.open_channel, + "direct-tcpip", + (node, remote_port), + ("127.0.0.1", 0), + ) + except Exception: + asyncio_end.close() + thread_end.close() + raise + + _run_bridge(channel, thread_end) + + try: + reader, writer = await asyncio.open_connection(sock=asyncio_end) + except Exception: + asyncio_end.close() + channel.close() + raise + + try: + yield reader, writer + finally: + writer.close() + try: + await writer.wait_closed() + except Exception: + pass + channel.close() + thread_end.close() + def destroy_clients(self): print('Destroying Current phdl connections ..') if self.client: del self.client + with self._pf_lock: + for c in self._pf_clients.values(): + try: + c.close() + except Exception: + pass + self._pf_clients.clear() async def exec_async(self, cmd, timeout=None, print_console=True): """ diff --git a/cvs/monitors/cluster-mon/backend/app/core/jump_host_pssh.py b/cvs/monitors/cluster-mon/backend/app/core/jump_host_pssh.py index c5ea5c69..66c8f933 100644 --- a/cvs/monitors/cluster-mon/backend/app/core/jump_host_pssh.py +++ b/cvs/monitors/cluster-mon/backend/app/core/jump_host_pssh.py @@ -3,11 +3,18 @@ Based on working test_auth_script.py approach. """ -import paramiko -from typing import List, Optional, Dict +import asyncio +from contextlib import asynccontextmanager +from typing import List, Optional, Dict, AsyncIterator import logging +import socket +import threading import time +import paramiko + +from app.core.ssh_port_forward import _run_bridge + # TCP probe for fast reachability detection from app.core.host_probe import probe_from_bastion @@ -80,6 +87,8 @@ def __init__( self._create_parallel_client() + self._exec_lock = threading.Lock() + def _is_jump_host_alive(self): """Check if jump host connection is still active.""" if not self.jump_client: @@ -154,15 +163,6 @@ def _connect_to_jump_host(self): logger.error(f"❌ Failed to connect to jump host: {e}") raise - def _make_proxy(self, host, port): - """Create proxy socket through jump host.""" - logger.debug(f"Creating proxy socket for {host}:{port}") - return self.jump_transport.open_channel( - "direct-tcpip", - (host, port), - ("", 0), - ) - def _create_parallel_client(self): """Setup for parallel execution - key file is ON the jump host.""" logger.info(f"Ready for parallel SSH execution to {len(self.target_hosts)} nodes") @@ -233,80 +233,81 @@ def exec(self, cmd: str, timeout: Optional[int] = None, print_console: bool = Tr Uses ThreadPoolExecutor for parallel execution. Skips unreachable nodes and reports them separately. """ - # Ensure jump host connection is active before executing - if not self._ensure_jump_host_connection(): - logger.error("Cannot execute command - jump host connection failed") - return {node: "ERROR: Jump host connection failed" for node in self.target_hosts} - - logger.info(f"Executing command: {cmd[:100]}...") - logger.info( - f"Total nodes: {len(self.target_hosts)}, Reachable: {len(self.reachable_hosts)}, Unreachable: {len(self.unreachable_hosts)}" - ) + with self._exec_lock: + # Ensure jump host connection is active before executing + if not self._ensure_jump_host_connection(): + logger.error("Cannot execute command - jump host connection failed") + return {node: "ERROR: Jump host connection failed" for node in self.target_hosts} + + logger.info(f"Executing command: {cmd[:100]}...") + logger.info( + f"Total nodes: {len(self.target_hosts)}, Reachable: {len(self.reachable_hosts)}, Unreachable: {len(self.unreachable_hosts)}" + ) - from concurrent.futures import ThreadPoolExecutor, as_completed + from concurrent.futures import ThreadPoolExecutor, as_completed - results = {} - success_count = 0 - fail_count = 0 + results = {} + success_count = 0 + fail_count = 0 - # First, add unreachable hosts to results - for node in self.unreachable_hosts: - results[node] = "ABORT: Host Unreachable Error" - fail_count += 1 + # First, add unreachable hosts to results + for node in self.unreachable_hosts: + results[node] = "ABORT: Host Unreachable Error" + fail_count += 1 - try: - # Execute in parallel using ThreadPoolExecutor on reachable hosts only - with ThreadPoolExecutor(max_workers=self.max_parallel) as executor: - # Submit tasks only for reachable nodes - future_to_node = { - executor.submit(self._execute_on_node, node, cmd, timeout): node for node in self.reachable_hosts - } - - # Collect results as they complete - for future in as_completed(future_to_node): - node = future_to_node[future] - try: - output = future.result() - results[node] = output - - if output.startswith("ERROR") or output.startswith("ABORT"): - logger.error(f"❌ [{node}] FAILED: {output[:200]}") + try: + # Execute in parallel using ThreadPoolExecutor on reachable hosts only + with ThreadPoolExecutor(max_workers=self.max_parallel) as executor: + # Submit tasks only for reachable nodes + future_to_node = { + executor.submit(self._execute_on_node, node, cmd, timeout): node for node in self.reachable_hosts + } + + # Collect results as they complete + for future in as_completed(future_to_node): + node = future_to_node[future] + try: + output = future.result() + results[node] = output + + if output.startswith("ERROR") or output.startswith("ABORT"): + logger.error(f"❌ [{node}] FAILED: {output[:200]}") + fail_count += 1 + else: + # Log first 3 lines + lines = output.split('\n')[:3] + logger.info(f"✅ [{node}] SUCCESS (first 3 lines):") + for line in lines: + if line.strip(): + logger.info(f" {line[:150]}") + success_count += 1 + + except Exception as e: + results[node] = f"ERROR: {str(e)}" + logger.error(f"❌ [{node}] Exception: {e}") fail_count += 1 - else: - # Log first 3 lines - lines = output.split('\n')[:3] - logger.info(f"✅ [{node}] SUCCESS (first 3 lines):") - for line in lines: - if line.strip(): - logger.info(f" {line[:150]}") - success_count += 1 - - except Exception as e: - results[node] = f"ERROR: {str(e)}" - logger.error(f"❌ [{node}] Exception: {e}") - fail_count += 1 - - logger.info(f"Results: {success_count} successful, {fail_count} failed") - - # If too many failures, trigger re-probe (connection issue detection) - failure_rate = fail_count / len(self.target_hosts) if self.target_hosts else 0 - if failure_rate > 0.5 and fail_count > 5: # More than 50% failed and at least 5 failures - logger.warning(f"High failure rate ({failure_rate:.1%}) - triggering re-probe") - self._handle_connection_failure() - - return results - except Exception as e: - logger.error(f"❌ Parallel execution failed: {e}", exc_info=True) - # Check if it's a connection error to jump host - if "connection" in str(e).lower() or "transport" in str(e).lower(): - logger.warning("Jump host connection issue detected - triggering re-probe") - self._handle_connection_failure() - raise + logger.info(f"Results: {success_count} successful, {fail_count} failed") + + # If too many failures, trigger re-probe (connection issue detection) + failure_rate = fail_count / len(self.target_hosts) if self.target_hosts else 0 + if failure_rate > 0.5 and fail_count > 5: # More than 50% failed and at least 5 failures + logger.warning(f"High failure rate ({failure_rate:.1%}) - triggering re-probe") + self._handle_connection_failure() + + return results + + except Exception as e: + logger.error(f"❌ Parallel execution failed: {e}", exc_info=True) + # Check if it's a connection error to jump host + if "connection" in str(e).lower() or "transport" in str(e).lower(): + logger.warning("Jump host connection issue detected - triggering re-probe") + self._handle_connection_failure() + raise - async def exec_async(self, cmd, timeout=None, print_console=True): - """Async wrapper - just calls exec() directly.""" - return self.exec(cmd, timeout, print_console) + async def exec_async(self, cmd: str, timeout: int = 30, print_console: bool = False) -> dict: + """Non-blocking wrapper around exec() using asyncio.to_thread.""" + return await asyncio.to_thread(self.exec, cmd, timeout, print_console) def get_reachable_hosts(self): """Return list of reachable hosts.""" @@ -388,6 +389,61 @@ def _handle_connection_failure(self): else: logger.info("No reachability changes detected") + @asynccontextmanager + async def open_port_forward( + self, node: str, remote_port: int + ) -> AsyncIterator[tuple]: + """ + Open a two-hop SSH tunnel: monitoring_host -> jump_host -> node:remote_port. + + Yields (asyncio.StreamReader, asyncio.StreamWriter) ready for asyncio use. + Uses a Unix socketpair() -- no ephemeral TCP port allocation, no TOCTOU race. + + Security note: Uses AutoAddPolicy() for host key verification (TOFU). + See plan for hardening options (pre-distributed known_hosts, SSH certificates). + + Args: + node: Target node hostname/IP + remote_port: Port on the target node to forward to + + Yields: + (reader, writer) connected to node:remote_port via the jump host + """ + asyncio_end, thread_end = socket.socketpair(socket.AF_UNIX, socket.SOCK_STREAM) + try: + channel = await asyncio.to_thread( + self.jump_transport.open_channel, + "direct-tcpip", + (node, remote_port), + ("127.0.0.1", 0), + ) + except Exception: + asyncio_end.close() + thread_end.close() + raise + + _run_bridge(channel, thread_end) + + try: + reader, writer = await asyncio.open_connection(sock=asyncio_end) + except Exception: + asyncio_end.close() + channel.close() + raise + + try: + yield reader, writer + finally: + writer.close() + try: + await writer.wait_closed() + except Exception: + pass + channel.close() + thread_end.close() + # asyncio_end is owned by the asyncio transport after open_connection(); + # closing writer causes it to be closed automatically. + def destroy_clients(self): """Clean up connections.""" logger.info("Closing connections...") diff --git a/cvs/monitors/cluster-mon/backend/app/core/ssh_port_forward.py b/cvs/monitors/cluster-mon/backend/app/core/ssh_port_forward.py new file mode 100644 index 00000000..9e2c165b --- /dev/null +++ b/cvs/monitors/cluster-mon/backend/app/core/ssh_port_forward.py @@ -0,0 +1,69 @@ +""" +Shared SSH port-forwarding bridge for CVS cluster-mon. + +_run_bridge() creates a bidirectional byte-copy between a paramiko Channel +and a Unix socketpair. Used by both Pssh and JumpHostPssh to implement +open_port_forward() without ephemeral TCP port allocation. +""" + +import socket +import threading +import paramiko +import logging + +logger = logging.getLogger(__name__) + + +def _run_bridge(channel: paramiko.Channel, sock: socket.socket) -> None: + """ + Start two daemon threads that copy bytes bidirectionally between + a paramiko channel and a Unix socket. + + When either direction closes (clean EOF or exception), close_all() + is called, which closes both the channel and the socket. This causes + the other direction's recv() to return empty bytes or raise, causing + the other thread to also exit cleanly. No thread leaks. + + Args: + channel: Open paramiko.Channel (e.g., from transport.open_channel) + sock: One end of a socketpair (the thread end, not the asyncio end) + """ + + def copy(src_recv, dst_send, cleanup): + try: + while True: + data = src_recv(4096) + if not data: + break + dst_send(data) + except Exception: + pass + finally: + cleanup() + + def close_all(): + try: + channel.close() + except Exception: + pass + try: + sock.shutdown(socket.SHUT_RDWR) + except Exception: + pass + try: + sock.close() + except Exception: + pass + + threading.Thread( + target=copy, + args=(channel.recv, sock.sendall, close_all), + daemon=True, + name=f"bridge-ch→sock-{id(channel)}", + ).start() + threading.Thread( + target=copy, + args=(sock.recv, channel.sendall, close_all), + daemon=True, + name=f"bridge-sock→ch-{id(channel)}", + ).start() diff --git a/cvs/monitors/cluster-mon/backend/tests/test_ssh_port_forward.py b/cvs/monitors/cluster-mon/backend/tests/test_ssh_port_forward.py new file mode 100644 index 00000000..c22c42a8 --- /dev/null +++ b/cvs/monitors/cluster-mon/backend/tests/test_ssh_port_forward.py @@ -0,0 +1,112 @@ +""" +Tests for SSH port-forwarding bridge (_run_bridge). +Tests use real socketpairs and mock paramiko channels. +""" +import asyncio +import socket +import threading +import time +import pytest +from unittest.mock import MagicMock, patch + +from app.core.ssh_port_forward import _run_bridge + + +class MockChannel: + """Minimal mock paramiko channel backed by a real socket.""" + + def __init__(self, sock: socket.socket): + self._sock = sock + self.closed = False + + def recv(self, nbytes: int) -> bytes: + try: + return self._sock.recv(nbytes) + except Exception: + return b"" + + def sendall(self, data: bytes) -> None: + self._sock.sendall(data) + + def close(self) -> None: + self.closed = True + try: + self._sock.close() + except Exception: + pass + + +def test_run_bridge_forwards_data_ch_to_sock(): + """Data written to channel side arrives on the socket side.""" + # Create two connected socket pairs to simulate channel <-> bridge <-> user + ch_side, bridge_ch_end = socket.socketpair(socket.AF_UNIX, socket.SOCK_STREAM) + bridge_sock_end, user_sock_end = socket.socketpair(socket.AF_UNIX, socket.SOCK_STREAM) + + channel = MockChannel(ch_side) + _run_bridge(channel, bridge_sock_end) + + # Write to channel side -> should arrive at user_sock_end + bridge_ch_end.sendall(b"hello from channel") + user_sock_end.settimeout(2.0) + data = user_sock_end.recv(100) + assert data == b"hello from channel" + + bridge_ch_end.close() + user_sock_end.close() + + +def test_run_bridge_forwards_data_sock_to_ch(): + """Data written to the socket side arrives on the channel side.""" + ch_side, bridge_ch_end = socket.socketpair(socket.AF_UNIX, socket.SOCK_STREAM) + bridge_sock_end, user_sock_end = socket.socketpair(socket.AF_UNIX, socket.SOCK_STREAM) + + channel = MockChannel(ch_side) + _run_bridge(channel, bridge_sock_end) + + # Write to user_sock_end -> should arrive at bridge_ch_end (channel side) + user_sock_end.sendall(b"hello from socket") + bridge_ch_end.settimeout(2.0) + data = bridge_ch_end.recv(100) + assert data == b"hello from socket" + + bridge_ch_end.close() + user_sock_end.close() + + +def test_run_bridge_closes_both_on_channel_close(): + """When the channel closes, the socket side also closes (no thread leak).""" + ch_side, bridge_ch_end = socket.socketpair(socket.AF_UNIX, socket.SOCK_STREAM) + bridge_sock_end, user_sock_end = socket.socketpair(socket.AF_UNIX, socket.SOCK_STREAM) + + channel = MockChannel(ch_side) + _run_bridge(channel, bridge_sock_end) + + # Close the channel side -- this sends EOF + bridge_ch_end.close() + ch_side.close() + + # The user_sock_end should eventually get EOF too + user_sock_end.settimeout(2.0) + data = user_sock_end.recv(100) + assert data == b"" # EOF propagated + + user_sock_end.close() + + +def test_run_bridge_daemon_threads(): + """Bridge threads must be daemon threads (don't block process exit).""" + ch_side, bridge_ch_end = socket.socketpair(socket.AF_UNIX, socket.SOCK_STREAM) + bridge_sock_end, user_sock_end = socket.socketpair(socket.AF_UNIX, socket.SOCK_STREAM) + + before = {t.name for t in threading.enumerate()} + channel = MockChannel(ch_side) + _run_bridge(channel, bridge_sock_end) + + # Find the new threads + after = {t for t in threading.enumerate() if t.name not in before} + bridge_threads = [t for t in after if "bridge" in t.name] + assert len(bridge_threads) == 2 + assert all(t.daemon for t in bridge_threads) + + bridge_ch_end.close() + user_sock_end.close() From 23d77053ffab021ba8625c909f687647fc7d406f Mon Sep 17 00:00:00 2001 From: nileshnegi Date: Sat, 21 Mar 2026 00:32:46 -0500 Subject: [PATCH 04/24] feat(cluster-mon): Update collectors to BaseCollector + refactor AppState/lifespan - GPUMetricsCollector, NICMetricsCollector now inherit BaseCollector - Both have name, poll_interval, collect_timeout, critical class attrs - Both implement collect() returning CollectorResult - NIC collector sub-methods now use await ssh_manager.exec_async() - AppState gains collectors, collector_tasks, collector_results, probe_requested - lifespan() uses REGISTERED_COLLECTORS + supervised _start_collector_task() - broadcast_metrics() uses per-client asyncio.wait_for (5s timeout) - periodic_host_probe() uses probe_requested event instead of fixed sleep - reload_configuration() updated to new Settings + collector pattern - Added tests/test_collectors.py with 6 tests for new collector interfaces --- .../backend/app/collectors/gpu_collector.py | 45 ++++- .../backend/app/collectors/nic_collector.py | 46 ++++- cvs/monitors/cluster-mon/backend/app/main.py | 165 ++++++++++++++---- .../backend/tests/test_collectors.py | 81 +++++++++ 4 files changed, 293 insertions(+), 44 deletions(-) create mode 100644 cvs/monitors/cluster-mon/backend/tests/test_collectors.py diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/gpu_collector.py b/cvs/monitors/cluster-mon/backend/app/collectors/gpu_collector.py index 1a56c8f4..28a5923c 100644 --- a/cvs/monitors/cluster-mon/backend/app/collectors/gpu_collector.py +++ b/cvs/monitors/cluster-mon/backend/app/collectors/gpu_collector.py @@ -8,12 +8,20 @@ from typing import Dict, Any from datetime import datetime +from app.collectors.base import BaseCollector, CollectorResult, CollectorState +from app.core.config import settings as _settings + logger = logging.getLogger(__name__) -class GPUMetricsCollector: +class GPUMetricsCollector(BaseCollector): """Collects GPU metrics via rocm-smi and amd-smi commands.""" + name = "gpu" + poll_interval: int = 60 # will be set after class definition + collect_timeout: float = 48.0 # 80% of poll_interval default + critical = True # GPU collection failure is critical + @staticmethod def parse_json_output(output_dict: Dict[str, str]) -> Dict[str, Any]: """ @@ -379,6 +387,37 @@ async def collect_all_metrics(self, ssh_manager) -> Dict[str, Any]: return metrics + async def collect(self, ssh_manager) -> CollectorResult: + """ + BaseCollector interface. Calls collect_all_metrics() and wraps result. + node_errors is populated so BaseCollector.run() can call update_node_status(). + """ + try: + metrics = await self.collect_all_metrics(ssh_manager) + except Exception as e: + return CollectorResult( + collector_name=self.name, + timestamp=CollectorResult.now_iso(), + state=CollectorState.ERROR, + data={}, + error=str(e), + ) + + # Determine per-node errors from metrics + node_errors: dict[str, bool] = {} + util_data = metrics.get("utilization", {}) if isinstance(metrics, dict) else {} + for node, node_data in util_data.items(): + has_error = isinstance(node_data, dict) and "error" in node_data + node_errors[node] = has_error + + return CollectorResult( + collector_name=self.name, + timestamp=metrics.get("timestamp", CollectorResult.now_iso()) if isinstance(metrics, dict) else CollectorResult.now_iso(), + state=CollectorState.OK, + data=metrics if isinstance(metrics, dict) else {}, + node_errors=node_errors, + ) + def _parse_utilization_from_amd_smi(self, amd_smi_data: Dict) -> Dict: """Parse utilization from amd-smi metric output.""" util_data = {} @@ -823,3 +862,7 @@ def normalize_metrics(self, raw_metrics: Dict[str, Any]) -> Dict[str, Any]: normalized[node]["gpus"].append(gpu_metrics) return normalized + + +GPUMetricsCollector.poll_interval = _settings.polling.interval +GPUMetricsCollector.collect_timeout = _settings.polling.interval * 0.8 diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/nic_collector.py b/cvs/monitors/cluster-mon/backend/app/collectors/nic_collector.py index c0a5e079..c4ef3b3e 100644 --- a/cvs/monitors/cluster-mon/backend/app/collectors/nic_collector.py +++ b/cvs/monitors/cluster-mon/backend/app/collectors/nic_collector.py @@ -9,12 +9,20 @@ from typing import Dict, Any from datetime import datetime +from app.collectors.base import BaseCollector, CollectorResult, CollectorState +from app.core.config import settings as _settings + logger = logging.getLogger(__name__) -class NICMetricsCollector: +class NICMetricsCollector(BaseCollector): """Collects NIC metrics via rdma, ethtool, and ip commands.""" + name = "nic" + poll_interval: int = 60 + collect_timeout: float = 48.0 + critical = True + async def collect_rdma_links(self, ssh_manager) -> Dict[str, Any]: """ Collect RDMA link information. @@ -33,7 +41,7 @@ async def collect_rdma_links(self, ssh_manager) -> Dict[str, Any]: } """ logger.info("Collecting RDMA link info") - output = ssh_manager.exec("rdma link", timeout=60) + output = await ssh_manager.exec_async("rdma link", timeout=60) rdma_dict = {} for node, out_str in output.items(): @@ -82,7 +90,7 @@ async def collect_rdma_stats(self, ssh_manager) -> Dict[str, Any]: """ logger.info("Collecting RDMA statistics (includes congestion control metrics)") # Use bash -c to properly handle shell redirection and || operator - output = ssh_manager.exec("bash -c 'rdma statistic show --json 2>/dev/null || echo \"{}\"'", timeout=60) + output = await ssh_manager.exec_async("bash -c 'rdma statistic show --json 2>/dev/null || echo \"{}\"'", timeout=60) logger.info(f"RDMA stats output received from {len(output)} nodes") @@ -165,7 +173,7 @@ async def collect_ethtool_stats(self, ssh_manager, interfaces: Dict[str, list] = # Run 'ip -s link' once per node to get all interface stats cmd = "ip -s link show" - output = ssh_manager.exec(cmd, timeout=60) + output = await ssh_manager.exec_async(cmd, timeout=60) eth_stats = {} @@ -263,7 +271,7 @@ async def collect_ip_addr(self, ssh_manager) -> Dict[str, Any]: } """ logger.info("Collecting IP address info") - output = ssh_manager.exec("bash -c 'ip addr show | grep -A 5 mtu --color=never'", timeout=60) + output = await ssh_manager.exec_async("bash -c 'ip addr show | grep -A 5 mtu --color=never'", timeout=60) ip_dict = {} @@ -339,7 +347,7 @@ async def collect_lldp(self, ssh_manager) -> Dict[str, Any]: """ logger.info("Collecting LLDP info") # Use bash -c to properly handle shell redirection and || operator - output = ssh_manager.exec("bash -c 'sudo lldpctl -f json 2>/dev/null || echo \"{}\"'", timeout=60) + output = await ssh_manager.exec_async("bash -c 'sudo lldpctl -f json 2>/dev/null || echo \"{}\"'", timeout=60) lldp_dict = {} for node, out_str in output.items(): @@ -420,6 +428,26 @@ def _filter_lldp_by_rdma(self, lldp_data: Dict[str, Any], rdma_links_data: Dict[ return filtered_lldp + async def collect(self, ssh_manager) -> CollectorResult: + """BaseCollector interface. Calls collect_all_metrics() and wraps result.""" + try: + metrics = await self.collect_all_metrics(ssh_manager) + except Exception as e: + return CollectorResult( + collector_name=self.name, + timestamp=CollectorResult.now_iso(), + state=CollectorState.ERROR, + data={}, + error=str(e), + ) + + return CollectorResult( + collector_name=self.name, + timestamp=CollectorResult.now_iso(), + state=CollectorState.OK, + data=metrics if isinstance(metrics, dict) else {}, + ) + async def collect_all_metrics(self, ssh_manager) -> Dict[str, Any]: """ Collect all NIC metrics in parallel. @@ -490,7 +518,7 @@ async def collect_rdma_resources(self, ssh_manager) -> Dict[str, Any]: } """ logger.info("Collecting RDMA resources") - output = ssh_manager.exec("rdma res", timeout=60) + output = await ssh_manager.exec_async("rdma res", timeout=60) rdma_res = {} for node, out_str in output.items(): @@ -520,3 +548,7 @@ async def collect_rdma_resources(self, ssh_manager) -> Dict[str, Any]: rdma_res[node][device] = resources return rdma_res + + +NICMetricsCollector.poll_interval = _settings.polling.interval +NICMetricsCollector.collect_timeout = _settings.polling.interval * 0.8 diff --git a/cvs/monitors/cluster-mon/backend/app/main.py b/cvs/monitors/cluster-mon/backend/app/main.py index 31f748ad..7746c2b7 100644 --- a/cvs/monitors/cluster-mon/backend/app/main.py +++ b/cvs/monitors/cluster-mon/backend/app/main.py @@ -14,13 +14,19 @@ import time from pathlib import Path -from app.core.simple_config import config as settings +from app.core.config import settings from app.core.cvs_parallel_ssh_reliable import Pssh from app.core.jump_host_pssh import JumpHostPssh from app.collectors.gpu_collector import GPUMetricsCollector from app.collectors.nic_collector import NICMetricsCollector +from app.collectors.base import BaseCollector, CollectorResult, CollectorState from app.api import router as api_router +try: + import redis.asyncio as aioredis +except ImportError: + aioredis = None + # Configure logging based on DEBUG environment variable # Using RotatingFileHandler for circular log files with 1MB max size DEBUG_MODE = os.getenv("DEBUG", "false").lower() in ("true", "1", "yes") @@ -61,36 +67,93 @@ class AppState: """Global application state.""" def __init__(self): + # SSH manager self.ssh_manager: Optional[Union[Pssh, JumpHostPssh]] = None + + # Unified collector registry (BaseCollector pattern) + self.collectors: dict[str, BaseCollector] = {} + self.collector_tasks: dict[str, asyncio.Task] = {} + self.collector_results: dict[str, CollectorResult] = {} + + # Legacy fields kept for backward compat during transition self.gpu_collector: GPUMetricsCollector = None self.nic_collector: NICMetricsCollector = None + self.collection_task: asyncio.Task = None # deprecated + self.latest_metrics: dict = {} self.websocket_clients: List[WebSocket] = [] - self.collection_task: asyncio.Task = None self.is_collecting: bool = False - # Node health tracking (for stability - require 5 consecutive failures) - self.node_failure_count: dict = {} # {node: consecutive_failure_count} - self.node_health_status: dict = {} # {node: 'healthy'|'unhealthy'|'unreachable'} - # Software info cache (updated every 180 seconds since it rarely changes) + + # Node health tracking + self.node_failure_count: dict = {} + self.node_health_status: dict = {} + + # Software info cache self.cached_gpu_software: dict = {} self.cached_nic_software: dict = {} self.cached_nic_advanced: dict = {} self.gpu_software_cache_time: float = 0 self.nic_software_cache_time: float = 0 self.nic_advanced_cache_time: float = 0 - self.software_cache_ttl: int = 180 # 3 minutes - # SECURITY: Passwords stored in memory only (never persisted to disk) - self.ssh_password: str = None # Direct SSH password - self.jump_host_password: str = None # Jump host password - # Periodic host probe task + self.software_cache_ttl: int = 180 + + # SECURITY: Passwords stored in memory only + self.ssh_password: str = None + self.jump_host_password: str = None + + # Periodic host probe self.probe_task: Optional[asyncio.Task] = None self.last_probe_time: Optional[float] = None - self.probe_count: int = 0 # Track number of probes for periodic client recreation + self.probe_count: int = 0 + self.probe_requested: asyncio.Event = None # set by collectors on ConnectionError + + # Redis client + self.redis: Optional[object] = None app_state = AppState() +REGISTERED_COLLECTORS: list[type[BaseCollector]] = [ + GPUMetricsCollector, + NICMetricsCollector, + # RCCLCollector added in Batch 6 +] + + +def _start_collector_task(c: BaseCollector) -> asyncio.Task: + """Create a supervised collector task that restarts on crash with exponential backoff.""" + _backoff = [1.0] # mutable cell for closure + + def _on_done(task: asyncio.Task) -> None: + if task.cancelled() or not app_state.is_collecting: + return + exc = task.exception() + if exc is None: + logger.warning(f"Collector {c.name} task exited unexpectedly — restarting") + else: + delay = _backoff[0] + logger.error( + f"Collector {c.name} crashed: {exc!r} — restarting in {delay:.0f}s", + exc_info=exc, + ) + + async def _restart(): + await asyncio.sleep(_backoff[0]) + _backoff[0] = min(_backoff[0] * 2, 120) + new_task = _start_collector_task(c) + app_state.collector_tasks[c.name] = new_task + + asyncio.get_event_loop().call_soon(lambda: asyncio.create_task(_restart())) + + task = asyncio.create_task( + c.run(app_state.ssh_manager, app_state), + name=f"collector-{c.name}", + ) + task.add_done_callback(_on_done) + return task + + async def reload_configuration(): """ Reload configuration without restarting the entire process. @@ -106,6 +169,12 @@ async def reload_configuration(): if app_state.is_collecting: logger.info("Stopping metrics collection and periodic probe...") app_state.is_collecting = False + for task in app_state.collector_tasks.values(): + task.cancel() + if app_state.collector_tasks: + await asyncio.gather(*app_state.collector_tasks.values(), return_exceptions=True) + app_state.collector_tasks.clear() + app_state.collectors.clear() if app_state.collection_task: app_state.collection_task.cancel() try: @@ -138,9 +207,9 @@ async def reload_configuration(): # 4. Reload configuration from files logger.info("Reloading configuration from cluster.yaml and nodes.txt...") - from app.core.simple_config import SimpleConfig + from app.core.config import Settings - new_config = SimpleConfig() + new_config = Settings() # re-reads YAML and env vars # 5. Load new nodes nodes = new_config.load_nodes_from_file() @@ -233,7 +302,11 @@ async def reload_configuration(): if app_state.ssh_manager and nodes: logger.info("Restarting metrics collection and periodic probe...") app_state.is_collecting = True - app_state.collection_task = asyncio.create_task(collect_metrics_loop()) + app_state.probe_requested = asyncio.Event() + for cls in REGISTERED_COLLECTORS: + c = cls() + app_state.collectors[c.name] = c + app_state.collector_tasks[c.name] = _start_collector_task(c) app_state.probe_task = asyncio.create_task(periodic_host_probe()) logger.info("Metrics collection and periodic probe restarted") @@ -359,22 +432,30 @@ async def collect_metrics_loop(): async def broadcast_metrics(metrics: dict): - """Broadcast metrics to all connected WebSocket clients.""" + """Broadcast metrics to all connected WebSocket clients (non-blocking per client).""" if not app_state.websocket_clients: return disconnected_clients = [] + message = {"type": "metrics", "data": metrics} - for client in app_state.websocket_clients: + for client in list(app_state.websocket_clients): try: - await client.send_json({"type": "metrics", "data": metrics}) + # Use asyncio.wait_for to prevent one slow client from blocking others + await asyncio.wait_for( + client.send_json(message), + timeout=5.0, + ) + except asyncio.TimeoutError: + logger.warning("WebSocket client timed out on send — disconnecting") + disconnected_clients.append(client) except Exception as e: logger.warning(f"Failed to send metrics to client: {e}") disconnected_clients.append(client) - # Remove disconnected clients for client in disconnected_clients: - app_state.websocket_clients.remove(client) + if client in app_state.websocket_clients: + app_state.websocket_clients.remove(client) async def periodic_host_probe(): @@ -391,7 +472,11 @@ async def periodic_host_probe(): while app_state.is_collecting: try: - await asyncio.sleep(PROBE_INTERVAL) + try: + await asyncio.wait_for(app_state.probe_requested.wait(), timeout=300) + app_state.probe_requested.clear() + except asyncio.TimeoutError: + pass # normal 5-minute periodic probe if not app_state.ssh_manager: logger.debug("Skipping periodic probe - no SSH manager") @@ -458,10 +543,13 @@ async def lifespan(app: FastAPI): """Application lifespan manager.""" logger.info("Starting CVS Cluster Monitor") + # Initialize probe_requested event (before collectors start) + app_state.probe_requested = asyncio.Event() + # Load nodes from file nodes = settings.load_nodes_from_file() - # Initialize collectors (lightweight, no SSH needed) + # Also set legacy fields for backward-compat with existing API endpoints app_state.gpu_collector = GPUMetricsCollector() app_state.nic_collector = NICMetricsCollector() logger.info("Collectors initialized") @@ -509,13 +597,18 @@ async def lifespan(app: FastAPI): ) logger.info("✅ Direct SSH manager initialized") - # Start metrics collection automatically if SSH manager initialized + # Start metrics collection using unified collector registry if app_state.ssh_manager: - logger.info("Starting metrics collection and periodic probe...") + logger.info("Starting metrics collection (BaseCollector pattern)...") app_state.is_collecting = True - app_state.collection_task = asyncio.create_task(collect_metrics_loop()) + + for cls in REGISTERED_COLLECTORS: + c = cls() + app_state.collectors[c.name] = c + app_state.collector_tasks[c.name] = _start_collector_task(c) + app_state.probe_task = asyncio.create_task(periodic_host_probe()) - logger.info("✅ Metrics collection started automatically") + logger.info("✅ Metrics collection started") except Exception as e: logger.error(f"Failed to auto-initialize SSH manager: {e}", exc_info=True) @@ -526,22 +619,22 @@ async def lifespan(app: FastAPI): # Shutdown logger.info("Shutting down CVS Cluster Monitor") - # Stop metrics collection and periodic probe + # Stop collection app_state.is_collecting = False - if app_state.collection_task: - app_state.collection_task.cancel() - try: - await app_state.collection_task - except asyncio.CancelledError: - pass + for task in app_state.collector_tasks.values(): + task.cancel() + if app_state.collector_tasks: + await asyncio.gather(*app_state.collector_tasks.values(), return_exceptions=True) if app_state.probe_task: app_state.probe_task.cancel() try: await app_state.probe_task except asyncio.CancelledError: pass - - # Close SSH connections + # Close Redis + if app_state.redis: + await app_state.redis.aclose() + # Close SSH if app_state.ssh_manager: app_state.ssh_manager.destroy_clients() @@ -628,7 +721,7 @@ async def root(): "name": settings.app_name, "version": "0.1.0", "status": "running", - "nodes": len(settings.nodes) if settings.nodes else 0, + "nodes": len(settings.load_nodes_from_file()), "collecting": app_state.is_collecting, "note": "Frontend not built. Run 'cd frontend && npm run build' to build the UI.", } diff --git a/cvs/monitors/cluster-mon/backend/tests/test_collectors.py b/cvs/monitors/cluster-mon/backend/tests/test_collectors.py new file mode 100644 index 00000000..02382de2 --- /dev/null +++ b/cvs/monitors/cluster-mon/backend/tests/test_collectors.py @@ -0,0 +1,81 @@ +""" +Tests for GPUMetricsCollector and NICMetricsCollector as BaseCollector subclasses. +""" +import asyncio +import pytest +from unittest.mock import AsyncMock, MagicMock, patch + +from app.collectors.base import CollectorState, CollectorResult +from app.collectors.gpu_collector import GPUMetricsCollector +from app.collectors.nic_collector import NICMetricsCollector + + +def test_gpu_collector_has_base_collector_attrs(): + assert hasattr(GPUMetricsCollector, 'name') + assert GPUMetricsCollector.name == "gpu" + assert hasattr(GPUMetricsCollector, 'poll_interval') + assert hasattr(GPUMetricsCollector, 'collect_timeout') + assert GPUMetricsCollector.critical is True + + +def test_nic_collector_has_base_collector_attrs(): + assert hasattr(NICMetricsCollector, 'name') + assert NICMetricsCollector.name == "nic" + assert hasattr(NICMetricsCollector, 'poll_interval') + assert hasattr(NICMetricsCollector, 'collect_timeout') + assert NICMetricsCollector.critical is True + + +@pytest.mark.asyncio +async def test_gpu_collector_collect_returns_collector_result(): + collector = GPUMetricsCollector() + ssh_manager = MagicMock() + + # Mock collect_all_metrics to return a simple metrics dict + fake_metrics = { + "timestamp": "2026-01-01T00:00:00+00:00", + "utilization": {"node1": {"gpu0": 80}}, + } + collector.collect_all_metrics = AsyncMock(return_value=fake_metrics) + + result = await collector.collect(ssh_manager) + + assert isinstance(result, CollectorResult) + assert result.collector_name == "gpu" + assert result.state == CollectorState.OK + assert result.data == fake_metrics + + +@pytest.mark.asyncio +async def test_gpu_collector_collect_handles_exception(): + collector = GPUMetricsCollector() + ssh_manager = MagicMock() + collector.collect_all_metrics = AsyncMock(side_effect=RuntimeError("SSH failed")) + + result = await collector.collect(ssh_manager) + + assert result.state == CollectorState.ERROR + assert "SSH failed" in result.error + + +@pytest.mark.asyncio +async def test_nic_collector_collect_returns_collector_result(): + collector = NICMetricsCollector() + ssh_manager = MagicMock() + fake_metrics = {"rdma_links": {"node1": {}}} + collector.collect_all_metrics = AsyncMock(return_value=fake_metrics) + + result = await collector.collect(ssh_manager) + + assert isinstance(result, CollectorResult) + assert result.collector_name == "nic" + assert result.state == CollectorState.OK + + +def test_registered_collectors_list(): + pytest.importorskip("fastapi") + from app.main import REGISTERED_COLLECTORS + from app.collectors.base import BaseCollector + assert len(REGISTERED_COLLECTORS) >= 2 + for cls in REGISTERED_COLLECTORS: + assert issubclass(cls, BaseCollector) From 41ecf3d188a276e49da4092626402f4a996cf221 Mon Sep 17 00:00:00 2001 From: nileshnegi Date: Sat, 21 Mar 2026 00:35:40 -0500 Subject: [PATCH 05/24] fix(cluster-mon/ssh): Fix critical code quality issues from review - Remove password partial logging (security: never log credentials) - Protect unreachable_hosts/reachable_hosts mutations with _exec_lock to prevent race conditions in concurrent ThreadPoolExecutor workers - Verify bare except: -> except Exception: consistency --- .../backend/app/core/jump_host_pssh.py | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/cvs/monitors/cluster-mon/backend/app/core/jump_host_pssh.py b/cvs/monitors/cluster-mon/backend/app/core/jump_host_pssh.py index 66c8f933..ef59f42e 100644 --- a/cvs/monitors/cluster-mon/backend/app/core/jump_host_pssh.py +++ b/cvs/monitors/cluster-mon/backend/app/core/jump_host_pssh.py @@ -96,7 +96,7 @@ def _is_jump_host_alive(self): try: transport = self.jump_client.get_transport() return transport is not None and transport.is_active() - except: + except Exception: return False def _ensure_jump_host_connection(self): @@ -110,7 +110,7 @@ def _ensure_jump_host_connection(self): if self.jump_client: try: self.jump_client.close() - except: + except Exception: pass # Reconnect @@ -135,9 +135,6 @@ def _connect_to_jump_host(self): try: if self.jump_password: logger.info(f"Attempting password authentication to {self.jump_host}...") - logger.info( - f" Password value check: {self.jump_password[:3]}*** (showing first 3 chars for verification)" - ) logger.info("Using password authentication for jump host") self.jump_client.connect( hostname=self.jump_host, @@ -201,11 +198,12 @@ def _execute_on_node(self, node: str, cmd: str, timeout: Optional[int] = None) - x in error.lower() for x in ['connection timed out', 'connection refused', 'no route to host', 'host is down'] ): - if node not in self.unreachable_hosts: - logger.warning(f"[{node}] Marking as unreachable: {error[:200]}") - self.unreachable_hosts.append(node) - if node in self.reachable_hosts: - self.reachable_hosts.remove(node) + with self._exec_lock: + if node not in self.unreachable_hosts: + logger.warning(f"[{node}] Marking as unreachable: {error[:200]}") + self.unreachable_hosts.append(node) + if node in self.reachable_hosts: + self.reachable_hosts.remove(node) return f"ABORT: Host Unreachable Error - {error[:100]}" elif not output: logger.warning(f"[{node}] stderr: {error[:200]}") @@ -217,11 +215,12 @@ def _execute_on_node(self, node: str, cmd: str, timeout: Optional[int] = None) - # Check if it's a timeout exception error_str = str(e).lower() if 'timeout' in error_str or 'timed out' in error_str: - if node not in self.unreachable_hosts: - logger.warning(f"[{node}] Marking as unreachable due to timeout: {e}") - self.unreachable_hosts.append(node) - if node in self.reachable_hosts: - self.reachable_hosts.remove(node) + with self._exec_lock: + if node not in self.unreachable_hosts: + logger.warning(f"[{node}] Marking as unreachable due to timeout: {e}") + self.unreachable_hosts.append(node) + if node in self.reachable_hosts: + self.reachable_hosts.remove(node) return "ABORT: Host Unreachable Error - Timeout" logger.error(f"[{node}] Exception: {e}") @@ -450,11 +449,11 @@ def destroy_clients(self): if self.client: try: self.client.disconnect() - except: + except Exception: pass if self.jump_client: try: self.jump_client.close() logger.info("✅ Jump host connection closed") - except: + except Exception: pass From 74de84ef0a4f1b5dbb715d305b999a4725ae0164 Mon Sep 17 00:00:00 2001 From: nileshnegi Date: Sat, 21 Mar 2026 01:33:21 -0500 Subject: [PATCH 06/24] feat(cluster-mon): Add Redis init and collectors status API - lifespan() initializes redis.asyncio client (degrades silently if unavailable) - GET /api/collectors/status with per-collector state + overall_status (healthy/degraded/critical based on critical flag per collector) - docker-compose.yml: add redis:7-alpine service with AOF persistence, healthcheck, depends_on for cluster-mon service - Tests for _compute_overall_status logic (healthy/degraded/critical cases) --- .../cluster-mon/backend/app/api/__init__.py | 3 +- .../cluster-mon/backend/app/api/collectors.py | 76 +++++++++++++++++++ cvs/monitors/cluster-mon/backend/app/main.py | 18 ++++- .../backend/tests/test_collectors_api.py | 66 ++++++++++++++++ cvs/monitors/cluster-mon/docker-compose.yml | 23 ++++++ 5 files changed, 181 insertions(+), 5 deletions(-) create mode 100644 cvs/monitors/cluster-mon/backend/app/api/collectors.py create mode 100644 cvs/monitors/cluster-mon/backend/tests/test_collectors_api.py diff --git a/cvs/monitors/cluster-mon/backend/app/api/__init__.py b/cvs/monitors/cluster-mon/backend/app/api/__init__.py index c2d1c6e8..5be0e04c 100644 --- a/cvs/monitors/cluster-mon/backend/app/api/__init__.py +++ b/cvs/monitors/cluster-mon/backend/app/api/__init__.py @@ -3,7 +3,7 @@ """ from fastapi import APIRouter -from app.api import cluster, nodes, metrics, config, software, restart, packages, logs, ssh_keys +from app.api import cluster, nodes, metrics, config, software, restart, packages, logs, ssh_keys, collectors router = APIRouter() @@ -17,3 +17,4 @@ router.include_router(packages.router, prefix="/packages", tags=["packages"]) router.include_router(logs.router, prefix="/logs", tags=["logs"]) router.include_router(ssh_keys.router, prefix="/ssh-keys", tags=["ssh-keys"]) +router.include_router(collectors.router, prefix="/collectors", tags=["collectors"]) diff --git a/cvs/monitors/cluster-mon/backend/app/api/collectors.py b/cvs/monitors/cluster-mon/backend/app/api/collectors.py new file mode 100644 index 00000000..f53fedf7 --- /dev/null +++ b/cvs/monitors/cluster-mon/backend/app/api/collectors.py @@ -0,0 +1,76 @@ +""" +Collectors status API endpoint. +Returns per-collector state and aggregate overall_status. +""" + +from fastapi import APIRouter +from typing import Any + +router = APIRouter() + + +def _compute_overall_status(collector_results: dict, collectors_meta: dict) -> str: + """ + Compute aggregate status from per-collector results. + + - "healthy" : all collectors in OK or NO_SERVICE state + - "degraded" : some collectors erroring, but no critical ones + - "critical" : any collector marked critical=True is in ERROR or UNREACHABLE + """ + if not collector_results: + return "healthy" + + for name, result in collector_results.items(): + state = result.state if hasattr(result, 'state') else result.get('state', 'ok') + state_str = state.value if hasattr(state, 'value') else str(state) + is_error = state_str in ("error", "unreachable") + is_critical = collectors_meta.get(name, {}).get('critical', False) + if is_error and is_critical: + return "critical" + + any_error = any( + (r.state.value if hasattr(r.state, 'value') else str(r.state)) in ("error", "unreachable") + for r in collector_results.values() + if hasattr(r, 'state') + ) + return "degraded" if any_error else "healthy" + + +@router.get("/status") +async def get_collectors_status() -> dict[str, Any]: + """ + Return per-collector state and aggregate overall_status. + + Response shape: + { + "gpu": {"state": "ok", "timestamp": "...", "error": null}, + "nic": {"state": "ok", "timestamp": "...", "error": null}, + "rccl": {"state": "no_service", "timestamp": "...", "error": "..."}, + "overall_status": "healthy" + } + """ + from app.main import app_state, REGISTERED_COLLECTORS + + # Build collectors metadata (critical flag) from REGISTERED_COLLECTORS + collectors_meta = { + cls.name: {"critical": getattr(cls, "critical", False)} + for cls in REGISTERED_COLLECTORS + } + + result: dict[str, Any] = {} + for name, collector_result in app_state.collector_results.items(): + state_val = ( + collector_result.state.value + if hasattr(collector_result.state, 'value') + else str(collector_result.state) + ) + result[name] = { + "state": state_val, + "timestamp": collector_result.timestamp, + "error": collector_result.error, + } + + result["overall_status"] = _compute_overall_status( + app_state.collector_results, collectors_meta + ) + return result diff --git a/cvs/monitors/cluster-mon/backend/app/main.py b/cvs/monitors/cluster-mon/backend/app/main.py index 7746c2b7..bac2016e 100644 --- a/cvs/monitors/cluster-mon/backend/app/main.py +++ b/cvs/monitors/cluster-mon/backend/app/main.py @@ -22,10 +22,7 @@ from app.collectors.base import BaseCollector, CollectorResult, CollectorState from app.api import router as api_router -try: - import redis.asyncio as aioredis -except ImportError: - aioredis = None +import redis.asyncio as aioredis # Configure logging based on DEBUG environment variable # Using RotatingFileHandler for circular log files with 1MB max size @@ -614,6 +611,19 @@ async def lifespan(app: FastAPI): logger.error(f"Failed to auto-initialize SSH manager: {e}", exc_info=True) logger.warning("Will wait for manual configuration via web UI") + # Initialize Redis (optional — app continues without it) + try: + app_state.redis = aioredis.from_url( + settings.storage.redis.url, + db=settings.storage.redis.db, + decode_responses=True, + ) + await app_state.redis.ping() + logger.info(f"Redis connected: {settings.storage.redis.url}") + except Exception as e: + logger.warning(f"Redis unavailable: {e}. History features disabled.") + app_state.redis = None + yield # Shutdown diff --git a/cvs/monitors/cluster-mon/backend/tests/test_collectors_api.py b/cvs/monitors/cluster-mon/backend/tests/test_collectors_api.py new file mode 100644 index 00000000..d4e0ec11 --- /dev/null +++ b/cvs/monitors/cluster-mon/backend/tests/test_collectors_api.py @@ -0,0 +1,66 @@ +""" +Tests for GET /api/collectors/status endpoint logic. +""" +import pytest +from unittest.mock import MagicMock + +from app.api.collectors import _compute_overall_status +from app.collectors.base import CollectorResult, CollectorState + + +def _make_result(state: CollectorState, name: str = "gpu") -> CollectorResult: + return CollectorResult( + collector_name=name, + timestamp="2026-01-01T00:00:00+00:00", + state=state, + data={}, + ) + + +def test_overall_status_healthy_when_all_ok(): + results = { + "gpu": _make_result(CollectorState.OK, "gpu"), + "nic": _make_result(CollectorState.OK, "nic"), + } + meta = {"gpu": {"critical": True}, "nic": {"critical": True}} + assert _compute_overall_status(results, meta) == "healthy" + + +def test_overall_status_healthy_when_no_results(): + assert _compute_overall_status({}, {}) == "healthy" + + +def test_overall_status_healthy_with_no_service(): + """NO_SERVICE (e.g., no RCCL job) is not an error — still healthy.""" + results = { + "gpu": _make_result(CollectorState.OK, "gpu"), + "rccl": _make_result(CollectorState.NO_SERVICE, "rccl"), + } + meta = {"gpu": {"critical": True}, "rccl": {"critical": False}} + assert _compute_overall_status(results, meta) == "healthy" + + +def test_overall_status_critical_when_critical_collector_errors(): + results = { + "gpu": _make_result(CollectorState.ERROR, "gpu"), + "nic": _make_result(CollectorState.OK, "nic"), + } + meta = {"gpu": {"critical": True}, "nic": {"critical": True}} + assert _compute_overall_status(results, meta) == "critical" + + +def test_overall_status_degraded_when_non_critical_errors(): + results = { + "gpu": _make_result(CollectorState.OK, "gpu"), + "rccl": _make_result(CollectorState.ERROR, "rccl"), + } + meta = {"gpu": {"critical": True}, "rccl": {"critical": False}} + assert _compute_overall_status(results, meta) == "degraded" + + +def test_overall_status_critical_on_unreachable_critical(): + results = { + "gpu": _make_result(CollectorState.UNREACHABLE, "gpu"), + } + meta = {"gpu": {"critical": True}} + assert _compute_overall_status(results, meta) == "critical" diff --git a/cvs/monitors/cluster-mon/docker-compose.yml b/cvs/monitors/cluster-mon/docker-compose.yml index c4481d1c..275f9960 100644 --- a/cvs/monitors/cluster-mon/docker-compose.yml +++ b/cvs/monitors/cluster-mon/docker-compose.yml @@ -6,6 +6,18 @@ version: '3.8' # Option 2: Use network_mode: "host" (uncomment below) services: + redis: + image: redis:7-alpine + restart: unless-stopped + volumes: + - redis_data:/data + command: redis-server --appendonly yes --appendfsync everysec + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 5s + retries: 3 + cvs-cluster-monitor: build: context: . @@ -14,8 +26,14 @@ services: # Network mode: Use "host" to avoid iptables issues (recommended for production) # Uncomment the line below and comment out the ports section + # NOTE: If using network_mode: "host", remove depends_on and set + # STORAGE__REDIS__URL=redis://localhost:6379 instead. # network_mode: "host" + depends_on: + redis: + condition: service_healthy + # Port mapping (used with bridge network, default) # Comment out if using network_mode: "host" ports: @@ -32,6 +50,8 @@ services: - DEBUG=${DEBUG:-false} # Cluster monitor home - CLUSTER_MONITOR_HOME=/app + # Redis connection (uses Docker service name as hostname) + - STORAGE__REDIS__URL=redis://redis:6379 restart: unless-stopped # Health check disabled - uncomment if needed # healthcheck: @@ -40,3 +60,6 @@ services: # timeout: 10s # retries: 3 # start_period: 40s + +volumes: + redis_data: From 22f82ff0d80d1c932a7fa30eb13a7e43b9f1a89b Mon Sep 17 00:00:00 2001 From: nileshnegi Date: Sat, 21 Mar 2026 01:38:44 -0500 Subject: [PATCH 07/24] feat(cluster-mon/rccl): Add RCCL data layer (Phase 1) - backend/app/models/rccl_models.py: RCCLSnapshot, RCCLJobState, NCCLFunction, RCCLCommunicator, RCCLRank, RCCLPeer, RCCLJobSummary, RCCLEvent, RCCLMarker - backend/app/collectors/rccl_data_store.py: Redis Stream-based ring buffer (atomic XADD+MAXLEN; replaces LPUSH+LTRIM pattern; time-range queries via IDs) - backend/app/collectors/rccl_ras_client.py: Async ncclras TCP client with version guards for SET FORMAT (prot 3+) and MONITOR (prot 4+) - backend/tests/mock_ncclras_server.py: Mock ncclras TCP server for unit tests - backend/tests/test_rccl_ras_client.py: Protocol client tests --- .../backend/app/collectors/rccl_data_store.py | 98 ++++++++++++++ .../backend/app/collectors/rccl_ras_client.py | 127 +++++++++++++++++ .../backend/app/models/rccl_models.py | 113 ++++++++++++++++ .../backend/tests/mock_ncclras_server.py | 57 ++++++++ .../backend/tests/test_rccl_ras_client.py | 128 ++++++++++++++++++ 5 files changed, 523 insertions(+) create mode 100644 cvs/monitors/cluster-mon/backend/app/collectors/rccl_data_store.py create mode 100644 cvs/monitors/cluster-mon/backend/app/collectors/rccl_ras_client.py create mode 100644 cvs/monitors/cluster-mon/backend/app/models/rccl_models.py create mode 100644 cvs/monitors/cluster-mon/backend/tests/mock_ncclras_server.py create mode 100644 cvs/monitors/cluster-mon/backend/tests/test_rccl_ras_client.py diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/rccl_data_store.py b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_data_store.py new file mode 100644 index 00000000..a458a702 --- /dev/null +++ b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_data_store.py @@ -0,0 +1,98 @@ +""" +Redis-backed RCCL data store using Redis Streams. + +XADD+MAXLEN is atomic (single command), fixing the LPUSH+LTRIM race condition. +Stream IDs embed millisecond timestamps, enabling time-range queries without +a separate sorted set. +""" + +import json +import logging +from typing import Optional + +logger = logging.getLogger(__name__) + + +class RCCLDataStore: + # Redis Streams — atomic append+cap in one command + SNAPSHOT_STREAM = "rccl:snapshots" # Stream, capped at 1000 entries + EVENT_STREAM = "rccl:events" # Stream, capped at 10000 entries + CURRENT_KEY = "rccl:current" # Hash, latest snapshot only + + def __init__(self, redis_client): + """ + Args: + redis_client: redis.asyncio.Redis instance from app_state.redis, or None. + All methods degrade silently when redis_client is None. + """ + self._r = redis_client + + async def push_snapshot(self, snapshot: dict) -> None: + """Atomically append snapshot to ring buffer and update current.""" + if self._r is None: + return + try: + payload = json.dumps(snapshot) + await self._r.xadd( + self.SNAPSHOT_STREAM, + {"data": payload}, + maxlen=1000, + ) + await self._r.hset( + self.CURRENT_KEY, + mapping={"data": payload, "ts": str(snapshot.get("timestamp", ""))}, + ) + except Exception as e: + logger.warning(f"RCCLDataStore.push_snapshot failed: {e}") + + async def push_event(self, event: dict) -> None: + """Atomically append event to event stream.""" + if self._r is None: + return + try: + # approximate=True trims in whole radix tree nodes — efficient for high-volume + await self._r.xadd( + self.EVENT_STREAM, + {"data": json.dumps(event)}, + maxlen=10000, + approximate=True, + ) + except Exception as e: + logger.warning(f"RCCLDataStore.push_event failed: {e}") + + async def get_recent_snapshots(self, count: int = 50) -> list[dict]: + """Return the most recent N snapshots, newest first.""" + if self._r is None: + return [] + try: + entries = await self._r.xrevrange(self.SNAPSHOT_STREAM, count=count) + return [json.loads(e[1][b"data"]) for e in entries] + except Exception as e: + logger.warning(f"RCCLDataStore.get_recent_snapshots failed: {e}") + return [] + + async def get_current_snapshot(self) -> Optional[dict]: + """Return the latest snapshot from the CURRENT_KEY hash.""" + if self._r is None: + return None + try: + result = await self._r.hget(self.CURRENT_KEY, "data") + if result: + return json.loads(result) + return None + except Exception as e: + logger.warning(f"RCCLDataStore.get_current_snapshot failed: {e}") + return None + + async def get_events_in_range(self, start_ts: float, end_ts: float) -> list[dict]: + """Return events within a UTC timestamp range using stream entry IDs.""" + if self._r is None: + return [] + try: + start_id = f"{int(start_ts * 1000)}-0" + end_id = f"{int(end_ts * 1000)}-0" + entries = await self._r.xrange(self.EVENT_STREAM, min=start_id, max=end_id) + return [json.loads(e[1][b"data"]) for e in entries] + except Exception as e: + logger.warning(f"RCCLDataStore.get_events_in_range failed: {e}") + return [] diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/rccl_ras_client.py b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_ras_client.py new file mode 100644 index 00000000..2bb0dc9f --- /dev/null +++ b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_ras_client.py @@ -0,0 +1,127 @@ +""" +Async ncclras TCP client for the CVS RCCL monitoring extension. + +Speaks the ncclras wire protocol (newline-terminated ASCII over TCP). +Connection is owned by the caller's context manager (ssh_manager.open_port_forward). + +Warning: Protocol version caveat: Values 3 and 4 for JSON_FORMAT and MONITOR_MODE +are ASSUMPTIONS -- not verified against actual ncclras server responses for +v2.28.9 and v2.29.2. Verify by running a v2.28.9 ncclras server and checking +its handshake response before implementing version-gated features. If the +server always responds SERVER PROTOCOL 2, the version guards will never +activate and an alternative feature-detection mechanism will be required. +""" + +import asyncio +import logging +from typing import AsyncIterator + +logger = logging.getLogger(__name__) + + +class ProtocolError(Exception): + """Raised when the ncclras server responds unexpectedly.""" + + +class ProtocolVersionError(ProtocolError): + """Raised when a feature requires a higher protocol version than the server supports.""" + + +class ProtocolVersion: + TEXT_ONLY = 2 # v2.28.3: STATUS, VERBOSE STATUS, TIMEOUT only + JSON_FORMAT = 3 # v2.28.9+: adds SET FORMAT json (ASSUMPTION — verify) + MONITOR_MODE = 4 # v2.29.2+: adds MONITOR [groups] (ASSUMPTION — verify) + + +class RCCLRasClient: + """ + Async ncclras TCP client. + + Takes pre-connected reader/writer (from ssh_manager.open_port_forward()). + Connection lifetime is managed by the caller's context manager -- do not + close writer here. + + Version guards: methods requiring features not in the server's protocol + version raise ProtocolVersionError rather than sending unknown commands + (which would return ERROR: Unknown command and stall the reader). + """ + + def __init__( + self, + reader: asyncio.StreamReader, + writer: asyncio.StreamWriter, + ): + self._reader = reader + self._writer = writer + self.server_protocol: int = 0 # Set during handshake + + async def handshake(self) -> int: + """ + Send CLIENT PROTOCOL 2, read SERVER PROTOCOL N. + Returns server protocol version. + Protocol mismatch is logged but not fatal (matches ncclras behavior). + """ + self._writer.write(b"CLIENT PROTOCOL 2\n") + await self._writer.drain() + line = await asyncio.wait_for(self._reader.readline(), timeout=5.0) + version_str = line.decode().strip().removeprefix("SERVER PROTOCOL ") + try: + self.server_protocol = int(version_str) + except ValueError: + raise ProtocolError(f"Unexpected handshake response: {line!r}") + return self.server_protocol + + async def set_timeout(self, secs: int) -> None: + """Set collective timeout. Available in all versions (v2.28.3+).""" + self._writer.write(f"TIMEOUT {secs}\n".encode()) + await self._writer.drain() + line = await asyncio.wait_for(self._reader.readline(), timeout=5.0) + if line.decode().strip() != "OK": + raise ProtocolError(f"Expected OK after TIMEOUT, got: {line!r}") + + async def set_format(self, fmt: str = "json") -> None: + """ + Set output format. Available only in v2.28.9+ (protocol 3+). + Raises ProtocolVersionError if server does not support it. + """ + if self.server_protocol < ProtocolVersion.JSON_FORMAT: + raise ProtocolVersionError( + f"SET FORMAT requires protocol {ProtocolVersion.JSON_FORMAT}+, " + f"server is {self.server_protocol}" + ) + self._writer.write(f"SET FORMAT {fmt}\n".encode()) + await self._writer.drain() + line = await asyncio.wait_for(self._reader.readline(), timeout=5.0) + if line.decode().strip() != "OK": + raise ProtocolError(f"Expected OK after SET FORMAT, got: {line!r}") + + async def get_status(self, verbose: bool = True) -> str: + """ + Send STATUS or VERBOSE STATUS. Reads until EOF (server closes after dump). + Returns raw text. The caller is responsible for parsing. + Available in all versions. + """ + cmd = b"VERBOSE STATUS\n" if verbose else b"STATUS\n" + self._writer.write(cmd) + await self._writer.drain() + data = await asyncio.wait_for(self._reader.read(-1), timeout=30.0) + return data.decode() + + async def start_monitor(self, groups: str = "all") -> AsyncIterator[str]: + """ + Send MONITOR [groups] and yield lines until connection closes. + Available only in v2.29.2+ (protocol 4+). + Raises ProtocolVersionError if server does not support it. + """ + if self.server_protocol < ProtocolVersion.MONITOR_MODE: + raise ProtocolVersionError( + f"MONITOR requires protocol {ProtocolVersion.MONITOR_MODE}+, " + f"server is {self.server_protocol}" + ) + self._writer.write(f"MONITOR {groups}\n".encode()) + await self._writer.drain() + ok = await asyncio.wait_for(self._reader.readline(), timeout=5.0) + if ok.decode().strip() != "OK": + raise ProtocolError(f"Expected OK after MONITOR, got: {ok!r}") + async for line in self._reader: + yield line.decode() diff --git a/cvs/monitors/cluster-mon/backend/app/models/rccl_models.py b/cvs/monitors/cluster-mon/backend/app/models/rccl_models.py new file mode 100644 index 00000000..6b0b269f --- /dev/null +++ b/cvs/monitors/cluster-mon/backend/app/models/rccl_models.py @@ -0,0 +1,113 @@ +""" +Pydantic data models for RCCL monitoring. +RCCLJobState is the canonical definition — import from here, not from collectors. +""" + +import time +from enum import Enum +from typing import Optional +from pydantic import BaseModel + + +class RCCLJobState(str, Enum): + NO_JOB = "no_job" # Connection refused — no RCCL job running + UNREACHABLE = "unreachable" # SSH/TCP timeout — node down + HEALTHY = "healthy" # Job running, all communicators healthy + DEGRADED = "degraded" # Job running, some ranks missing or async errors + ERROR = "error" # Unexpected protocol error + + +class NCCLFunction(str, Enum): + """NCCL collective function names as they appear in VERBOSE STATUS text output. + + Used as typed dict keys after the text parser extracts named op counts from + lines like 'AllReduce=N AllGather=N ...'. Enum order does NOT affect correctness — + parsing is by string name, not by index. + """ + BROADCAST = "Broadcast" + REDUCE = "Reduce" + ALL_GATHER = "AllGather" + REDUCE_SCATTER = "ReduceScatter" + ALL_REDUCE = "AllReduce" + GATHER = "Gather" + SCATTER = "Scatter" + ALL_TO_ALL = "AllToAll" + ALL_TO_ALL_V = "AllToAllv" + SEND = "Send" + RECV = "Recv" + SEND_RECV = "SendRecv" + + +class RCCLRankStatus(BaseModel): + init_state: int # ncclResult_t value (0 = ncclSuccess) + async_error: int # ncclResult_t value + finalize_called: bool + destroy_flag: bool + abort_flag: bool + + +class RCCLRank(BaseModel): + comm_rank: int + node_addr: str # IP address of the node + pid: int + cuda_dev: int # CUDA device index (CUDA_VISIBLE_DEVICES-aware) + nvml_dev: int # NVML device index (raw hardware index) + coll_op_counts: dict[NCCLFunction, int] # Keyed by NCCLFunction string enum + status: RCCLRankStatus + + +class RCCLCommunicator(BaseModel): + comm_hash: str # Hex string of the 3-component commId hash + total_ranks: int # commNRanks from RAS collective + responding_ranks: int # nRanks — ranks we received data from + missing_ranks: int # nMissingRanks — declared missing by other ranks + ranks: list[RCCLRank] + health: RCCLJobState # Derived: HEALTHY/DEGRADED/ERROR + + +class RCCLPeer(BaseModel): + addr: str + pid: int + cuda_devs: int # Bitmask + nvml_devs: int # Bitmask + is_dead: bool + + +class RCCLJobSummary(BaseModel): + total_nodes: int + total_processes: int + total_gpus: int + rccl_version: str + hip_runtime_version: int + amdgpu_driver_version: int + inconsistent_topology: bool # True when nodes have different process/GPU counts + + +class RCCLSnapshot(BaseModel): + timestamp: float + state: RCCLJobState + job_summary: Optional[RCCLJobSummary] = None + communicators: list[RCCLCommunicator] = [] + peers: list[RCCLPeer] = [] + dead_peers: list[str] = [] # IP:port strings of declared-dead peers + + @classmethod + def empty(cls, state: RCCLJobState = RCCLJobState.NO_JOB) -> "RCCLSnapshot": + return cls(timestamp=time.time(), state=state) + + +class RCCLEvent(BaseModel): + timestamp: float + event_type: str # "lifecycle" or "trace" (Phase 3+) + source_node: str + details: str + peer_addr: Optional[str] = None + + +class RCCLMarker(BaseModel): + """Posted by the PyTorch callback via POST /api/rccl/markers.""" + type: str # e.g., "training_step" + step: int + loss: Optional[float] = None + rank: int + timestamp: str # ISO 8601 diff --git a/cvs/monitors/cluster-mon/backend/tests/mock_ncclras_server.py b/cvs/monitors/cluster-mon/backend/tests/mock_ncclras_server.py new file mode 100644 index 00000000..f92da03e --- /dev/null +++ b/cvs/monitors/cluster-mon/backend/tests/mock_ncclras_server.py @@ -0,0 +1,57 @@ +""" +Mock ncclras TCP server for unit testing. +Replays a fixture response over TCP so collector tests run without a real RCCL job. +""" + +import asyncio +from typing import Optional + + +class MockNcclRasServer: + """Minimal ncclras server for unit testing. Replays a fixed fixture response.""" + + def __init__(self, fixture_data: bytes, protocol_version: int = 2): + self.fixture_data = fixture_data + self.protocol_version = protocol_version + self._server: Optional[asyncio.Server] = None + + async def handle( + self, reader: asyncio.StreamReader, writer: asyncio.StreamWriter + ) -> None: + try: + line = await asyncio.wait_for(reader.readline(), timeout=2.0) + assert line.lower().startswith(b"client protocol"), \ + f"Expected CLIENT PROTOCOL, got: {line!r}" + + writer.write(f"SERVER PROTOCOL {self.protocol_version}\n".encode()) + await writer.drain() + + # Handle optional TIMEOUT command + line = await asyncio.wait_for(reader.readline(), timeout=2.0) + if line.lower().startswith(b"timeout"): + writer.write(b"OK\n") + await writer.drain() + line = await asyncio.wait_for(reader.readline(), timeout=2.0) + + # Expect STATUS or VERBOSE STATUS + assert b"status" in line.lower(), \ + f"Expected STATUS command, got: {line!r}" + + writer.write(self.fixture_data) + await writer.drain() + finally: + writer.close() + try: + await writer.wait_closed() + except Exception: + pass + + async def start(self, host: str = "127.0.0.1", port: int = 0) -> int: + """Start the server. Returns the bound port (use port=0 for ephemeral).""" + self._server = await asyncio.start_server(self.handle, host, port) + return self._server.sockets[0].getsockname()[1] + + async def stop(self) -> None: + if self._server: + self._server.close() + await self._server.wait_closed() diff --git a/cvs/monitors/cluster-mon/backend/tests/test_rccl_ras_client.py b/cvs/monitors/cluster-mon/backend/tests/test_rccl_ras_client.py new file mode 100644 index 00000000..4e9ed4f3 --- /dev/null +++ b/cvs/monitors/cluster-mon/backend/tests/test_rccl_ras_client.py @@ -0,0 +1,128 @@ +""" +Tests for RCCLRasClient against MockNcclRasServer. +""" +import asyncio +import pytest + +from app.collectors.rccl_ras_client import ( + RCCLRasClient, + ProtocolError, + ProtocolVersionError, + ProtocolVersion, +) +from tests.mock_ncclras_server import MockNcclRasServer + + +SAMPLE_STATUS = b"""RCCL version 2.28.3 compiled with ROCm 6.0 + +Job summary +=========== + + Nodes Processes +(total) per node + 2 8 + +Communicator abc123 HEALTHY + Ranks: 16 total, 16 responding, 0 missing +""" + + +@pytest.fixture +async def mock_server(): + server = MockNcclRasServer(fixture_data=SAMPLE_STATUS, protocol_version=2) + port = await server.start() + yield port + await server.stop() + + +async def _connect(port: int): + reader, writer = await asyncio.open_connection("127.0.0.1", port) + return RCCLRasClient(reader, writer) + + +@pytest.mark.asyncio +async def test_handshake_returns_server_version(mock_server): + client = await _connect(mock_server) + version = await client.handshake() + assert version == 2 + assert client.server_protocol == 2 + client._writer.close() + + +@pytest.mark.asyncio +async def test_set_timeout_ok(mock_server): + client = await _connect(mock_server) + await client.handshake() + await client.set_timeout(10) + client._writer.close() + + +@pytest.mark.asyncio +async def test_get_status_returns_text(mock_server): + client = await _connect(mock_server) + await client.handshake() + await client.set_timeout(10) + text = await client.get_status(verbose=True) + assert "RCCL version" in text + assert "Communicator" in text + + +@pytest.mark.asyncio +async def test_set_format_raises_on_protocol_2(mock_server): + """set_format requires protocol 3+ — should raise on a protocol 2 server.""" + client = await _connect(mock_server) + await client.handshake() + assert client.server_protocol == 2 + with pytest.raises(ProtocolVersionError): + await client.set_format("json") + client._writer.close() + + +@pytest.mark.asyncio +async def test_start_monitor_raises_on_protocol_2(mock_server): + """start_monitor requires protocol 4+ — should raise on a protocol 2 server.""" + client = await _connect(mock_server) + await client.handshake() + with pytest.raises(ProtocolVersionError): + async for _ in client.start_monitor(): + pass + client._writer.close() + + +def test_rccl_models_import(): + from app.models.rccl_models import ( + RCCLSnapshot, + RCCLJobState, + NCCLFunction, + RCCLMarker, + ) + snapshot = RCCLSnapshot.empty() + assert snapshot.state == RCCLJobState.NO_JOB + assert snapshot.communicators == [] + + +def test_rccl_data_store_degrades_without_redis(): + from app.collectors.rccl_data_store import RCCLDataStore + store = RCCLDataStore(redis_client=None) + # All methods should be awaitable and return gracefully with no Redis + import asyncio + asyncio.run(store.push_snapshot({"timestamp": 1.0})) + asyncio.run(store.push_event({"timestamp": 1.0})) + result = asyncio.run(store.get_recent_snapshots()) + assert result == [] + result = asyncio.run(store.get_current_snapshot()) + assert result is None + + +def test_ncclfunction_enum_str_values(): + from app.models.rccl_models import NCCLFunction + assert NCCLFunction.ALL_REDUCE == "AllReduce" + assert NCCLFunction.ALL_GATHER == "AllGather" + assert NCCLFunction.SEND == "Send" + + +def test_rccl_job_state_values(): + from app.models.rccl_models import RCCLJobState + assert RCCLJobState.NO_JOB == "no_job" + assert RCCLJobState.HEALTHY == "healthy" + assert RCCLJobState.DEGRADED == "degraded" From b6a78538c9100da2067e83dabc8a7774254f6407 Mon Sep 17 00:00:00 2001 From: nileshnegi Date: Sat, 21 Mar 2026 01:46:28 -0500 Subject: [PATCH 08/24] feat(cluster-mon/rccl): RCCL Collector + API + AppState integration (Phase 1) - backend/app/collectors/rccl_collector.py: RCCLCollector(BaseCollector), _pick_leader() via node_health_status, collect() with port-forward + ncclras protocol, NO_JOB/UNREACHABLE/ERROR/HEALTHY/DEGRADED state machine, Phase 1 text parser stub (requires fixture capture before full impl) - backend/app/api/rccl_endpoints.py: GET /api/rccl/status, /communicators, /communicators/{hash}, /events, POST /api/rccl/markers - backend/app/main.py: RCCLCollector in REGISTERED_COLLECTORS, rccl_data_store init, latest_rccl_snapshot, rccl_websocket_clients, /ws/rccl WebSocket - backend/app/api/__init__.py: Register rccl_endpoints router --- .../cluster-mon/backend/app/api/__init__.py | 3 +- .../backend/app/api/rccl_endpoints.py | 93 ++++++++ .../backend/app/collectors/rccl_collector.py | 212 ++++++++++++++++++ cvs/monitors/cluster-mon/backend/app/main.py | 25 ++- .../backend/tests/test_rccl_collector.py | 96 ++++++++ 5 files changed, 427 insertions(+), 2 deletions(-) create mode 100644 cvs/monitors/cluster-mon/backend/app/api/rccl_endpoints.py create mode 100644 cvs/monitors/cluster-mon/backend/app/collectors/rccl_collector.py create mode 100644 cvs/monitors/cluster-mon/backend/tests/test_rccl_collector.py diff --git a/cvs/monitors/cluster-mon/backend/app/api/__init__.py b/cvs/monitors/cluster-mon/backend/app/api/__init__.py index 5be0e04c..e1629251 100644 --- a/cvs/monitors/cluster-mon/backend/app/api/__init__.py +++ b/cvs/monitors/cluster-mon/backend/app/api/__init__.py @@ -3,7 +3,7 @@ """ from fastapi import APIRouter -from app.api import cluster, nodes, metrics, config, software, restart, packages, logs, ssh_keys, collectors +from app.api import cluster, nodes, metrics, config, software, restart, packages, logs, ssh_keys, collectors, rccl_endpoints router = APIRouter() @@ -18,3 +18,4 @@ router.include_router(logs.router, prefix="/logs", tags=["logs"]) router.include_router(ssh_keys.router, prefix="/ssh-keys", tags=["ssh-keys"]) router.include_router(collectors.router, prefix="/collectors", tags=["collectors"]) +router.include_router(rccl_endpoints.router, prefix="/rccl", tags=["rccl"]) diff --git a/cvs/monitors/cluster-mon/backend/app/api/rccl_endpoints.py b/cvs/monitors/cluster-mon/backend/app/api/rccl_endpoints.py new file mode 100644 index 00000000..32d97803 --- /dev/null +++ b/cvs/monitors/cluster-mon/backend/app/api/rccl_endpoints.py @@ -0,0 +1,93 @@ +""" +RCCL monitoring REST API endpoints. +Phase 1: status, communicators, events, markers. +""" + +import logging +from typing import Any, Optional +from fastapi import APIRouter, HTTPException, Query + +router = APIRouter() +logger = logging.getLogger(__name__) + + +@router.get("/status") +async def get_rccl_status() -> dict[str, Any]: + """ + Current RCCL job state and communicator health summary. + Returns the latest snapshot from app_state.latest_rccl_snapshot. + Falls back to {'state': 'no_job'} if no snapshot yet collected. + """ + from app.main import app_state + + snapshot = getattr(app_state, 'latest_rccl_snapshot', None) + if snapshot is None: + return {"state": "no_job", "message": "No RCCL snapshot collected yet"} + return snapshot + + +@router.get("/communicators") +async def get_rccl_communicators() -> list[dict]: + """All communicators with per-rank detail from the latest snapshot.""" + from app.main import app_state + + snapshot = getattr(app_state, 'latest_rccl_snapshot', None) + if snapshot is None: + return [] + return snapshot.get("communicators", []) + + +@router.get("/communicators/{comm_hash}") +async def get_rccl_communicator(comm_hash: str) -> dict[str, Any]: + """Single communicator deep-dive by hash.""" + from app.main import app_state + + snapshot = getattr(app_state, 'latest_rccl_snapshot', None) + if snapshot is None: + raise HTTPException(status_code=404, detail="No snapshot available") + for comm in snapshot.get("communicators", []): + if comm.get("comm_hash") == comm_hash: + return comm + raise HTTPException(status_code=404, detail=f"Communicator {comm_hash!r} not found") + + +@router.get("/events") +async def get_rccl_events( + since: Optional[float] = Query(None, description="Start timestamp (unix)"), + until: Optional[float] = Query(None, description="End timestamp (unix)"), + event_type: Optional[str] = Query(None, alias="type"), +) -> list[dict]: + """Filtered event log from Redis event stream.""" + from app.main import app_state + import time + + data_store = getattr(app_state, 'rccl_data_store', None) + if data_store is None: + return [] + + start = since or (time.time() - 3600) # default: last hour + end = until or time.time() + events = await data_store.get_events_in_range(start, end) + + if event_type: + events = [e for e in events if e.get("event_type") == event_type] + return events + + +@router.post("/markers", status_code=201) +async def post_rccl_marker(marker: dict) -> dict[str, str]: + """ + PyTorch callback endpoint for training step/loss markers. + Stores marker as an event in the RCCL event stream. + """ + from app.main import app_state + import time + + marker.setdefault("event_type", "training_marker") + marker.setdefault("timestamp", time.time()) + + data_store = getattr(app_state, 'rccl_data_store', None) + if data_store: + await data_store.push_event(marker) + + return {"status": "accepted"} diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/rccl_collector.py b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_collector.py new file mode 100644 index 00000000..f3b52aed --- /dev/null +++ b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_collector.py @@ -0,0 +1,212 @@ +""" +RCCL Collector -- CVS cluster-mon Phase 1. + +Implements BaseCollector. Polls ncclras via SSH port-forward on each cycle. +Lifecycle managed by the unified REGISTERED_COLLECTORS loop in main.py. + +Critical=False: RCCLJobState.NO_JOB is expected when no RCCL job is running +and does NOT count as a collector failure for overall_status purposes. +""" + +import asyncio +import logging +from typing import Optional, Any + +from app.collectors.base import BaseCollector, CollectorResult, CollectorState +from app.collectors.rccl_ras_client import RCCLRasClient, ProtocolError +from app.models.rccl_models import RCCLJobState, RCCLSnapshot + +logger = logging.getLogger(__name__) + + +class RCCLCollector(BaseCollector): + """ + Polls ncclras (the RCCL RAS TCP service on port 28028) via SSH port-forward. + + - name = "rccl" + - poll_interval: read from settings.rccl.poll_interval (default 30s) + - collect_timeout: collective_timeout_secs + 10s for SSH + protocol overhead + - critical = False (NO_JOB is expected; not a system failure) + """ + + name = "rccl" + poll_interval: int = 30 # overridden at module level from settings + collect_timeout: float = 20.0 # overridden at module level from settings + critical = False + + def __init__(self): + self.job_state: RCCLJobState = RCCLJobState.NO_JOB + self._app_state: Optional[Any] = None # set in run() before collect() + + def _pick_leader(self, app_state: Any) -> Optional[str]: + """ + Return the first node with healthy status from app_state.node_health_status. + The existing host probe already maintains this dict -- no extra reachability + check needed. Returns None if all nodes are unhealthy/unreachable. + """ + for node, status in app_state.node_health_status.items(): + if status == "healthy": + return node + return None + + def _health_from_snapshot(self, snapshot: RCCLSnapshot) -> RCCLJobState: + """Derive job state from snapshot: HEALTHY if no missing ranks, DEGRADED otherwise.""" + if not snapshot.communicators: + return RCCLJobState.HEALTHY + for comm in snapshot.communicators: + if comm.missing_ranks > 0: + return RCCLJobState.DEGRADED + return RCCLJobState.HEALTHY + + async def run(self, ssh_manager, app_state: Any) -> None: + """ + Override BaseCollector.run() to pass app_state to collect(). + Stores app_state reference so _pick_leader() and data_store are accessible. + """ + self._app_state = app_state + self._ssh_manager = ssh_manager + await super().run(ssh_manager, app_state) + + async def collect(self, ssh_manager) -> CollectorResult: + """ + One RCCL poll cycle: + 1. Pick one healthy node as 'leader' (VERBOSE STATUS -> triggers RAS_COLL_COMMS). + 2. Open SSH port-forward to leader:ras_port. + 3. Run ncclras protocol: handshake -> set_timeout -> get_status(verbose=True). + 4. Parse response -> RCCLSnapshot -> store in Redis and app_state. + 5. Return CollectorResult. + + Connection refused -> NO_JOB (expected state, not an error). + Timeout -> UNREACHABLE. + Protocol error -> ERROR. + """ + from app.core.config import settings + + app_state = self._app_state + if app_state is None: + return CollectorResult( + collector_name=self.name, + timestamp=CollectorResult.now_iso(), + state=CollectorState.ERROR, + data={}, + error="collect() called before run() -- app_state not set", + ) + + leader = self._pick_leader(app_state) + if leader is None: + self.job_state = RCCLJobState.UNREACHABLE + return CollectorResult( + collector_name=self.name, + timestamp=CollectorResult.now_iso(), + state=CollectorState.UNREACHABLE, + data={}, + error="No healthy nodes available for RCCL leader", + ) + + ras_port = settings.rccl.ras_port + collective_timeout = settings.rccl.collective_timeout_secs + + try: + async with ssh_manager.open_port_forward(leader, ras_port) as (reader, writer): + client = RCCLRasClient(reader, writer) + await client.handshake() + await client.set_timeout(collective_timeout) + raw_text = await client.get_status(verbose=True) + # Connection closed automatically when context exits + + # Phase 1: text parser (placeholder -- returns minimal snapshot) + snapshot = self._parse_text_response(raw_text, leader) + self.job_state = self._health_from_snapshot(snapshot) + snapshot_dict = snapshot.model_dump() + + # Store in Redis and app_state (non-blocking, degrades gracefully) + if hasattr(app_state, 'rccl_data_store') and app_state.rccl_data_store: + await app_state.rccl_data_store.push_snapshot(snapshot_dict) + if hasattr(app_state, 'latest_rccl_snapshot'): + app_state.latest_rccl_snapshot = snapshot_dict + + collector_state = ( + CollectorState.OK + if self.job_state in (RCCLJobState.HEALTHY, RCCLJobState.DEGRADED) + else CollectorState.NO_SERVICE + ) + return CollectorResult( + collector_name=self.name, + timestamp=CollectorResult.now_iso(), + state=collector_state, + data=snapshot_dict, + ) + + except ConnectionRefusedError: + self.job_state = RCCLJobState.NO_JOB + return CollectorResult( + collector_name=self.name, + timestamp=CollectorResult.now_iso(), + state=CollectorState.NO_SERVICE, + data={}, + error=f"Port {ras_port} not listening on {leader} -- no RCCL job running", + ) + except asyncio.TimeoutError: + self.job_state = RCCLJobState.UNREACHABLE + return CollectorResult( + collector_name=self.name, + timestamp=CollectorResult.now_iso(), + state=CollectorState.UNREACHABLE, + data={}, + error=f"RAS collective timed out on {leader}", + ) + except ProtocolError as e: + self.job_state = RCCLJobState.ERROR + logger.error(f"RAS protocol error on {leader}: {e}") + return CollectorResult( + collector_name=self.name, + timestamp=CollectorResult.now_iso(), + state=CollectorState.ERROR, + data={}, + error=str(e), + ) + except Exception as e: + self.job_state = RCCLJobState.ERROR + logger.error(f"RCCL collect() unexpected error on {leader}: {e}", exc_info=True) + return CollectorResult( + collector_name=self.name, + timestamp=CollectorResult.now_iso(), + state=CollectorState.ERROR, + data={}, + error=str(e), + ) + + def _parse_text_response(self, raw_text: str, leader: str) -> RCCLSnapshot: + """ + Phase 1 text parser stub. + + The full parser must be written test-first against captured ncclras fixture + files (see plan Section 4a). This stub returns a minimal snapshot indicating + the job is running so the HEALTHY/DEGRADED state machine works end-to-end. + + TODO: Replace with regex-based parser against real ncclras VERBOSE STATUS output. + Run: ncclras -v > tests/fixtures/rccl_verbose_status_healthy.txt + """ + import time + from app.models.rccl_models import RCCLSnapshot, RCCLJobState + + # Detect obvious failure patterns from raw text + if not raw_text.strip(): + return RCCLSnapshot.empty(state=RCCLJobState.NO_JOB) + + # Return minimal healthy snapshot -- communicators empty until full parser is built + return RCCLSnapshot( + timestamp=time.time(), + state=RCCLJobState.HEALTHY, + communicators=[], + peers=[], + dead_peers=[], + ) + + +try: + from app.core.config import settings as _settings + RCCLCollector.poll_interval = _settings.rccl.poll_interval + RCCLCollector.collect_timeout = _settings.rccl.collective_timeout_secs + 10 +except Exception: + pass # use class defaults diff --git a/cvs/monitors/cluster-mon/backend/app/main.py b/cvs/monitors/cluster-mon/backend/app/main.py index bac2016e..0e86a07e 100644 --- a/cvs/monitors/cluster-mon/backend/app/main.py +++ b/cvs/monitors/cluster-mon/backend/app/main.py @@ -19,6 +19,7 @@ from app.core.jump_host_pssh import JumpHostPssh from app.collectors.gpu_collector import GPUMetricsCollector from app.collectors.nic_collector import NICMetricsCollector +from app.collectors.rccl_collector import RCCLCollector from app.collectors.base import BaseCollector, CollectorResult, CollectorState from app.api import router as api_router @@ -107,6 +108,11 @@ def __init__(self): # Redis client self.redis: Optional[object] = None + # RCCL state + self.rccl_data_store = None # RCCLDataStore, set in lifespan + self.latest_rccl_snapshot: Optional[dict] = None + self.rccl_websocket_clients: List[WebSocket] = [] + app_state = AppState() @@ -114,7 +120,7 @@ def __init__(self): REGISTERED_COLLECTORS: list[type[BaseCollector]] = [ GPUMetricsCollector, NICMetricsCollector, - # RCCLCollector added in Batch 6 + RCCLCollector, ] @@ -624,6 +630,10 @@ async def lifespan(app: FastAPI): logger.warning(f"Redis unavailable: {e}. History features disabled.") app_state.redis = None + # Initialize RCCL data store (uses app_state.redis, degrades if None) + from app.collectors.rccl_data_store import RCCLDataStore + app_state.rccl_data_store = RCCLDataStore(app_state.redis) + yield # Shutdown @@ -698,6 +708,19 @@ async def websocket_metrics(websocket: WebSocket): app_state.websocket_clients.remove(websocket) +@app.websocket("/ws/rccl") +async def websocket_rccl(websocket: WebSocket): + """WebSocket endpoint for real-time RCCL event streaming.""" + await websocket.accept() + app_state.rccl_websocket_clients.append(websocket) + try: + while True: + await websocket.receive_text() # Keep alive; server pushes via broadcast_rccl() + except WebSocketDisconnect: + if websocket in app_state.rccl_websocket_clients: + app_state.rccl_websocket_clients.remove(websocket) + + # Include API router FIRST (highest priority) app.include_router(api_router, prefix=settings.api_prefix) diff --git a/cvs/monitors/cluster-mon/backend/tests/test_rccl_collector.py b/cvs/monitors/cluster-mon/backend/tests/test_rccl_collector.py new file mode 100644 index 00000000..a09bf6fb --- /dev/null +++ b/cvs/monitors/cluster-mon/backend/tests/test_rccl_collector.py @@ -0,0 +1,96 @@ +"""Tests for RCCLCollector.""" +import asyncio +import pytest +from unittest.mock import AsyncMock, MagicMock, patch + +from app.collectors.base import CollectorState +from app.collectors.rccl_collector import RCCLCollector +from app.models.rccl_models import RCCLJobState + + +def _make_app_state(healthy_nodes=None): + app_state = MagicMock() + app_state.node_health_status = {n: "healthy" for n in (healthy_nodes or ["node1"])} + app_state.rccl_data_store = None + app_state.latest_rccl_snapshot = None + app_state.collector_results = {} + app_state.latest_metrics = {} + app_state.is_collecting = False + app_state.probe_requested = None + return app_state + + +def test_rccl_collector_attrs(): + assert RCCLCollector.name == "rccl" + assert RCCLCollector.critical is False + assert hasattr(RCCLCollector, 'poll_interval') + assert hasattr(RCCLCollector, 'collect_timeout') + + +def test_pick_leader_returns_healthy_node(): + collector = RCCLCollector() + app_state = _make_app_state(["node1", "node2"]) + leader = collector._pick_leader(app_state) + assert leader in ("node1", "node2") + + +def test_pick_leader_returns_none_when_all_unhealthy(): + collector = RCCLCollector() + app_state = MagicMock() + app_state.node_health_status = {"node1": "unhealthy", "node2": "unreachable"} + assert collector._pick_leader(app_state) is None + + +@pytest.mark.asyncio +async def test_collect_returns_unreachable_when_no_healthy_nodes(): + collector = RCCLCollector() + collector._app_state = _make_app_state() + collector._app_state.node_health_status = {} # no nodes + + ssh_manager = MagicMock() + result = await collector.collect(ssh_manager) + assert result.state == CollectorState.UNREACHABLE + assert collector.job_state == RCCLJobState.UNREACHABLE + + +@pytest.mark.asyncio +async def test_collect_returns_no_service_on_connection_refused(): + collector = RCCLCollector() + app_state = _make_app_state(["node1"]) + collector._app_state = app_state + + ssh_manager = MagicMock() + ssh_mock_ctx = AsyncMock() + ssh_mock_ctx.__aenter__ = AsyncMock(side_effect=ConnectionRefusedError("refused")) + ssh_mock_ctx.__aexit__ = AsyncMock(return_value=False) + ssh_manager.open_port_forward = MagicMock(return_value=ssh_mock_ctx) + + result = await collector.collect(ssh_manager) + assert result.state == CollectorState.NO_SERVICE + assert collector.job_state == RCCLJobState.NO_JOB + + +@pytest.mark.asyncio +async def test_collect_returns_error_when_app_state_not_set(): + collector = RCCLCollector() + # _app_state is None (run() not called) + result = await collector.collect(MagicMock()) + assert result.state == CollectorState.ERROR + + +def test_health_from_snapshot_healthy(): + from app.models.rccl_models import RCCLSnapshot, RCCLCommunicator, RCCLJobState + collector = RCCLCollector() + snapshot = RCCLSnapshot( + timestamp=1.0, + state=RCCLJobState.HEALTHY, + communicators=[], + ) + assert collector._health_from_snapshot(snapshot) == RCCLJobState.HEALTHY + + +def test_rccl_endpoints_importable(): + from app.api.rccl_endpoints import router + routes = [r.path for r in router.routes] + assert any("status" in r for r in routes) + assert any("markers" in r for r in routes) From b7c9993ae77b5a9de43ab228c60710c91e84727a Mon Sep 17 00:00:00 2001 From: nileshnegi Date: Sat, 21 Mar 2026 01:53:43 -0500 Subject: [PATCH 09/24] fix(cluster-mon): Fix post-review issues - main.py: Move Redis init before collector startup (correct ordering) - main.py: Replace deprecated asyncio.get_event_loop() with get_running_loop() - main.py: Remove dead collect_metrics_loop() function - jump_host_pssh.py: Use RLock instead of Lock to prevent _exec_lock deadlock when _execute_on_node() acquires lock inside exec() which already holds it - rccl_data_store.py: Fix b'data' -> 'data' key (decode_responses=True) - api/config.py: Replace simple_config import with app.core.config.settings - core/simple_config.py: Deleted (replaced by completed config.py) --- .../cluster-mon/backend/app/api/config.py | 2 +- .../backend/app/collectors/rccl_data_store.py | 4 +- .../backend/app/core/jump_host_pssh.py | 2 +- .../backend/app/core/simple_config.py | 251 ------------------ cvs/monitors/cluster-mon/backend/app/main.py | 99 +------ 5 files changed, 18 insertions(+), 340 deletions(-) delete mode 100644 cvs/monitors/cluster-mon/backend/app/core/simple_config.py diff --git a/cvs/monitors/cluster-mon/backend/app/api/config.py b/cvs/monitors/cluster-mon/backend/app/api/config.py index f1a93e4d..49e9261a 100644 --- a/cvs/monitors/cluster-mon/backend/app/api/config.py +++ b/cvs/monitors/cluster-mon/backend/app/api/config.py @@ -251,7 +251,7 @@ async def get_current_configuration() -> Dict[str, Any]: """ Get current configuration including all SSH and jump host settings. """ - from app.core.simple_config import config as settings + from app.core.config import settings nodes = settings.load_nodes_from_file() diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/rccl_data_store.py b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_data_store.py index a458a702..59b1314e 100644 --- a/cvs/monitors/cluster-mon/backend/app/collectors/rccl_data_store.py +++ b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_data_store.py @@ -66,7 +66,7 @@ async def get_recent_snapshots(self, count: int = 50) -> list[dict]: return [] try: entries = await self._r.xrevrange(self.SNAPSHOT_STREAM, count=count) - return [json.loads(e[1][b"data"]) for e in entries] + return [json.loads(e[1]["data"]) for e in entries] except Exception as e: logger.warning(f"RCCLDataStore.get_recent_snapshots failed: {e}") return [] @@ -92,7 +92,7 @@ async def get_events_in_range(self, start_ts: float, end_ts: float) -> list[dict start_id = f"{int(start_ts * 1000)}-0" end_id = f"{int(end_ts * 1000)}-0" entries = await self._r.xrange(self.EVENT_STREAM, min=start_id, max=end_id) - return [json.loads(e[1][b"data"]) for e in entries] + return [json.loads(e[1]["data"]) for e in entries] except Exception as e: logger.warning(f"RCCLDataStore.get_events_in_range failed: {e}") return [] diff --git a/cvs/monitors/cluster-mon/backend/app/core/jump_host_pssh.py b/cvs/monitors/cluster-mon/backend/app/core/jump_host_pssh.py index ef59f42e..14a15721 100644 --- a/cvs/monitors/cluster-mon/backend/app/core/jump_host_pssh.py +++ b/cvs/monitors/cluster-mon/backend/app/core/jump_host_pssh.py @@ -87,7 +87,7 @@ def __init__( self._create_parallel_client() - self._exec_lock = threading.Lock() + self._exec_lock = threading.RLock() # reentrant: exec() holds lock; _execute_on_node() acquires again def _is_jump_host_alive(self): """Check if jump host connection is still active.""" diff --git a/cvs/monitors/cluster-mon/backend/app/core/simple_config.py b/cvs/monitors/cluster-mon/backend/app/core/simple_config.py deleted file mode 100644 index 1b14e894..00000000 --- a/cvs/monitors/cluster-mon/backend/app/core/simple_config.py +++ /dev/null @@ -1,251 +0,0 @@ -""" -Simplified configuration loader - reads directly from YAML. -Avoids Pydantic BaseSettings nested model issues. -""" - -import yaml -from pathlib import Path -from typing import List, Optional - - -class SimpleConfig: - """Simple configuration loader from YAML file.""" - - def __init__(self, yaml_path: str = None): - # Auto-detect config path for both dev and Docker - if yaml_path is None: - # Try Docker path first - docker_path = Path("/app/config/cluster.yaml") - if docker_path.exists(): - yaml_path = str(docker_path) - else: - # Fallback to development path - yaml_path = "../config/cluster.yaml" - - self.yaml_path = Path(yaml_path).resolve() - self.config_data = {} - self.load() - - def load(self): - """Load configuration from YAML file.""" - if self.yaml_path.exists(): - with open(self.yaml_path) as f: - data = yaml.safe_load(f) - self.config_data = data.get("cluster", {}) - else: - print(f"Warning: Config file not found at {self.yaml_path}") - self.config_data = {} - - def get_nodes_file(self) -> str: - """Get nodes file path.""" - # Try Docker path first - docker_nodes = Path("/app/config/nodes.txt") - if docker_nodes.exists(): - return str(docker_nodes) - return self.config_data.get("nodes_file", "../config/nodes.txt") - - def load_nodes_from_file(self) -> List[str]: - """Load node IPs from nodes file.""" - # Try multiple possible paths - import os - - possible_paths = [ - Path("/app/config/nodes.txt"), # Docker path (first priority) - Path("../config/nodes.txt"), # Development path - Path(os.path.join(os.getenv("CLUSTER_MONITOR_HOME", "."), "config/nodes.txt")), - Path(self.get_nodes_file()), - ] - - for nodes_file in possible_paths: - nodes_file = nodes_file.resolve() - if nodes_file.exists(): - with open(nodes_file) as f: - nodes = [line.strip() for line in f if line.strip() and not line.startswith("#")] - if nodes: - return nodes - - return [] - - # SSH Configuration - @property - def ssh_username(self) -> str: - import os - - default_user = os.getenv("USER", "root") - return self.config_data.get("ssh", {}).get("username", default_user) - - @property - def ssh_password(self) -> Optional[str]: - # SECURITY: Password is stored in memory only (app_state), never in YAML - try: - from app.main import app_state - - return app_state.ssh_password - except: - return None - - @property - def ssh_key_file(self) -> str: - return self.config_data.get("ssh", {}).get("key_file", "~/.ssh/id_rsa") - - @property - def ssh_timeout(self) -> int: - return self.config_data.get("ssh", {}).get("timeout", 30) - - # Jump Host Configuration - @property - def jump_host_enabled(self) -> bool: - return self.config_data.get("ssh", {}).get("jump_host", {}).get("enabled", False) - - @property - def jump_host(self) -> Optional[str]: - if self.jump_host_enabled: - return self.config_data.get("ssh", {}).get("jump_host", {}).get("host") - return None - - @property - def jump_host_username(self) -> str: - import os - - default_user = os.getenv("USER", "root") - return self.config_data.get("ssh", {}).get("jump_host", {}).get("username", default_user) - - @property - def jump_host_password(self) -> Optional[str]: - # SECURITY: Password is stored in memory only (app_state), never in YAML - # However, for testing/development, we also check YAML - try: - from app.main import app_state - - if app_state.jump_host_password: - return app_state.jump_host_password - except: - pass - - # Fallback: Read from YAML (for testing/development only) - # Production should never have passwords in YAML - return self.config_data.get("ssh", {}).get("jump_host", {}).get("password") - - @property - def jump_host_key_file(self) -> str: - """Local keyfile to SSH to jump host.""" - return self.config_data.get("ssh", {}).get("jump_host", {}).get("key_file", "~/.ssh/id_rsa") - - @property - def node_username_via_jumphost(self) -> str: - """Username for cluster nodes when using jump host.""" - import os - - default_user = os.getenv("USER", "root") - # First check for node_username_via_jumphost at ssh level, then check jump_host.node_username - return self.config_data.get("ssh", {}).get("node_username_via_jumphost") or self.config_data.get("ssh", {}).get( - "jump_host", {} - ).get("node_username", default_user) - - @property - def node_key_file_on_jumphost(self) -> str: - """Path to private key ON JUMP HOST for accessing cluster nodes.""" - # First check for node_key_file_on_jumphost at ssh level, then check jump_host.node_key_file - return self.config_data.get("ssh", {}).get("node_key_file_on_jumphost") or self.config_data.get("ssh", {}).get( - "jump_host", {} - ).get("node_key_file", "~/.ssh/id_rsa") - - # Polling Configuration - @property - def polling_interval(self) -> int: - return self.config_data.get("polling", {}).get("interval", 60) - - @property - def polling_batch_size(self) -> int: - return self.config_data.get("polling", {}).get("batch_size", 10) - - @property - def polling_stagger_delay(self) -> int: - return self.config_data.get("polling", {}).get("stagger_delay", 2) - - # Alert Thresholds - @property - def gpu_temp_threshold(self) -> float: - return self.config_data.get("alerts", {}).get("gpu_temp_threshold", 85.0) - - @property - def gpu_util_threshold(self) -> float: - return self.config_data.get("alerts", {}).get("gpu_util_threshold", 95.0) - - # CORS - @property - def cors_origins(self) -> List[str]: - import os - - # Allow all origins in Docker, or specific origins from environment variable - cors_env = os.getenv("CORS_ORIGINS", "*") - if cors_env == "*": - return ["*"] - else: - return cors_env.split(",") - # Default for development - # return ["http://localhost:3000", "http://localhost:5173"] - - # App settings - @property - def app_name(self) -> str: - return "CVS Cluster Monitor" - - @property - def debug(self) -> bool: - return False - - @property - def api_prefix(self) -> str: - return "/api" - - @property - def nodes(self) -> List[str]: - return self.load_nodes_from_file() - - # SSH sub-object for compatibility - @property - def ssh(self): - class SSHConfig: - def __init__(self, parent): - self.parent = parent - self.username = parent.ssh_username - self.password = parent.ssh_password - self.key_file = parent.ssh_key_file - self.timeout = parent.ssh_timeout - - # Jump host sub-object - class JumpHost: - def __init__(self, parent): - self.enabled = parent.jump_host_enabled - self.host = parent.jump_host - self.username = parent.jump_host_username - self.password = parent.jump_host_password - self.key_file = parent.jump_host_key_file - - self.jump_host = JumpHost(parent) - - return SSHConfig(self) - - # Polling sub-object - @property - def polling(self): - class PollingConfig: - def __init__(self, parent): - import os - - # Allow environment variable override - self.interval = int(os.getenv('POLLING__INTERVAL', parent.polling_interval)) - self.batch_size = parent.polling_batch_size - self.stagger_delay = parent.polling_stagger_delay - self.failure_threshold = int( - os.getenv( - 'POLLING__FAILURE_THRESHOLD', parent.config_data.get('polling', {}).get('failure_threshold', 5) - ) - ) - - return PollingConfig(self) - - -# Global config instance -config = SimpleConfig() diff --git a/cvs/monitors/cluster-mon/backend/app/main.py b/cvs/monitors/cluster-mon/backend/app/main.py index 0e86a07e..45313ab3 100644 --- a/cvs/monitors/cluster-mon/backend/app/main.py +++ b/cvs/monitors/cluster-mon/backend/app/main.py @@ -147,7 +147,7 @@ async def _restart(): new_task = _start_collector_task(c) app_state.collector_tasks[c.name] = new_task - asyncio.get_event_loop().call_soon(lambda: asyncio.create_task(_restart())) + asyncio.get_running_loop().call_soon(lambda: asyncio.create_task(_restart())) task = asyncio.create_task( c.run(app_state.ssh_manager, app_state), @@ -363,77 +363,6 @@ def update_node_status(node: str, is_error: bool, error_type: str = 'unreachable return app_state.node_health_status[node] -async def collect_metrics_loop(): - """Background task to collect metrics periodically.""" - logger.info("Starting metrics collection loop") - - while app_state.is_collecting: - try: - logger.info("Collecting metrics...") - - # Collect GPU and NIC metrics with connection error handling - try: - gpu_metrics = await app_state.gpu_collector.collect_all_metrics(app_state.ssh_manager) - nic_metrics = await app_state.nic_collector.collect_all_metrics(app_state.ssh_manager) - except ConnectionError as e: - # Connection error during metrics collection - trigger immediate re-probe - logger.error(f"ConnectionError during metrics collection: {e}") - logger.info("Triggering immediate host re-probe...") - - # Trigger immediate re-probe - if app_state.ssh_manager: - changed = await asyncio.to_thread(app_state.ssh_manager.refresh_host_reachability) - if changed: - await asyncio.to_thread(app_state.ssh_manager.recreate_client) - logger.info("SSH client recreated with updated reachable hosts") - - # Continue to next iteration (skip this round) - logger.info("Skipping this metrics collection round, will retry next interval") - await asyncio.sleep(settings.polling.interval) - continue - - # Package metrics - metrics_payload = { - "timestamp": gpu_metrics.get("timestamp") if isinstance(gpu_metrics, dict) else None, - "gpu": gpu_metrics if not isinstance(gpu_metrics, Exception) else {"error": str(gpu_metrics)}, - "nic": nic_metrics if not isinstance(nic_metrics, Exception) else {"error": str(nic_metrics)}, - } - - # Update node status based on metrics collection success/failure - # Check each node and update failure counters - if isinstance(gpu_metrics, dict): - util_data = gpu_metrics.get("utilization", {}) - for node in app_state.ssh_manager.host_list: - has_error = False - - if node in util_data: - node_data = util_data[node] - if isinstance(node_data, dict) and 'error' in node_data: - has_error = True - - # Update status with stability check (5 consecutive failures required) - update_node_status(node, has_error, 'unreachable') - - # Store in app state - app_state.latest_metrics = metrics_payload - - # Broadcast to WebSocket clients - await broadcast_metrics(metrics_payload) - - logger.info(f"Metrics collected successfully. {len(app_state.websocket_clients)} clients notified") - - except asyncio.CancelledError: - logger.info("Metrics collection task cancelled") - raise - except Exception as e: - logger.error(f"Error in metrics collection loop: {e}", exc_info=True) - - # Wait for next interval - await asyncio.sleep(settings.polling.interval) - - logger.info("Metrics collection loop stopped") - - async def broadcast_metrics(metrics: dict): """Broadcast metrics to all connected WebSocket clients (non-blocking per client).""" if not app_state.websocket_clients: @@ -600,19 +529,6 @@ async def lifespan(app: FastAPI): ) logger.info("✅ Direct SSH manager initialized") - # Start metrics collection using unified collector registry - if app_state.ssh_manager: - logger.info("Starting metrics collection (BaseCollector pattern)...") - app_state.is_collecting = True - - for cls in REGISTERED_COLLECTORS: - c = cls() - app_state.collectors[c.name] = c - app_state.collector_tasks[c.name] = _start_collector_task(c) - - app_state.probe_task = asyncio.create_task(periodic_host_probe()) - logger.info("✅ Metrics collection started") - except Exception as e: logger.error(f"Failed to auto-initialize SSH manager: {e}", exc_info=True) logger.warning("Will wait for manual configuration via web UI") @@ -634,6 +550,19 @@ async def lifespan(app: FastAPI): from app.collectors.rccl_data_store import RCCLDataStore app_state.rccl_data_store = RCCLDataStore(app_state.redis) + # Start metrics collection using unified collector registry + if app_state.ssh_manager: + logger.info("Starting metrics collection (BaseCollector pattern)...") + app_state.is_collecting = True + + for cls in REGISTERED_COLLECTORS: + c = cls() + app_state.collectors[c.name] = c + app_state.collector_tasks[c.name] = _start_collector_task(c) + + app_state.probe_task = asyncio.create_task(periodic_host_probe()) + logger.info("✅ Metrics collection started") + yield # Shutdown From 010b11b3282b8d597ba058c471982a51394afd26 Mon Sep 17 00:00:00 2001 From: nileshnegi Date: Sat, 21 Mar 2026 02:27:53 -0500 Subject: [PATCH 10/24] =?UTF-8?q?fix(cluster-mon):=20Fix=20blockers=20?= =?UTF-8?q?=E2=80=94=20RLock=20deadlock,=20GPU=20sync=20exec,=20WebSocket?= =?UTF-8?q?=20queues?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - jump_host_pssh.py: Replace RLock with separate _exec_lock (Lock) and _hosts_lock (Lock). _execute_on_node() uses _hosts_lock for unreachable/ reachable list mutations. exec() uses _exec_lock. No deadlock. - gpu_collector.py: All on-demand methods now use exec_async() instead of sync exec() — prevents event loop blocking from API handlers - main.py: ConnectionManager with per-client bounded asyncio.Queue and dedicated send tasks. broadcast_metrics() and broadcast_rccl() are non-blocking (put_nowait). Slow clients are auto-disconnected. - rccl_collector.py: Calls broadcast_rccl() after storing snapshot --- .../backend/app/collectors/gpu_collector.py | 32 ++--- .../backend/app/collectors/rccl_collector.py | 7 + .../backend/app/core/jump_host_pssh.py | 12 +- cvs/monitors/cluster-mon/backend/app/main.py | 130 +++++++++++------- 4 files changed, 108 insertions(+), 73 deletions(-) diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/gpu_collector.py b/cvs/monitors/cluster-mon/backend/app/collectors/gpu_collector.py index 28a5923c..71a33e64 100644 --- a/cvs/monitors/cluster-mon/backend/app/collectors/gpu_collector.py +++ b/cvs/monitors/cluster-mon/backend/app/collectors/gpu_collector.py @@ -89,7 +89,7 @@ async def collect_gpu_utilization(self, ssh_manager) -> Dict[str, Any]: """ logger.info("Collecting GPU utilization") # Use amd-smi metric which provides comprehensive GPU metrics - output = ssh_manager.exec("amd-smi metric --json", timeout=120) + output = await ssh_manager.exec_async("amd-smi metric --json", timeout=120) return self.parse_json_output(output) async def collect_gpu_memory(self, ssh_manager) -> Dict[str, Any]: @@ -108,7 +108,7 @@ async def collect_gpu_memory(self, ssh_manager) -> Dict[str, Any]: } """ logger.info("Collecting GPU memory usage") - output = ssh_manager.exec("amd-smi metric --json", timeout=120) + output = await ssh_manager.exec_async("amd-smi metric --json", timeout=120) return self.parse_json_output(output) async def collect_gpu_temperature(self, ssh_manager) -> Dict[str, Any]: @@ -128,7 +128,7 @@ async def collect_gpu_temperature(self, ssh_manager) -> Dict[str, Any]: """ logger.info("Collecting GPU temperature") # amd-smi metric provides temperature in the main metric output - output = ssh_manager.exec("amd-smi metric --json", timeout=120) + output = await ssh_manager.exec_async("amd-smi metric --json", timeout=120) return self.parse_json_output(output) async def collect_gpu_power(self, ssh_manager) -> Dict[str, Any]: @@ -147,7 +147,7 @@ async def collect_gpu_power(self, ssh_manager) -> Dict[str, Any]: } """ logger.info("Collecting GPU power metrics") - output = ssh_manager.exec("amd-smi metric --power --json", timeout=120) + output = await ssh_manager.exec_async("amd-smi metric --power --json", timeout=120) return self.parse_json_output(output) async def collect_gpu_metrics(self, ssh_manager) -> Dict[str, Any]: @@ -166,7 +166,7 @@ async def collect_gpu_metrics(self, ssh_manager) -> Dict[str, Any]: } """ logger.info("Collecting comprehensive GPU metrics") - output = ssh_manager.exec("amd-smi metric --json", timeout=120) + output = await ssh_manager.exec_async("amd-smi metric --json", timeout=120) return self.parse_json_output(output) async def collect_pcie_metrics(self, ssh_manager) -> Dict[str, Any]: @@ -185,7 +185,7 @@ async def collect_pcie_metrics(self, ssh_manager) -> Dict[str, Any]: } """ logger.info("Collecting PCIe metrics") - output = ssh_manager.exec("amd-smi metric --pcie --json", timeout=120) + output = await ssh_manager.exec_async("amd-smi metric --pcie --json", timeout=120) return self.parse_json_output(output) async def collect_xgmi_metrics(self, ssh_manager) -> Dict[str, Any]: @@ -204,7 +204,7 @@ async def collect_xgmi_metrics(self, ssh_manager) -> Dict[str, Any]: } """ logger.info("Collecting XGMI metrics") - output = ssh_manager.exec("amd-smi metric --xgmi-err --json", timeout=120) + output = await ssh_manager.exec_async("amd-smi metric --xgmi-err --json", timeout=120) logger.info('%%%%%%%%%%%') logger.info('parsed value of xgmi') logger.info(output) @@ -227,7 +227,7 @@ async def collect_ras_errors(self, ssh_manager) -> Dict[str, Any]: } """ logger.info("Collecting RAS error metrics") - output = ssh_manager.exec("amd-smi metric --ecc --json", timeout=120) + output = await ssh_manager.exec_async("amd-smi metric --ecc --json", timeout=120) logger.info('%%%%%%%%%%') logger.info('Output of ecc') logger.info(output) @@ -247,7 +247,7 @@ async def collect_gpu_info(self, ssh_manager) -> Dict[str, Any]: } """ logger.info("Collecting GPU info") - output = ssh_manager.exec("rocm-smi --loglevel error --showproductname --json", timeout=120) + output = await ssh_manager.exec_async("rocm-smi --loglevel error --showproductname --json", timeout=120) return self.parse_json_output(output) async def collect_pcie_info(self, ssh_manager) -> Dict[str, Any]: @@ -267,13 +267,13 @@ async def collect_pcie_info(self, ssh_manager) -> Dict[str, Any]: logger.info("Collecting PCIe link info via lspci") # First get BDF (Bus/Device/Function) addresses from amd-smi - static_output = ssh_manager.exec("amd-smi static --json", timeout=120) + static_output = await ssh_manager.exec_async("amd-smi static --json", timeout=120) static_data = self.parse_json_output(static_output) # OPTIMIZATION: Run lspci once per node instead of once per GPU # This reduces 288 commands (36 nodes * 8 GPUs) to just 36 commands! logger.info("Running lspci once per node (optimized)") - lspci_output = ssh_manager.exec("bash -c 'sudo lspci -vvv 2>/dev/null'", timeout=120) + lspci_output = await ssh_manager.exec_async("bash -c 'sudo lspci -vvv 2>/dev/null'", timeout=120) pcie_info = {} import re @@ -337,14 +337,12 @@ async def collect_all_metrics(self, ssh_manager) -> Dict[str, Any]: "info": {...} } """ - import asyncio - logger.info("Collecting all GPU metrics") # OPTIMIZATION: Call amd-smi metric --json ONCE to get ALL data # This single command includes: utilization, memory, temperature, PCIe, XGMI, and ECC metrics logger.info("Calling amd-smi metric --json for comprehensive GPU data") - amd_smi_output = await asyncio.to_thread(ssh_manager.exec, "amd-smi metric --json") + amd_smi_output = await ssh_manager.exec_async("amd-smi metric --json") amd_smi_data = self.parse_json_output(amd_smi_output) # Parse all metrics from single amd-smi output @@ -354,15 +352,15 @@ async def collect_all_metrics(self, ssh_manager) -> Dict[str, Any]: # Call dedicated commands for PCIe and ECC for cleaner data logger.info("Collecting PCIe metrics with dedicated command") - pcie_output = await asyncio.to_thread(ssh_manager.exec, "amd-smi metric --pcie --json") + pcie_output = await ssh_manager.exec_async("amd-smi metric --pcie --json") pcie_data = self.parse_json_output(pcie_output) logger.info("Collecting XGMI metrics with dedicated command") - xgmi_output = await asyncio.to_thread(ssh_manager.exec, "amd-smi metric --xgmi-err --json") + xgmi_output = await ssh_manager.exec_async("amd-smi metric --xgmi-err --json") xgmi_data = self.parse_json_output(xgmi_output) logger.info("Collecting ECC/RAS metrics with dedicated command") - ecc_output = await asyncio.to_thread(ssh_manager.exec, "amd-smi metric --ecc --json") + ecc_output = await ssh_manager.exec_async("amd-smi metric --ecc --json") ecc_data = self.parse_json_output(ecc_output) # Parse for frontend display diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/rccl_collector.py b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_collector.py index f3b52aed..89bd5004 100644 --- a/cvs/monitors/cluster-mon/backend/app/collectors/rccl_collector.py +++ b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_collector.py @@ -125,6 +125,13 @@ async def collect(self, ssh_manager) -> CollectorResult: if hasattr(app_state, 'latest_rccl_snapshot'): app_state.latest_rccl_snapshot = snapshot_dict + # Broadcast RCCL snapshot to WebSocket clients + try: + from app.main import broadcast_rccl + await broadcast_rccl(snapshot_dict) + except Exception: + pass + collector_state = ( CollectorState.OK if self.job_state in (RCCLJobState.HEALTHY, RCCLJobState.DEGRADED) diff --git a/cvs/monitors/cluster-mon/backend/app/core/jump_host_pssh.py b/cvs/monitors/cluster-mon/backend/app/core/jump_host_pssh.py index 14a15721..5fefe174 100644 --- a/cvs/monitors/cluster-mon/backend/app/core/jump_host_pssh.py +++ b/cvs/monitors/cluster-mon/backend/app/core/jump_host_pssh.py @@ -87,7 +87,8 @@ def __init__( self._create_parallel_client() - self._exec_lock = threading.RLock() # reentrant: exec() holds lock; _execute_on_node() acquires again + self._exec_lock = threading.Lock() # serializes concurrent exec() calls + self._hosts_lock = threading.Lock() # protects unreachable_hosts/reachable_hosts mutations def _is_jump_host_alive(self): """Check if jump host connection is still active.""" @@ -198,7 +199,7 @@ def _execute_on_node(self, node: str, cmd: str, timeout: Optional[int] = None) - x in error.lower() for x in ['connection timed out', 'connection refused', 'no route to host', 'host is down'] ): - with self._exec_lock: + with self._hosts_lock: if node not in self.unreachable_hosts: logger.warning(f"[{node}] Marking as unreachable: {error[:200]}") self.unreachable_hosts.append(node) @@ -215,7 +216,7 @@ def _execute_on_node(self, node: str, cmd: str, timeout: Optional[int] = None) - # Check if it's a timeout exception error_str = str(e).lower() if 'timeout' in error_str or 'timed out' in error_str: - with self._exec_lock: + with self._hosts_lock: if node not in self.unreachable_hosts: logger.warning(f"[{node}] Marking as unreachable due to timeout: {e}") self.unreachable_hosts.append(node) @@ -350,8 +351,9 @@ def refresh_host_reachability(self): logger.info(f" Newly unreachable ({len(newly_unreachable)}): {list(newly_unreachable)[:10]}") # Update lists - self.reachable_hosts = new_reachable - self.unreachable_hosts = new_unreachable + with self._hosts_lock: + self.reachable_hosts = new_reachable + self.unreachable_hosts = new_unreachable return len(old_reachable) != len(new_reachable_set) or old_reachable != new_reachable_set diff --git a/cvs/monitors/cluster-mon/backend/app/main.py b/cvs/monitors/cluster-mon/backend/app/main.py index 45313ab3..f4036fb8 100644 --- a/cvs/monitors/cluster-mon/backend/app/main.py +++ b/cvs/monitors/cluster-mon/backend/app/main.py @@ -363,31 +363,80 @@ def update_node_status(node: str, is_error: bool, error_type: str = 'unreachable return app_state.node_health_status[node] -async def broadcast_metrics(metrics: dict): - """Broadcast metrics to all connected WebSocket clients (non-blocking per client).""" - if not app_state.websocket_clients: - return - - disconnected_clients = [] - message = {"type": "metrics", "data": metrics} +class ConnectionManager: + """ + WebSocket connection manager with per-client bounded queues. + Slow clients are disconnected instead of blocking the broadcast loop. + """ + def __init__(self, max_queue_size: int = 64): + self._clients: dict[int, WebSocket] = {} + self._queues: dict[int, asyncio.Queue] = {} + self._send_tasks: dict[int, asyncio.Task] = {} + + async def connect(self, websocket: WebSocket): + await websocket.accept() + client_id = id(websocket) + self._clients[client_id] = websocket + q: asyncio.Queue = asyncio.Queue(maxsize=64) + self._queues[client_id] = q + self._send_tasks[client_id] = asyncio.create_task( + self._sender(client_id, websocket, q) + ) - for client in list(app_state.websocket_clients): + async def _sender(self, client_id: int, ws: WebSocket, queue: asyncio.Queue): try: - # Use asyncio.wait_for to prevent one slow client from blocking others - await asyncio.wait_for( - client.send_json(message), - timeout=5.0, - ) - except asyncio.TimeoutError: - logger.warning("WebSocket client timed out on send — disconnecting") - disconnected_clients.append(client) - except Exception as e: - logger.warning(f"Failed to send metrics to client: {e}") - disconnected_clients.append(client) + while True: + message = await queue.get() + await ws.send_json(message) + except Exception: + pass + finally: + await self._remove(client_id) + + async def disconnect(self, websocket: WebSocket): + await self._remove(id(websocket)) + + async def _remove(self, client_id: int): + task = self._send_tasks.pop(client_id, None) + if task and not task.done(): + task.cancel() + self._queues.pop(client_id, None) + ws = self._clients.pop(client_id, None) + if ws: + try: + await ws.close() + except Exception: + pass + + def broadcast(self, message: dict): + """Non-blocking broadcast: enqueues to each client's queue.""" + to_remove = [] + for client_id, q in self._queues.items(): + try: + q.put_nowait(message) + except asyncio.QueueFull: + logger.warning(f"WebSocket client {client_id} queue full — disconnecting") + to_remove.append(client_id) + for client_id in to_remove: + asyncio.create_task(self._remove(client_id)) + + @property + def client_count(self) -> int: + return len(self._clients) - for client in disconnected_clients: - if client in app_state.websocket_clients: - app_state.websocket_clients.remove(client) + +metrics_ws_manager = ConnectionManager() +rccl_ws_manager = ConnectionManager() + + +async def broadcast_metrics(metrics: dict): + """Broadcast metrics to all connected WebSocket clients (non-blocking).""" + metrics_ws_manager.broadcast({"type": "metrics", "data": metrics}) + + +async def broadcast_rccl(snapshot: dict): + """Broadcast RCCL snapshot to /ws/rccl WebSocket clients (non-blocking).""" + rccl_ws_manager.broadcast({"type": "rccl_snapshot", "data": snapshot}) async def periodic_host_probe(): @@ -610,44 +659,23 @@ async def lifespan(app: FastAPI): # WebSocket endpoint @app.websocket("/ws/metrics") -async def websocket_metrics(websocket: WebSocket): - """WebSocket endpoint for real-time metrics streaming.""" - await websocket.accept() - app_state.websocket_clients.append(websocket) - logger.info(f"WebSocket client connected. Total clients: {len(app_state.websocket_clients)}") - +async def websocket_endpoint(websocket: WebSocket): + await metrics_ws_manager.connect(websocket) try: - # Send initial metrics - if app_state.latest_metrics: - await websocket.send_json({"type": "metrics", "data": app_state.latest_metrics}) - - # Keep connection alive while True: - # Wait for client messages (ping/pong) - data = await websocket.receive_text() - if data == "ping": - await websocket.send_text("pong") - + await websocket.receive_text() except WebSocketDisconnect: - logger.info("WebSocket client disconnected") - except Exception as e: - logger.error(f"WebSocket error: {e}") - finally: - if websocket in app_state.websocket_clients: - app_state.websocket_clients.remove(websocket) + await metrics_ws_manager.disconnect(websocket) @app.websocket("/ws/rccl") async def websocket_rccl(websocket: WebSocket): - """WebSocket endpoint for real-time RCCL event streaming.""" - await websocket.accept() - app_state.rccl_websocket_clients.append(websocket) + await rccl_ws_manager.connect(websocket) try: while True: - await websocket.receive_text() # Keep alive; server pushes via broadcast_rccl() + await websocket.receive_text() except WebSocketDisconnect: - if websocket in app_state.rccl_websocket_clients: - app_state.rccl_websocket_clients.remove(websocket) + await rccl_ws_manager.disconnect(websocket) # Include API router FIRST (highest priority) @@ -662,7 +690,7 @@ async def health(): "status": "healthy", "ssh_manager": app_state.ssh_manager is not None, "collecting": app_state.is_collecting, - "clients": len(app_state.websocket_clients), + "clients": metrics_ws_manager.client_count, } From 4d96c5b3ad43ddb071cbe7692ab1b10100891fea Mon Sep 17 00:00:00 2001 From: nileshnegi Date: Sat, 21 Mar 2026 02:31:56 -0500 Subject: [PATCH 11/24] fix(cluster-mon): Address remaining review findings - rccl_endpoints.py: Use RCCLMarker Pydantic model for /markers validation - api/config.py: Stop writing jump host password to cluster.yaml on disk - main.py: Replace backward-compat property usage with nested access; track intermediate _restart tasks; remove dead collect_metrics_loop() - jump_host_pssh.py: Verify jump_transport liveness in open_port_forward - rccl_data_store.py: Use config values for Redis maxlen instead of hardcoded - cvs_parallel_ssh_reliable.py: Replace print() with logger.debug() - tests: Convert asyncio.run() test to @pytest.mark.asyncio --- .../cluster-mon/backend/app/api/config.py | 5 ++-- .../backend/app/api/rccl_endpoints.py | 10 ++++---- .../backend/app/collectors/rccl_data_store.py | 10 +++++--- .../app/core/cvs_parallel_ssh_reliable.py | 6 ++--- .../backend/app/core/jump_host_pssh.py | 4 ++++ cvs/monitors/cluster-mon/backend/app/main.py | 24 ++++++++++++------- .../backend/tests/test_rccl_ras_client.py | 13 +++++----- 7 files changed, 44 insertions(+), 28 deletions(-) diff --git a/cvs/monitors/cluster-mon/backend/app/api/config.py b/cvs/monitors/cluster-mon/backend/app/api/config.py index 49e9261a..18874229 100644 --- a/cvs/monitors/cluster-mon/backend/app/api/config.py +++ b/cvs/monitors/cluster-mon/backend/app/api/config.py @@ -184,9 +184,8 @@ async def update_configuration(config: ClusterConfigUpdate) -> Dict[str, Any]: if config.jump_host.auth_method == "password" and config.jump_host.password: # Store in memory app_state.jump_host_password = config.jump_host.password - # Also save to YAML for development/testing (WARNING: Not secure for production) - cluster_config["cluster"]["ssh"]["jump_host"]["password"] = config.jump_host.password - logger.warning("⚠️ Jump host password saved to cluster.yaml - NOT RECOMMENDED FOR PRODUCTION") + # SECURITY: Password is stored in memory only (app_state), never persisted to disk + # cluster_config["cluster"]["ssh"]["jump_host"]["password"] is intentionally omitted else: app_state.jump_host_password = None # Remove password from YAML if using key-based auth diff --git a/cvs/monitors/cluster-mon/backend/app/api/rccl_endpoints.py b/cvs/monitors/cluster-mon/backend/app/api/rccl_endpoints.py index 32d97803..a820bb09 100644 --- a/cvs/monitors/cluster-mon/backend/app/api/rccl_endpoints.py +++ b/cvs/monitors/cluster-mon/backend/app/api/rccl_endpoints.py @@ -6,6 +6,7 @@ import logging from typing import Any, Optional from fastapi import APIRouter, HTTPException, Query +from app.models.rccl_models import RCCLMarker router = APIRouter() logger = logging.getLogger(__name__) @@ -75,7 +76,7 @@ async def get_rccl_events( @router.post("/markers", status_code=201) -async def post_rccl_marker(marker: dict) -> dict[str, str]: +async def post_rccl_marker(marker: RCCLMarker) -> dict[str, str]: """ PyTorch callback endpoint for training step/loss markers. Stores marker as an event in the RCCL event stream. @@ -83,11 +84,12 @@ async def post_rccl_marker(marker: dict) -> dict[str, str]: from app.main import app_state import time - marker.setdefault("event_type", "training_marker") - marker.setdefault("timestamp", time.time()) + event = marker.model_dump() + event.setdefault("event_type", "training_marker") + event.setdefault("timestamp", time.time()) data_store = getattr(app_state, 'rccl_data_store', None) if data_store: - await data_store.push_event(marker) + await data_store.push_event(event) return {"status": "accepted"} diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/rccl_data_store.py b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_data_store.py index 59b1314e..fd0eb87b 100644 --- a/cvs/monitors/cluster-mon/backend/app/collectors/rccl_data_store.py +++ b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_data_store.py @@ -19,13 +19,17 @@ class RCCLDataStore: EVENT_STREAM = "rccl:events" # Stream, capped at 10000 entries CURRENT_KEY = "rccl:current" # Hash, latest snapshot only - def __init__(self, redis_client): + def __init__(self, redis_client, snapshot_max: int = 1000, event_max: int = 10000): """ Args: redis_client: redis.asyncio.Redis instance from app_state.redis, or None. All methods degrade silently when redis_client is None. + snapshot_max: Maximum number of entries in the snapshot stream. + event_max: Maximum number of entries in the event stream. """ self._r = redis_client + self._snapshot_max = snapshot_max + self._event_max = event_max async def push_snapshot(self, snapshot: dict) -> None: """Atomically append snapshot to ring buffer and update current.""" @@ -36,7 +40,7 @@ async def push_snapshot(self, snapshot: dict) -> None: await self._r.xadd( self.SNAPSHOT_STREAM, {"data": payload}, - maxlen=1000, + maxlen=self._snapshot_max, ) await self._r.hset( self.CURRENT_KEY, @@ -54,7 +58,7 @@ async def push_event(self, event: dict) -> None: await self._r.xadd( self.EVENT_STREAM, {"data": json.dumps(event)}, - maxlen=10000, + maxlen=self._event_max, approximate=True, ) except Exception as e: diff --git a/cvs/monitors/cluster-mon/backend/app/core/cvs_parallel_ssh_reliable.py b/cvs/monitors/cluster-mon/backend/app/core/cvs_parallel_ssh_reliable.py index bbd44154..4af16388 100644 --- a/cvs/monitors/cluster-mon/backend/app/core/cvs_parallel_ssh_reliable.py +++ b/cvs/monitors/cluster-mon/backend/app/core/cvs_parallel_ssh_reliable.py @@ -83,9 +83,9 @@ def __init__( # Add authentication if self.password is None: - print(self.reachable_hosts) - print(self.user) - print(self.pkey) + logger.debug(f"Reachable hosts: {self.reachable_hosts}") + logger.debug(f"SSH user: {self.user}") + logger.debug(f"SSH key: {self.pkey}") client_params['pkey'] = self.pkey else: client_params['password'] = self.password diff --git a/cvs/monitors/cluster-mon/backend/app/core/jump_host_pssh.py b/cvs/monitors/cluster-mon/backend/app/core/jump_host_pssh.py index 5fefe174..4892f326 100644 --- a/cvs/monitors/cluster-mon/backend/app/core/jump_host_pssh.py +++ b/cvs/monitors/cluster-mon/backend/app/core/jump_host_pssh.py @@ -410,6 +410,10 @@ async def open_port_forward( Yields: (reader, writer) connected to node:remote_port via the jump host """ + # Ensure jump host connection is alive before opening port forward + if not await asyncio.to_thread(self._is_jump_host_alive): + await asyncio.to_thread(self._ensure_jump_host_connection) + asyncio_end, thread_end = socket.socketpair(socket.AF_UNIX, socket.SOCK_STREAM) try: channel = await asyncio.to_thread( diff --git a/cvs/monitors/cluster-mon/backend/app/main.py b/cvs/monitors/cluster-mon/backend/app/main.py index f4036fb8..f4128dcb 100644 --- a/cvs/monitors/cluster-mon/backend/app/main.py +++ b/cvs/monitors/cluster-mon/backend/app/main.py @@ -147,7 +147,11 @@ async def _restart(): new_task = _start_collector_task(c) app_state.collector_tasks[c.name] = new_task - asyncio.get_running_loop().call_soon(lambda: asyncio.create_task(_restart())) + def _schedule_restart(): + restart_task = asyncio.create_task(_restart(), name=f"restart-{c.name}") + app_state.collector_tasks[f"_restart_{c.name}"] = restart_task + + asyncio.get_running_loop().call_soon(_schedule_restart) task = asyncio.create_task( c.run(app_state.ssh_manager, app_state), @@ -267,7 +271,7 @@ async def reload_configuration(): logger.info(f"Reinitializing with jump host: {new_config.ssh.jump_host.host}") logger.info(f"Jump Host Username: {new_config.ssh.jump_host.username}") logger.info(f"Cluster Nodes: {len(nodes)} nodes") - logger.info(f"Cluster Username: {new_config.node_username_via_jumphost}") + logger.info(f"Cluster Username: {new_config.ssh.jump_host.node_username}") # Use JumpHostPssh - working approach from test_auth_script.py app_state.ssh_manager = JumpHostPssh( @@ -276,8 +280,8 @@ async def reload_configuration(): jump_password=new_config.ssh.jump_host.password, jump_pkey=new_config.ssh.jump_host.key_file if not new_config.ssh.jump_host.password else None, target_hosts=nodes, - target_user=new_config.node_username_via_jumphost, - target_pkey=new_config.node_key_file_on_jumphost, + target_user=new_config.ssh.jump_host.node_username, + target_pkey=new_config.ssh.jump_host.node_key_file, max_parallel=min(len(nodes), 5), # Limit to 5 to avoid exhausting paramiko channels (conservative) timeout=new_config.ssh.timeout, ) @@ -548,7 +552,7 @@ async def lifespan(app: FastAPI): logger.info(f"Initializing with jump host: {settings.ssh.jump_host.host}") logger.info(f"Jump Host Username: {settings.ssh.jump_host.username}") logger.info(f"Cluster Nodes: {len(nodes)} nodes") - logger.info(f"Cluster Username: {settings.node_username_via_jumphost}") + logger.info(f"Cluster Username: {settings.ssh.jump_host.node_username}") app_state.ssh_manager = JumpHostPssh( jump_host=settings.ssh.jump_host.host, @@ -556,8 +560,8 @@ async def lifespan(app: FastAPI): jump_password=settings.ssh.jump_host.password, jump_pkey=settings.ssh.jump_host.key_file if not settings.ssh.jump_host.password else None, target_hosts=nodes, - target_user=settings.node_username_via_jumphost, - target_pkey=settings.node_key_file_on_jumphost, + target_user=settings.ssh.jump_host.node_username, + target_pkey=settings.ssh.jump_host.node_key_file, max_parallel=min(len(nodes), 5), timeout=settings.ssh.timeout, ) @@ -597,7 +601,11 @@ async def lifespan(app: FastAPI): # Initialize RCCL data store (uses app_state.redis, degrades if None) from app.collectors.rccl_data_store import RCCLDataStore - app_state.rccl_data_store = RCCLDataStore(app_state.redis) + app_state.rccl_data_store = RCCLDataStore( + app_state.redis, + snapshot_max=settings.storage.redis.snapshot_max_entries, + event_max=settings.storage.redis.event_max_entries, + ) # Start metrics collection using unified collector registry if app_state.ssh_manager: diff --git a/cvs/monitors/cluster-mon/backend/tests/test_rccl_ras_client.py b/cvs/monitors/cluster-mon/backend/tests/test_rccl_ras_client.py index 4e9ed4f3..bc272954 100644 --- a/cvs/monitors/cluster-mon/backend/tests/test_rccl_ras_client.py +++ b/cvs/monitors/cluster-mon/backend/tests/test_rccl_ras_client.py @@ -101,16 +101,15 @@ def test_rccl_models_import(): assert snapshot.communicators == [] -def test_rccl_data_store_degrades_without_redis(): +@pytest.mark.asyncio +async def test_rccl_data_store_degrades_without_redis(): from app.collectors.rccl_data_store import RCCLDataStore store = RCCLDataStore(redis_client=None) - # All methods should be awaitable and return gracefully with no Redis - import asyncio - asyncio.run(store.push_snapshot({"timestamp": 1.0})) - asyncio.run(store.push_event({"timestamp": 1.0})) - result = asyncio.run(store.get_recent_snapshots()) + await store.push_snapshot({"timestamp": 1.0}) + await store.push_event({"timestamp": 1.0}) + result = await store.get_recent_snapshots() assert result == [] - result = asyncio.run(store.get_current_snapshot()) + result = await store.get_current_snapshot() assert result is None From 726dd54fa2852f019f1ef5985aa63597faf93f15 Mon Sep 17 00:00:00 2001 From: nileshnegi Date: Sat, 21 Mar 2026 02:43:57 -0500 Subject: [PATCH 12/24] feat(cluster-mon/frontend): Add RCCL Health, Topology, and Timeline pages - src/pages/RCCLHealthPage.tsx: Job state banner, communicator grid with health badges, per-rank table, dead peers display - src/pages/RCCLTopologyPage.tsx: Peer mesh grid with live/dead status, node/GPU summary cards - src/pages/RCCLTimelinePage.tsx: Event timeline with time range selector, type filtering, training marker display - src/services/api.ts: RCCL API methods (status, communicators, events) - src/App.tsx: Routes for rccl-health, rccl-topology, rccl-timeline - src/components/Layout/Sidebar.tsx: Nav entries for the 3 RCCL pages --- .../cluster-mon/backend/app/core/config.py | 1 + cvs/monitors/cluster-mon/backend/app/main.py | 247 +++++++++++------- .../cluster-mon/config/cluster.yaml.example | 14 + cvs/monitors/cluster-mon/docker-compose.yml | 5 +- cvs/monitors/cluster-mon/frontend/src/App.tsx | 6 + .../src/components/Layout/Sidebar.tsx | 5 +- .../frontend/src/pages/RCCLHealthPage.tsx | 213 +++++++++++++++ .../frontend/src/pages/RCCLTimelinePage.tsx | 182 +++++++++++++ .../frontend/src/pages/RCCLTopologyPage.tsx | 161 ++++++++++++ .../cluster-mon/frontend/src/services/api.ts | 25 ++ 10 files changed, 760 insertions(+), 99 deletions(-) create mode 100644 cvs/monitors/cluster-mon/frontend/src/pages/RCCLHealthPage.tsx create mode 100644 cvs/monitors/cluster-mon/frontend/src/pages/RCCLTimelinePage.tsx create mode 100644 cvs/monitors/cluster-mon/frontend/src/pages/RCCLTopologyPage.tsx diff --git a/cvs/monitors/cluster-mon/backend/app/core/config.py b/cvs/monitors/cluster-mon/backend/app/core/config.py index c53595f2..58203885 100644 --- a/cvs/monitors/cluster-mon/backend/app/core/config.py +++ b/cvs/monitors/cluster-mon/backend/app/core/config.py @@ -44,6 +44,7 @@ class AlertsConfig(BaseModel): class RedisConfig(BaseModel): url: str = "redis://localhost:6379" db: int = 0 + password: Optional[str] = None snapshot_max_entries: int = 1000 event_max_entries: int = 10000 diff --git a/cvs/monitors/cluster-mon/backend/app/main.py b/cvs/monitors/cluster-mon/backend/app/main.py index f4128dcb..15083fba 100644 --- a/cvs/monitors/cluster-mon/backend/app/main.py +++ b/cvs/monitors/cluster-mon/backend/app/main.py @@ -164,60 +164,51 @@ def _schedule_restart(): async def reload_configuration(): """ Reload configuration without restarting the entire process. - Stops metrics collection, closes SSH connections, reloads config, reinitializes, and restarts. + Uses topology-diff to restart only collectors whose config actually changed. Returns: dict: Status of reload operation with success/error details """ try: - logger.info("Starting configuration reload...") + logger.info("Starting configuration reload (topology-diff)...") - # 1. Stop metrics collection and periodic probe - if app_state.is_collecting: - logger.info("Stopping metrics collection and periodic probe...") - app_state.is_collecting = False - for task in app_state.collector_tasks.values(): - task.cancel() - if app_state.collector_tasks: - await asyncio.gather(*app_state.collector_tasks.values(), return_exceptions=True) - app_state.collector_tasks.clear() - app_state.collectors.clear() - if app_state.collection_task: - app_state.collection_task.cancel() - try: - await app_state.collection_task - except asyncio.CancelledError: - pass - if app_state.probe_task: - app_state.probe_task.cancel() - try: - await app_state.probe_task - except asyncio.CancelledError: - pass - - # 2. Close existing SSH connections - if app_state.ssh_manager: - logger.info("Closing existing SSH connections...") - app_state.ssh_manager.destroy_clients() - app_state.ssh_manager = None - - # 3. Clear cached data - app_state.latest_metrics = {} - app_state.node_failure_count = {} - app_state.node_health_status = {} - app_state.cached_gpu_software = {} - app_state.cached_nic_software = {} - app_state.cached_nic_advanced = {} - app_state.gpu_software_cache_time = 0 - app_state.nic_software_cache_time = 0 - app_state.nic_advanced_cache_time = 0 - - # 4. Reload configuration from files - logger.info("Reloading configuration from cluster.yaml and nodes.txt...") + # 1. Snapshot old settings and load new settings from app.core.config import Settings + import app.core.config as config_module + old_settings = config_module.settings new_config = Settings() # re-reads YAML and env vars + # 2. Determine which config sections changed + ssh_changed = ( + old_settings.ssh.model_dump() != new_config.ssh.model_dump() + ) + rccl_changed = ( + old_settings.rccl.model_dump() != new_config.rccl.model_dump() + ) + polling_changed = ( + old_settings.polling.model_dump() != new_config.polling.model_dump() + ) + + logger.info( + f"Config diff: ssh_changed={ssh_changed}, rccl_changed={rccl_changed}, " + f"polling_changed={polling_changed}" + ) + + # 3. Update the global settings reference + config_module.settings = new_config + + # 4. Determine which collectors need restart + collectors_to_restart: set[str] = set() + if polling_changed: + # Interval changed — restart all polling collectors + collectors_to_restart = {cls.name for cls in REGISTERED_COLLECTORS} + else: + if ssh_changed: + collectors_to_restart.update({"gpu", "nic"}) # SSH-dependent + if rccl_changed: + collectors_to_restart.add("rccl") + # 5. Load new nodes nodes = new_config.load_nodes_from_file() if not nodes: @@ -241,7 +232,7 @@ async def reload_configuration(): logger.info(f"Checking for SSH key (key-based auth): {key_file_expanded}") if not os.path.exists(key_file_expanded): - logger.warning(f"❌ SSH key file not found: {key_file_expanded}") + logger.warning(f"SSH key file not found: {key_file_expanded}") logger.warning("Please upload SSH keys via Configuration UI or run refresh-ssh-keys.sh") return { "success": False, @@ -250,7 +241,7 @@ async def reload_configuration(): "requires_key_upload": True, } else: - logger.info(f"✅ SSH key file found: {key_file_expanded}") + logger.info(f"SSH key file found: {key_file_expanded}") # List the key file to verify import subprocess @@ -260,62 +251,120 @@ async def reload_configuration(): except: pass else: - logger.info("✅ Using password authentication - no key file check needed") + logger.info("Using password authentication - no key file check needed") - # 7. Reinitialize SSH manager with new configuration - try: - if new_config.ssh.jump_host.enabled and new_config.ssh.jump_host.host: - num_nodes = len(nodes) - min(num_nodes, 5) + # 7. Cancel only affected collector tasks + for name in collectors_to_restart: + task = app_state.collector_tasks.get(name) + if task: + task.cancel() + try: + await task + except asyncio.CancelledError: + pass + # Also cancel any pending restart tasks + restart_key = f"_restart_{name}" + restart_task = app_state.collector_tasks.get(restart_key) + if restart_task: + restart_task.cancel() + try: + await restart_task + except asyncio.CancelledError: + pass - logger.info(f"Reinitializing with jump host: {new_config.ssh.jump_host.host}") - logger.info(f"Jump Host Username: {new_config.ssh.jump_host.username}") - logger.info(f"Cluster Nodes: {len(nodes)} nodes") - logger.info(f"Cluster Username: {new_config.ssh.jump_host.node_username}") + # If nothing changed, we can skip SSH and collector restart + if not collectors_to_restart and not ssh_changed: + logger.info("No config sections changed — nothing to restart") + return { + "success": True, + "message": "Configuration reloaded (no changes detected)", + "nodes_count": len(nodes), + "jump_host_enabled": new_config.ssh.jump_host.enabled, + } + + # 8. Recreate SSH manager only if SSH config changed + if ssh_changed: + # Stop probe task — it depends on the SSH manager + if app_state.probe_task: + app_state.probe_task.cancel() + try: + await app_state.probe_task + except asyncio.CancelledError: + pass - # Use JumpHostPssh - working approach from test_auth_script.py - app_state.ssh_manager = JumpHostPssh( - jump_host=new_config.ssh.jump_host.host, - jump_user=new_config.ssh.jump_host.username, - jump_password=new_config.ssh.jump_host.password, - jump_pkey=new_config.ssh.jump_host.key_file if not new_config.ssh.jump_host.password else None, - target_hosts=nodes, - target_user=new_config.ssh.jump_host.node_username, - target_pkey=new_config.ssh.jump_host.node_key_file, - max_parallel=min(len(nodes), 5), # Limit to 5 to avoid exhausting paramiko channels (conservative) - timeout=new_config.ssh.timeout, - ) - logger.info("JumpHostPssh initialized successfully") - else: - logger.info("Reinitializing with direct SSH (no jump host)") - logger.info(f"Username: {new_config.ssh.username}") - logger.info(f"Nodes: {len(nodes)} nodes") + if app_state.ssh_manager: + logger.info("Closing existing SSH connections (ssh config changed)...") + app_state.ssh_manager.destroy_clients() + app_state.ssh_manager = None + + # Clear cached data (node topology may have changed) + app_state.latest_metrics = {} + app_state.node_failure_count = {} + app_state.node_health_status = {} + app_state.cached_gpu_software = {} + app_state.cached_nic_software = {} + app_state.cached_nic_advanced = {} + app_state.gpu_software_cache_time = 0 + app_state.nic_software_cache_time = 0 + app_state.nic_advanced_cache_time = 0 - app_state.ssh_manager = Pssh( - log=logger, - host_list=nodes, - user=new_config.ssh.username, - password=app_state.ssh_password, # Use in-memory password - pkey=new_config.ssh.key_file, - timeout=new_config.ssh.timeout, - stop_on_errors=False, - ) - logger.info("Direct SSH manager reinitialized") - except Exception as e: - logger.error(f"Failed to reinitialize SSH manager: {e}") - return {"success": False, "error": f"Failed to initialize SSH manager: {str(e)}", "nodes_count": len(nodes)} + try: + if new_config.ssh.jump_host.enabled and new_config.ssh.jump_host.host: + num_nodes = len(nodes) + min(num_nodes, 5) + + logger.info(f"Reinitializing with jump host: {new_config.ssh.jump_host.host}") + logger.info(f"Jump Host Username: {new_config.ssh.jump_host.username}") + logger.info(f"Cluster Nodes: {len(nodes)} nodes") + logger.info(f"Cluster Username: {new_config.ssh.jump_host.node_username}") + + # Use JumpHostPssh - working approach from test_auth_script.py + app_state.ssh_manager = JumpHostPssh( + jump_host=new_config.ssh.jump_host.host, + jump_user=new_config.ssh.jump_host.username, + jump_password=new_config.ssh.jump_host.password, + jump_pkey=new_config.ssh.jump_host.key_file if not new_config.ssh.jump_host.password else None, + target_hosts=nodes, + target_user=new_config.ssh.jump_host.node_username, + target_pkey=new_config.ssh.jump_host.node_key_file, + max_parallel=min(len(nodes), 5), # Limit to 5 to avoid exhausting paramiko channels (conservative) + timeout=new_config.ssh.timeout, + ) + logger.info("JumpHostPssh initialized successfully") + else: + logger.info("Reinitializing with direct SSH (no jump host)") + logger.info(f"Username: {new_config.ssh.username}") + logger.info(f"Nodes: {len(nodes)} nodes") + + app_state.ssh_manager = Pssh( + log=logger, + host_list=nodes, + user=new_config.ssh.username, + password=app_state.ssh_password, # Use in-memory password + pkey=new_config.ssh.key_file, + timeout=new_config.ssh.timeout, + stop_on_errors=False, + ) + logger.info("Direct SSH manager reinitialized") + except Exception as e: + logger.error(f"Failed to reinitialize SSH manager: {e}") + return {"success": False, "error": f"Failed to initialize SSH manager: {str(e)}", "nodes_count": len(nodes)} + + # Restart probe task with new SSH manager + app_state.probe_requested = asyncio.Event() + app_state.probe_task = asyncio.create_task(periodic_host_probe()) - # 7. Restart metrics collection and periodic probe + # 9. Restart only the affected collectors if app_state.ssh_manager and nodes: - logger.info("Restarting metrics collection and periodic probe...") app_state.is_collecting = True - app_state.probe_requested = asyncio.Event() for cls in REGISTERED_COLLECTORS: - c = cls() - app_state.collectors[c.name] = c - app_state.collector_tasks[c.name] = _start_collector_task(c) - app_state.probe_task = asyncio.create_task(periodic_host_probe()) - logger.info("Metrics collection and periodic probe restarted") + if cls.name in collectors_to_restart: + c = cls() + app_state.collectors[c.name] = c + app_state.collector_tasks[c.name] = _start_collector_task(c) + logger.info(f"Restarted collector: {c.name}") + else: + logger.info(f"Collector unchanged, kept running: {cls.name}") logger.info("Configuration reload completed successfully!") return { @@ -323,6 +372,7 @@ async def reload_configuration(): "message": "Configuration reloaded successfully", "nodes_count": len(nodes), "jump_host_enabled": new_config.ssh.jump_host.enabled, + "collectors_restarted": list(collectors_to_restart), } except Exception as e: @@ -588,10 +638,15 @@ async def lifespan(app: FastAPI): # Initialize Redis (optional — app continues without it) try: + redis_kwargs = { + "db": settings.storage.redis.db, + "decode_responses": True, + } + if settings.storage.redis.password: + redis_kwargs["password"] = settings.storage.redis.password app_state.redis = aioredis.from_url( settings.storage.redis.url, - db=settings.storage.redis.db, - decode_responses=True, + **redis_kwargs, ) await app_state.redis.ping() logger.info(f"Redis connected: {settings.storage.redis.url}") diff --git a/cvs/monitors/cluster-mon/config/cluster.yaml.example b/cvs/monitors/cluster-mon/config/cluster.yaml.example index 342b9949..73cdbb2a 100644 --- a/cvs/monitors/cluster-mon/config/cluster.yaml.example +++ b/cvs/monitors/cluster-mon/config/cluster.yaml.example @@ -23,3 +23,17 @@ cluster: alerts: gpu_temp_threshold: 85.0 gpu_util_threshold: 95.0 + + storage: + redis: + url: redis://localhost:6379 + db: 0 + password: null # set to a string to enable Redis AUTH + snapshot_max_entries: 1000 + event_max_entries: 10000 + + rccl: + ras_port: 28028 + poll_interval: 30 + collective_timeout_secs: 10 + debug_log_path: null diff --git a/cvs/monitors/cluster-mon/docker-compose.yml b/cvs/monitors/cluster-mon/docker-compose.yml index 275f9960..05a2c26b 100644 --- a/cvs/monitors/cluster-mon/docker-compose.yml +++ b/cvs/monitors/cluster-mon/docker-compose.yml @@ -11,9 +11,9 @@ services: restart: unless-stopped volumes: - redis_data:/data - command: redis-server --appendonly yes --appendfsync everysec + command: redis-server --appendonly yes --appendfsync everysec --requirepass ${REDIS_PASSWORD:-cvs_cluster_mon} healthcheck: - test: ["CMD", "redis-cli", "ping"] + test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD:-cvs_cluster_mon}", "ping"] interval: 10s timeout: 5s retries: 3 @@ -52,6 +52,7 @@ services: - CLUSTER_MONITOR_HOME=/app # Redis connection (uses Docker service name as hostname) - STORAGE__REDIS__URL=redis://redis:6379 + - STORAGE__REDIS__PASSWORD=${REDIS_PASSWORD:-cvs_cluster_mon} restart: unless-stopped # Health check disabled - uncomment if needed # healthcheck: diff --git a/cvs/monitors/cluster-mon/frontend/src/App.tsx b/cvs/monitors/cluster-mon/frontend/src/App.tsx index 0b5c72be..e5818d9d 100644 --- a/cvs/monitors/cluster-mon/frontend/src/App.tsx +++ b/cvs/monitors/cluster-mon/frontend/src/App.tsx @@ -9,6 +9,9 @@ import { TopologyPage } from './pages/TopologyPage' import { GPUSoftwarePage } from './pages/GPUSoftwarePage' import { NICSoftwarePage } from './pages/NICSoftwarePage' import { LogsPage } from './pages/LogsPage' +import { RCCLHealthPage } from './pages/RCCLHealthPage' +import { RCCLTopologyPage } from './pages/RCCLTopologyPage' +import { RCCLTimelinePage } from './pages/RCCLTimelinePage' import { NodeDetailsModal } from './components/NodeDetailsModal' function App() { @@ -26,6 +29,9 @@ function App() { } /> } /> } /> + } /> + } /> + } /> diff --git a/cvs/monitors/cluster-mon/frontend/src/components/Layout/Sidebar.tsx b/cvs/monitors/cluster-mon/frontend/src/components/Layout/Sidebar.tsx index 1a3c1994..aae3453f 100644 --- a/cvs/monitors/cluster-mon/frontend/src/components/Layout/Sidebar.tsx +++ b/cvs/monitors/cluster-mon/frontend/src/components/Layout/Sidebar.tsx @@ -1,5 +1,5 @@ import { NavLink } from 'react-router-dom' -import { LayoutDashboard, Settings, Cpu, Network, Activity, Package, HardDrive, Share2, FileText } from 'lucide-react' +import { LayoutDashboard, Settings, Cpu, Network, Activity, Package, HardDrive, Share2, FileText, Clock } from 'lucide-react' import { cn } from '@/utils/cn' const navigation = [ @@ -11,6 +11,9 @@ const navigation = [ { name: 'GPU SW', href: '/gpu-software', icon: Package }, { name: 'NIC SW', href: '/nic-software', icon: HardDrive }, { name: 'Logs', href: '/logs', icon: FileText }, + { name: 'RCCL Health', href: '/rccl-health', icon: Activity }, + { name: 'RAS Topology', href: '/rccl-topology', icon: Share2 }, + { name: 'Timeline', href: '/rccl-timeline', icon: Clock }, ] export function Sidebar() { diff --git a/cvs/monitors/cluster-mon/frontend/src/pages/RCCLHealthPage.tsx b/cvs/monitors/cluster-mon/frontend/src/pages/RCCLHealthPage.tsx new file mode 100644 index 00000000..58e07aaf --- /dev/null +++ b/cvs/monitors/cluster-mon/frontend/src/pages/RCCLHealthPage.tsx @@ -0,0 +1,213 @@ +import { useEffect, useState, useCallback } from 'react' +import { RefreshCw, Activity, AlertTriangle, XCircle, CheckCircle, Radio } from 'lucide-react' +import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/Card' +import { api } from '@/services/api' + +interface RCCLStatus { + state: string + timestamp?: number + job_summary?: { + total_nodes: number + total_processes: number + total_gpus: number + rccl_version: string + } + communicators?: Array<{ + comm_hash: string + total_ranks: number + responding_ranks: number + missing_ranks: number + health: string + ranks?: Array<{ + comm_rank: number + node_addr: string + pid: number + cuda_dev: number + }> + }> + dead_peers?: string[] +} + +const STATE_CONFIG: Record = { + no_job: { label: 'No RCCL Job Running', color: 'text-gray-500', bg: 'bg-gray-100', icon: Radio }, + unreachable: { label: 'Unreachable', color: 'text-red-600', bg: 'bg-red-50', icon: XCircle }, + healthy: { label: 'Healthy', color: 'text-green-600', bg: 'bg-green-50', icon: CheckCircle }, + degraded: { label: 'Degraded', color: 'text-yellow-600', bg: 'bg-yellow-50', icon: AlertTriangle }, + error: { label: 'Error', color: 'text-red-600', bg: 'bg-red-50', icon: XCircle }, +} + +export function RCCLHealthPage() { + const [status, setStatus] = useState(null) + const [loading, setLoading] = useState(true) + const [error, setError] = useState(null) + + const fetchStatus = useCallback(async () => { + try { + setLoading(true) + const data = await api.getRCCLStatus() as RCCLStatus + setStatus(data) + setError(null) + } catch (err: any) { + setError(err.message || 'Failed to fetch RCCL status') + } finally { + setLoading(false) + } + }, []) + + useEffect(() => { + fetchStatus() + const interval = setInterval(fetchStatus, 10000) // refresh every 10s + return () => clearInterval(interval) + }, [fetchStatus]) + + const stateConfig = STATE_CONFIG[status?.state || 'no_job'] || STATE_CONFIG.no_job + const StateIcon = stateConfig.icon + + return ( +
+ {/* Header */} +
+
+

RCCL Health

+

Real-time RCCL communicator monitoring via ncclras

+
+ +
+ + {error && ( +
+ {error} +
+ )} + + {/* Job State Banner */} + + +
+ +
+

+ {stateConfig.label} +

+ {status?.job_summary && ( +

+ {status.job_summary.total_nodes} nodes, {status.job_summary.total_gpus} GPUs,{' '} + RCCL {status.job_summary.rccl_version} +

+ )} +
+
+
+
+ + {/* Dead Peers */} + {status?.dead_peers && status.dead_peers.length > 0 && ( + + + + + Dead Peers ({status.dead_peers.length}) + + + +
+ {status.dead_peers.map((peer) => ( + + {peer} + + ))} +
+
+
+ )} + + {/* Communicators */} + {status?.communicators && status.communicators.length > 0 && ( +
+

+ Communicators ({status.communicators.length}) +

+ {status.communicators.map((comm) => { + const healthColor = comm.health === 'healthy' ? 'green' : comm.health === 'degraded' ? 'yellow' : 'red' + return ( + + + + {comm.comm_hash} + + {comm.health} + + + + +
+
+

{comm.total_ranks}

+

Total Ranks

+
+
+

{comm.responding_ranks}

+

Responding

+
+
+

0 ? 'text-red-600' : 'text-gray-400'}`}> + {comm.missing_ranks} +

+

Missing

+
+
+ + {/* Rank grid */} + {comm.ranks && comm.ranks.length > 0 && ( +
+ + + + + + + + + + + {comm.ranks.map((rank) => ( + + + + + + + ))} + +
RankNodePIDGPU
{rank.comm_rank}{rank.node_addr}{rank.pid}{rank.cuda_dev}
+
+ )} +
+
+ ) + })} +
+ )} + + {/* No data message */} + {!loading && !error && (!status || status.state === 'no_job') && ( + + + +

No RCCL Job Detected

+

+ Start an RCCL job (e.g., rccl-tests) with the RAS subsystem enabled to see health data here. +

+
+
+ )} +
+ ) +} diff --git a/cvs/monitors/cluster-mon/frontend/src/pages/RCCLTimelinePage.tsx b/cvs/monitors/cluster-mon/frontend/src/pages/RCCLTimelinePage.tsx new file mode 100644 index 00000000..f35a9aec --- /dev/null +++ b/cvs/monitors/cluster-mon/frontend/src/pages/RCCLTimelinePage.tsx @@ -0,0 +1,182 @@ +import { useEffect, useState, useCallback } from 'react' +import { RefreshCw, Clock, Filter } from 'lucide-react' +import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/Card' +import { api } from '@/services/api' + +interface RCCLEvent { + timestamp: number + event_type: string + source_node?: string + details?: string + peer_addr?: string + type?: string + step?: number + loss?: number + rank?: number +} + +const EVENT_COLORS: Record = { + lifecycle: 'bg-blue-100 text-blue-800', + trace: 'bg-purple-100 text-purple-800', + training_marker: 'bg-green-100 text-green-800', + error: 'bg-red-100 text-red-800', +} + +export function RCCLTimelinePage() { + const [events, setEvents] = useState([]) + const [loading, setLoading] = useState(true) + const [timeRange, setTimeRange] = useState(3600) // 1 hour default + const [filterType, setFilterType] = useState('') + + const fetchEvents = useCallback(async () => { + try { + setLoading(true) + const now = Date.now() / 1000 + const data = await api.getRCCLEvents( + now - timeRange, + now, + filterType || undefined + ) as RCCLEvent[] + setEvents(data.sort((a, b) => b.timestamp - a.timestamp)) + } catch { + // silently handle + } finally { + setLoading(false) + } + }, [timeRange, filterType]) + + useEffect(() => { + fetchEvents() + const interval = setInterval(fetchEvents, 10000) + return () => clearInterval(interval) + }, [fetchEvents]) + + const formatTime = (ts: number) => { + return new Date(ts * 1000).toLocaleTimeString() + } + + return ( +
+
+
+

Event Timeline

+

RCCL events, training markers, and lifecycle changes

+
+
+ {/* Time range selector */} + + + {/* Type filter */} + + + +
+
+ + {/* Event count */} + + +
+ + + {events.length} events in the selected time range + +
+
+
+ + {/* Timeline */} + + + + + Events + + + + {events.length === 0 ? ( +
+ +

No events in the selected time range.

+

Events appear when RCCL jobs run and produce lifecycle or trace events.

+
+ ) : ( +
+ {events.map((event, idx) => { + const colorClass = EVENT_COLORS[event.event_type || event.type || ''] || 'bg-gray-100 text-gray-800' + return ( +
+ {/* Timestamp */} +
+ + {formatTime(event.timestamp)} + +
+ + {/* Timeline dot */} +
+
+
+ + {/* Content */} +
+
+ + {event.event_type || event.type || 'unknown'} + + {event.source_node && ( + {event.source_node} + )} + {event.rank !== undefined && ( + Rank {event.rank} + )} +
+ {event.details && ( +

{event.details}

+ )} + {event.step !== undefined && ( +

+ Step {event.step} + {event.loss !== undefined && ` | Loss: ${event.loss.toFixed(4)}`} +

+ )} + {event.peer_addr && ( +

Peer: {event.peer_addr}

+ )} +
+
+ ) + })} +
+ )} + + +
+ ) +} diff --git a/cvs/monitors/cluster-mon/frontend/src/pages/RCCLTopologyPage.tsx b/cvs/monitors/cluster-mon/frontend/src/pages/RCCLTopologyPage.tsx new file mode 100644 index 00000000..56eb1615 --- /dev/null +++ b/cvs/monitors/cluster-mon/frontend/src/pages/RCCLTopologyPage.tsx @@ -0,0 +1,161 @@ +import { useEffect, useState, useCallback } from 'react' +import { RefreshCw, Share2 } from 'lucide-react' +import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/Card' +import { api } from '@/services/api' + +interface Peer { + addr: string + pid: number + cuda_devs: number + nvml_devs: number + is_dead: boolean +} + +interface TopologyData { + state: string + peers?: Peer[] + dead_peers?: string[] + job_summary?: { + total_nodes: number + total_gpus: number + } +} + +export function RCCLTopologyPage() { + const [data, setData] = useState(null) + const [loading, setLoading] = useState(true) + + const fetchData = useCallback(async () => { + try { + setLoading(true) + const status = await api.getRCCLStatus() as TopologyData + setData(status) + } catch { + // silently handle + } finally { + setLoading(false) + } + }, []) + + useEffect(() => { + fetchData() + const interval = setInterval(fetchData, 15000) + return () => clearInterval(interval) + }, [fetchData]) + + const livePeers = data?.peers?.filter((p) => !p.is_dead) || [] + const deadPeers = data?.peers?.filter((p) => p.is_dead) || [] + + return ( +
+
+
+

RAS Topology

+

RCCL peer mesh connectivity view

+
+ +
+ + {/* Summary */} +
+ + +

{data?.job_summary?.total_nodes || 0}

+

Nodes

+
+
+ + +

{data?.job_summary?.total_gpus || 0}

+

GPUs

+
+
+ + +

{livePeers.length}

+

Live Peers

+
+
+ + +

0 ? 'text-red-600' : 'text-gray-400'}`}> + {deadPeers.length} +

+

Dead Peers

+
+
+
+ + {/* Peer Mesh Grid */} + + + + + Peer Mesh + + + + {(data?.peers?.length || 0) === 0 ? ( +
+ +

No peer data available. Start an RCCL job to see the mesh topology.

+
+ ) : ( +
+ {data?.peers?.map((peer) => ( +
+

+ {peer.addr} +

+

PID: {peer.pid}

+

GPUs: {peer.cuda_devs}

+ + {peer.is_dead ? 'DEAD' : 'ALIVE'} + +
+ ))} +
+ )} +
+
+ + {/* Dead peers detail */} + {data?.dead_peers && data.dead_peers.length > 0 && ( + + + Dead Peer Addresses + + +
+ {data.dead_peers.map((addr) => ( + + {addr} + + ))} +
+
+
+ )} +
+ ) +} diff --git a/cvs/monitors/cluster-mon/frontend/src/services/api.ts b/cvs/monitors/cluster-mon/frontend/src/services/api.ts index ad89c314..07fc399c 100644 --- a/cvs/monitors/cluster-mon/frontend/src/services/api.ts +++ b/cvs/monitors/cluster-mon/frontend/src/services/api.ts @@ -107,6 +107,31 @@ class ApiClient { async installPackage(packageId: string) { return this.post('/packages/install', { package: packageId }) } + + async getRCCLStatus() { + return this.request('/rccl/status') + } + + async getRCCLCommunicators() { + return this.request('/rccl/communicators') + } + + async getRCCLCommunicator(commHash: string) { + return this.request(`/rccl/communicators/${commHash}`) + } + + async getRCCLEvents(since?: number, until?: number, type?: string) { + const params = new URLSearchParams() + if (since) params.set('since', since.toString()) + if (until) params.set('until', until.toString()) + if (type) params.set('type', type) + const query = params.toString() + return this.request(`/rccl/events${query ? '?' + query : ''}`) + } + + async getCollectorsStatus() { + return this.request('/collectors/status') + } } export const api = new ApiClient(API_BASE_URL) From 28bcff2af642c8a644c6e5b23f31a71fe052c140 Mon Sep 17 00:00:00 2001 From: nileshnegi Date: Sat, 21 Mar 2026 02:49:23 -0500 Subject: [PATCH 13/24] =?UTF-8?q?refactor(cluster-mon):=20Rename=20ncclras?= =?UTF-8?q?=20=E2=86=92=20rcclras=20throughout=20codebase?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit RCCL's RAS tool binary is rcclras (not ncclras, which is NVIDIA's). Updated all comments, docstrings, class names, and file names: - rccl_ras_client.py: all docstrings - rccl_collector.py: all docstrings and TODOs - mock_ncclras_server.py → mock_rcclras_server.py, MockRcclRasServer - test_rccl_ras_client.py: imports and docstring - RCCLHealthPage.tsx: subtitle text --- .../backend/app/collectors/rccl_collector.py | 12 ++++++------ .../backend/app/collectors/rccl_ras_client.py | 14 +++++++------- ...ck_ncclras_server.py => mock_rcclras_server.py} | 6 +++--- .../backend/tests/test_rccl_ras_client.py | 6 +++--- .../frontend/src/pages/RCCLHealthPage.tsx | 2 +- 5 files changed, 20 insertions(+), 20 deletions(-) rename cvs/monitors/cluster-mon/backend/tests/{mock_ncclras_server.py => mock_rcclras_server.py} (93%) diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/rccl_collector.py b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_collector.py index 89bd5004..ee912928 100644 --- a/cvs/monitors/cluster-mon/backend/app/collectors/rccl_collector.py +++ b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_collector.py @@ -1,7 +1,7 @@ """ RCCL Collector -- CVS cluster-mon Phase 1. -Implements BaseCollector. Polls ncclras via SSH port-forward on each cycle. +Implements BaseCollector. Polls rcclras via SSH port-forward on each cycle. Lifecycle managed by the unified REGISTERED_COLLECTORS loop in main.py. Critical=False: RCCLJobState.NO_JOB is expected when no RCCL job is running @@ -21,7 +21,7 @@ class RCCLCollector(BaseCollector): """ - Polls ncclras (the RCCL RAS TCP service on port 28028) via SSH port-forward. + Polls rcclras (the RCCL RAS TCP service on port 28028) via SSH port-forward. - name = "rccl" - poll_interval: read from settings.rccl.poll_interval (default 30s) @@ -72,7 +72,7 @@ async def collect(self, ssh_manager) -> CollectorResult: One RCCL poll cycle: 1. Pick one healthy node as 'leader' (VERBOSE STATUS -> triggers RAS_COLL_COMMS). 2. Open SSH port-forward to leader:ras_port. - 3. Run ncclras protocol: handshake -> set_timeout -> get_status(verbose=True). + 3. Run rcclras protocol: handshake -> set_timeout -> get_status(verbose=True). 4. Parse response -> RCCLSnapshot -> store in Redis and app_state. 5. Return CollectorResult. @@ -187,12 +187,12 @@ def _parse_text_response(self, raw_text: str, leader: str) -> RCCLSnapshot: """ Phase 1 text parser stub. - The full parser must be written test-first against captured ncclras fixture + The full parser must be written test-first against captured rcclras fixture files (see plan Section 4a). This stub returns a minimal snapshot indicating the job is running so the HEALTHY/DEGRADED state machine works end-to-end. - TODO: Replace with regex-based parser against real ncclras VERBOSE STATUS output. - Run: ncclras -v > tests/fixtures/rccl_verbose_status_healthy.txt + TODO: Replace with regex-based parser against real rcclras VERBOSE STATUS output. + Run: rcclras -v > tests/fixtures/rccl_verbose_status_healthy.txt """ import time from app.models.rccl_models import RCCLSnapshot, RCCLJobState diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/rccl_ras_client.py b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_ras_client.py index 2bb0dc9f..6d1b02b9 100644 --- a/cvs/monitors/cluster-mon/backend/app/collectors/rccl_ras_client.py +++ b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_ras_client.py @@ -1,12 +1,12 @@ """ -Async ncclras TCP client for the CVS RCCL monitoring extension. +Async rcclras TCP client for the CVS RCCL monitoring extension. -Speaks the ncclras wire protocol (newline-terminated ASCII over TCP). +Speaks the rcclras wire protocol (newline-terminated ASCII over TCP). Connection is owned by the caller's context manager (ssh_manager.open_port_forward). Warning: Protocol version caveat: Values 3 and 4 for JSON_FORMAT and MONITOR_MODE -are ASSUMPTIONS -- not verified against actual ncclras server responses for -v2.28.9 and v2.29.2. Verify by running a v2.28.9 ncclras server and checking +are ASSUMPTIONS -- not verified against actual rcclras server responses for +v2.28.9 and v2.29.2. Verify by running a v2.28.9 rcclras server and checking its handshake response before implementing version-gated features. If the server always responds SERVER PROTOCOL 2, the version guards will never activate and an alternative feature-detection mechanism will be required. @@ -20,7 +20,7 @@ class ProtocolError(Exception): - """Raised when the ncclras server responds unexpectedly.""" + """Raised when the rcclras server responds unexpectedly.""" class ProtocolVersionError(ProtocolError): @@ -35,7 +35,7 @@ class ProtocolVersion: class RCCLRasClient: """ - Async ncclras TCP client. + Async rcclras TCP client. Takes pre-connected reader/writer (from ssh_manager.open_port_forward()). Connection lifetime is managed by the caller's context manager -- do not @@ -59,7 +59,7 @@ async def handshake(self) -> int: """ Send CLIENT PROTOCOL 2, read SERVER PROTOCOL N. Returns server protocol version. - Protocol mismatch is logged but not fatal (matches ncclras behavior). + Protocol mismatch is logged but not fatal (matches rcclras behavior). """ self._writer.write(b"CLIENT PROTOCOL 2\n") await self._writer.drain() diff --git a/cvs/monitors/cluster-mon/backend/tests/mock_ncclras_server.py b/cvs/monitors/cluster-mon/backend/tests/mock_rcclras_server.py similarity index 93% rename from cvs/monitors/cluster-mon/backend/tests/mock_ncclras_server.py rename to cvs/monitors/cluster-mon/backend/tests/mock_rcclras_server.py index f92da03e..0f38c520 100644 --- a/cvs/monitors/cluster-mon/backend/tests/mock_ncclras_server.py +++ b/cvs/monitors/cluster-mon/backend/tests/mock_rcclras_server.py @@ -1,5 +1,5 @@ """ -Mock ncclras TCP server for unit testing. +Mock rcclras TCP server for unit testing. Replays a fixture response over TCP so collector tests run without a real RCCL job. """ @@ -7,8 +7,8 @@ from typing import Optional -class MockNcclRasServer: - """Minimal ncclras server for unit testing. Replays a fixed fixture response.""" +class MockRcclRasServer: + """Minimal rcclras server for unit testing. Replays a fixed fixture response.""" def __init__(self, fixture_data: bytes, protocol_version: int = 2): self.fixture_data = fixture_data diff --git a/cvs/monitors/cluster-mon/backend/tests/test_rccl_ras_client.py b/cvs/monitors/cluster-mon/backend/tests/test_rccl_ras_client.py index bc272954..e2aa104e 100644 --- a/cvs/monitors/cluster-mon/backend/tests/test_rccl_ras_client.py +++ b/cvs/monitors/cluster-mon/backend/tests/test_rccl_ras_client.py @@ -1,5 +1,5 @@ """ -Tests for RCCLRasClient against MockNcclRasServer. +Tests for RCCLRasClient against MockRcclRasServer. """ import asyncio import pytest @@ -10,7 +10,7 @@ ProtocolVersionError, ProtocolVersion, ) -from tests.mock_ncclras_server import MockNcclRasServer +from tests.mock_rcclras_server import MockRcclRasServer SAMPLE_STATUS = b"""RCCL version 2.28.3 compiled with ROCm 6.0 @@ -29,7 +29,7 @@ @pytest.fixture async def mock_server(): - server = MockNcclRasServer(fixture_data=SAMPLE_STATUS, protocol_version=2) + server = MockRcclRasServer(fixture_data=SAMPLE_STATUS, protocol_version=2) port = await server.start() yield port await server.stop() diff --git a/cvs/monitors/cluster-mon/frontend/src/pages/RCCLHealthPage.tsx b/cvs/monitors/cluster-mon/frontend/src/pages/RCCLHealthPage.tsx index 58e07aaf..07500a58 100644 --- a/cvs/monitors/cluster-mon/frontend/src/pages/RCCLHealthPage.tsx +++ b/cvs/monitors/cluster-mon/frontend/src/pages/RCCLHealthPage.tsx @@ -69,7 +69,7 @@ export function RCCLHealthPage() {

RCCL Health

-

Real-time RCCL communicator monitoring via ncclras

+

Real-time RCCL communicator monitoring via rcclras

+ {event.from_state && event.to_state && ( +

+ {event.from_state} → {event.to_state} +

+ )} + {event.leader_node && ( +

Leader: {event.leader_node}

+ )} {event.details && (

{event.details}

)} From e4a5e535097051ca9061ce21ff0f4d063062a1e8 Mon Sep 17 00:00:00 2001 From: nileshnegi Date: Sun, 29 Mar 2026 22:14:28 -0500 Subject: [PATCH 20/24] Fix v3 --- .../backend/app/api/rccl_endpoints.py | 12 +- .../backend/app/collectors/rccl_collector.py | 138 +++++++++++++----- .../backend/app/collectors/rccl_data_store.py | 18 ++- .../backend/app/collectors/rccl_ras_client.py | 23 ++- .../app/collectors/rccl_text_parser.py | 58 +++++--- .../backend/app/core/jump_host_pssh.py | 2 +- cvs/monitors/cluster-mon/backend/app/main.py | 53 +++++-- .../frontend/src/pages/RCCLHealthPage.tsx | 56 +++++-- .../frontend/src/pages/RCCLTimelinePage.tsx | 15 +- 9 files changed, 283 insertions(+), 92 deletions(-) diff --git a/cvs/monitors/cluster-mon/backend/app/api/rccl_endpoints.py b/cvs/monitors/cluster-mon/backend/app/api/rccl_endpoints.py index a820bb09..3573ede8 100644 --- a/cvs/monitors/cluster-mon/backend/app/api/rccl_endpoints.py +++ b/cvs/monitors/cluster-mon/backend/app/api/rccl_endpoints.py @@ -57,14 +57,14 @@ async def get_rccl_events( since: Optional[float] = Query(None, description="Start timestamp (unix)"), until: Optional[float] = Query(None, description="End timestamp (unix)"), event_type: Optional[str] = Query(None, alias="type"), -) -> list[dict]: - """Filtered event log from Redis event stream.""" +) -> dict: + """Filtered event log from Redis event stream (or in-memory fallback).""" from app.main import app_state import time data_store = getattr(app_state, 'rccl_data_store', None) if data_store is None: - return [] + return {"events": [], "truncated": False} start = since or (time.time() - 3600) # default: last hour end = until or time.time() @@ -72,7 +72,11 @@ async def get_rccl_events( if event_type: events = [e for e in events if e.get("event_type") == event_type] - return events + + return { + "events": events, + "truncated": data_store.is_memory_capped, + } @router.post("/markers", status_code=201) diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/rccl_collector.py b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_collector.py index 00999b67..aa8959cb 100644 --- a/cvs/monitors/cluster-mon/backend/app/collectors/rccl_collector.py +++ b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_collector.py @@ -40,6 +40,7 @@ class RCCLCollector(BaseCollector): def __init__(self): self.job_state: RCCLJobState = RCCLJobState.NO_JOB self._app_state: Optional[Any] = None # set in run() before collect() + self._bootstrapped: bool = False # True after first poll seeds job_state from store def _healthy_nodes(self, app_state: Any) -> list[str]: """ @@ -59,10 +60,41 @@ def _health_from_snapshot(self, snapshot: RCCLSnapshot) -> RCCLJobState: async errors, dead peers, and inconsistent topology).""" return snapshot.state + async def _bootstrap_job_state(self, app_state: Any) -> None: + """ + On the first poll after startup, seed job_state from the data store's last + known snapshot state. This prevents a spurious job_start event when the + backend restarts mid-job. + """ + if self._bootstrapped: + return + self._bootstrapped = True + data_store = getattr(app_state, 'rccl_data_store', None) + if not data_store: + return + try: + last = await data_store.get_current_snapshot() + if last and 'state' in last: + self.job_state = RCCLJobState(last['state']) + logger.info(f"RCCL collector bootstrapped from stored state: {self.job_state}") + except (ValueError, Exception): + pass # Unknown state value or store error — start from NO_JOB + + async def on_collect_timeout(self, app_state: Any) -> None: + """ + Called by BaseCollector.run() when collect() is cancelled by collect_timeout. + Updates the state machine so the timeout is visible as an UNREACHABLE transition. + """ + prev = self.job_state + self.job_state = RCCLJobState.UNREACHABLE + await self._push_state_event(prev, self.job_state, app_state) + if hasattr(app_state, 'latest_rccl_snapshot'): + app_state.latest_rccl_snapshot = {"state": "unreachable"} + async def run(self, ssh_manager, app_state: Any) -> None: """ Override BaseCollector.run() to pass app_state to collect(). - Stores app_state reference so _pick_leader() and data_store are accessible. + Stores app_state reference so _healthy_nodes() and data_store are accessible. """ self._app_state = app_state self._ssh_manager = ssh_manager @@ -71,15 +103,16 @@ async def run(self, ssh_manager, app_state: Any) -> None: async def collect(self, ssh_manager) -> CollectorResult: """ One RCCL poll cycle: - 1. Pick one healthy node as 'leader' (VERBOSE STATUS -> triggers RAS_COLL_COMMS). - 2. Open SSH port-forward to leader:ras_port. - 3. Run rcclras protocol: handshake -> set_timeout -> get_status(verbose=True). - 4. Parse response -> RCCLSnapshot -> store in Redis and app_state. - 5. Return CollectorResult. - - Connection refused -> NO_JOB (expected state, not an error). - Timeout -> UNREACHABLE. - Protocol error -> ERROR. + 1. Bootstrap job_state from data store on first poll (prevents spurious job_start). + 2. Try each healthy node for an active rcclras listener on ras_port. + 3. On ConnectionRefused/ChannelException: continue to next node (not our job). + 4. On TimeoutError: continue to next node (may be transient SSH delay). + 5. On ProtocolError/Exception: abort cycle with ERROR. + 6. If no node has a listener: NO_JOB. + + Connection refused -> try next node -> NO_JOB if none respond. + Timeout -> try next node -> UNREACHABLE only if ALL candidates time out. + Protocol error -> ERROR (abort immediately; protocol errors are not transient). """ from app.core.config import settings @@ -93,6 +126,8 @@ async def collect(self, ssh_manager) -> CollectorResult: error="collect() called before run() -- app_state not set", ) + await self._bootstrap_job_state(app_state) + prev_state = self.job_state candidates = self._healthy_nodes(app_state) @@ -112,6 +147,8 @@ async def collect(self, ssh_manager) -> CollectorResult: ras_port = settings.rccl.ras_port collective_timeout = settings.rccl.collective_timeout_secs + timed_out_nodes: list[str] = [] + # Try each healthy node — rcclras only listens on nodes that are part of # an active RCCL job, which may be a subset of the configured nodes. for leader in candidates: @@ -121,6 +158,7 @@ async def collect(self, ssh_manager) -> CollectorResult: await client.handshake() await client.set_timeout(collective_timeout) raw_text = await client.get_status(verbose=True) + logger.debug(f"rcclras raw output from {leader}:\n{raw_text}") snapshot = self._parse_text_response(raw_text, leader) self.job_state = self._health_from_snapshot(snapshot) @@ -135,8 +173,8 @@ async def collect(self, ssh_manager) -> CollectorResult: try: from app.main import broadcast_rccl await broadcast_rccl(snapshot_dict) - except Exception: - pass + except Exception as e: + logger.warning(f"broadcast_rccl failed (snapshot not sent to WebSocket clients): {e}") collector_state = ( CollectorState.OK @@ -154,18 +192,18 @@ async def collect(self, ssh_manager) -> CollectorResult: # Port 28028 closed on this node — no RCCL job here, try next. logger.debug(f"No rcclras listener on {leader}:{ras_port}, trying next node") continue + except asyncio.TimeoutError: - self.job_state = RCCLJobState.UNREACHABLE - await self._push_state_event(prev_state, self.job_state, app_state, leader) - return CollectorResult( - collector_name=self.name, - timestamp=CollectorResult.now_iso(), - state=CollectorState.UNREACHABLE, - data={}, - error=f"RAS collective timed out on {leader}", - ) + # SSH/protocol timeout on this node — could be transient, try remaining nodes. + logger.debug(f"Timeout on {leader}:{ras_port}, trying next node") + timed_out_nodes.append(leader) + continue + except ProtocolError as e: + # Protocol errors are not transient — abort immediately. + prev = self.job_state self.job_state = RCCLJobState.ERROR + await self._push_state_event(prev, self.job_state, app_state, leader) logger.error(f"RAS protocol error on {leader}: {e}") return CollectorResult( collector_name=self.name, @@ -174,8 +212,11 @@ async def collect(self, ssh_manager) -> CollectorResult: data={}, error=str(e), ) + except Exception as e: + prev = self.job_state self.job_state = RCCLJobState.ERROR + await self._push_state_event(prev, self.job_state, app_state, leader) logger.error(f"RCCL collect() unexpected error on {leader}: {e}", exc_info=True) return CollectorResult( collector_name=self.name, @@ -185,6 +226,21 @@ async def collect(self, ssh_manager) -> CollectorResult: error=str(e), ) + # All candidates tried. If some timed out and none responded, mark UNREACHABLE. + if timed_out_nodes: + prev = self.job_state + self.job_state = RCCLJobState.UNREACHABLE + await self._push_state_event(prev, self.job_state, app_state) + if hasattr(app_state, 'latest_rccl_snapshot'): + app_state.latest_rccl_snapshot = {"state": "unreachable"} + return CollectorResult( + collector_name=self.name, + timestamp=CollectorResult.now_iso(), + state=CollectorState.UNREACHABLE, + data={}, + error=f"RAS collective timed out on all nodes: {timed_out_nodes}", + ) + # All healthy nodes tried — no rcclras listener found anywhere. self.job_state = RCCLJobState.NO_JOB await self._push_state_event(prev_state, self.job_state, app_state) @@ -218,16 +274,26 @@ async def _push_state_event( return _TYPE_MAP = { - (RCCLJobState.NO_JOB, RCCLJobState.HEALTHY): "job_start", - (RCCLJobState.NO_JOB, RCCLJobState.DEGRADED): "job_start_degraded", - (RCCLJobState.HEALTHY, RCCLJobState.DEGRADED): "job_degraded", - (RCCLJobState.DEGRADED, RCCLJobState.HEALTHY): "job_recovered", - (RCCLJobState.HEALTHY, RCCLJobState.NO_JOB): "job_end", - (RCCLJobState.DEGRADED, RCCLJobState.NO_JOB): "job_end", - (RCCLJobState.HEALTHY, RCCLJobState.UNREACHABLE):"node_unreachable", - (RCCLJobState.DEGRADED, RCCLJobState.UNREACHABLE):"node_unreachable", - (RCCLJobState.HEALTHY, RCCLJobState.ERROR): "collector_error", - (RCCLJobState.DEGRADED, RCCLJobState.ERROR): "collector_error", + (RCCLJobState.NO_JOB, RCCLJobState.HEALTHY): "job_start", + (RCCLJobState.NO_JOB, RCCLJobState.DEGRADED): "job_start_degraded", + (RCCLJobState.NO_JOB, RCCLJobState.UNREACHABLE): "nodes_unreachable", + (RCCLJobState.NO_JOB, RCCLJobState.ERROR): "collector_error", + (RCCLJobState.HEALTHY, RCCLJobState.DEGRADED): "job_degraded", + (RCCLJobState.HEALTHY, RCCLJobState.NO_JOB): "job_end", + (RCCLJobState.HEALTHY, RCCLJobState.UNREACHABLE): "node_unreachable", + (RCCLJobState.HEALTHY, RCCLJobState.ERROR): "collector_error", + (RCCLJobState.DEGRADED, RCCLJobState.HEALTHY): "job_recovered", + (RCCLJobState.DEGRADED, RCCLJobState.NO_JOB): "job_end", + (RCCLJobState.DEGRADED, RCCLJobState.UNREACHABLE): "node_unreachable", + (RCCLJobState.DEGRADED, RCCLJobState.ERROR): "collector_error", + (RCCLJobState.UNREACHABLE, RCCLJobState.HEALTHY): "node_recovered", + (RCCLJobState.UNREACHABLE, RCCLJobState.DEGRADED): "node_recovered_degraded", + (RCCLJobState.UNREACHABLE, RCCLJobState.NO_JOB): "job_end", + (RCCLJobState.UNREACHABLE, RCCLJobState.ERROR): "collector_error", + (RCCLJobState.ERROR, RCCLJobState.HEALTHY): "job_start", + (RCCLJobState.ERROR, RCCLJobState.DEGRADED): "job_start_degraded", + (RCCLJobState.ERROR, RCCLJobState.NO_JOB): "job_end", + (RCCLJobState.ERROR, RCCLJobState.UNREACHABLE): "node_unreachable", } event_type = _TYPE_MAP.get((prev, curr), "state_change") @@ -241,9 +307,7 @@ async def _push_state_event( logger.info(f"RCCL state transition: {prev} → {curr} (event: {event_type})") -try: - from app.core.config import settings as _settings - RCCLCollector.poll_interval = _settings.rccl.poll_interval - RCCLCollector.collect_timeout = _settings.rccl.collective_timeout_secs + 10 -except Exception: - pass # use class defaults +# Fail loudly if settings cannot be loaded — consistent with GPU/NIC collectors. +from app.core.config import settings as _settings +RCCLCollector.poll_interval = _settings.rccl.poll_interval +RCCLCollector.collect_timeout = _settings.rccl.collective_timeout_secs + 10 diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/rccl_data_store.py b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_data_store.py index 01a0c3de..f622a9ab 100644 --- a/cvs/monitors/cluster-mon/backend/app/collectors/rccl_data_store.py +++ b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_data_store.py @@ -62,7 +62,9 @@ async def push_snapshot(self, snapshot: dict) -> None: mapping={"data": payload, "ts": str(snapshot.get("timestamp", ""))}, ) except Exception as e: - logger.warning(f"RCCLDataStore.push_snapshot failed: {e}") + logger.warning(f"RCCLDataStore.push_snapshot failed (falling back to memory): {e}") + self._mem_snapshots.append(snapshot) + self._mem_current = snapshot async def push_event(self, event: dict) -> None: """Atomically append event to event stream.""" @@ -78,7 +80,8 @@ async def push_event(self, event: dict) -> None: approximate=True, ) except Exception as e: - logger.warning(f"RCCLDataStore.push_event failed: {e}") + logger.warning(f"RCCLDataStore.push_event failed (falling back to memory): {e}") + self._mem_events.append(event) async def get_recent_snapshots(self, count: int = 50) -> list[dict]: """Return the most recent N snapshots, newest first.""" @@ -104,13 +107,20 @@ async def get_current_snapshot(self) -> Optional[dict]: logger.warning(f"RCCLDataStore.get_current_snapshot failed: {e}") return None + @property + def is_memory_capped(self) -> bool: + """True when the in-memory event buffer has reached its maximum capacity.""" + return self._r is None and len(self._mem_events) >= _MEMORY_EVENT_MAX + async def get_events_in_range(self, start_ts: float, end_ts: float) -> list[dict]: - """Return events within a UTC timestamp range using stream entry IDs.""" + """Return events within a UTC timestamp range using stream entry IDs. + In-memory results are sorted by timestamp to handle NTP clock adjustments.""" if self._r is None: - return [ + results = [ e for e in self._mem_events if start_ts <= e.get("timestamp", 0) <= end_ts ] + return sorted(results, key=lambda e: e.get("timestamp", 0)) try: start_id = f"{int(start_ts * 1000)}-0" end_id = f"{int(end_ts * 1000)}-0" diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/rccl_ras_client.py b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_ras_client.py index 6d1b02b9..f43ee3be 100644 --- a/cvs/monitors/cluster-mon/backend/app/collectors/rccl_ras_client.py +++ b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_ras_client.py @@ -104,7 +104,28 @@ async def get_status(self, verbose: bool = True) -> str: cmd = b"VERBOSE STATUS\n" if verbose else b"STATUS\n" self._writer.write(cmd) await self._writer.drain() - data = await asyncio.wait_for(self._reader.read(-1), timeout=30.0) + # rcclras streams the response in chunks (e.g. sends header, then waits for + # all ranks to report before sending the communicator table). + # asyncio.StreamReader.read(n) returns as soon as ANY data is available — + # it does NOT wait for EOF. We must loop until read() returns b'' (EOF). + # The 30s timeout wraps the entire accumulation, and we cap at 1 MB total. + chunks: list[bytes] = [] + total = 0 + _MAX = 1024 * 1024 + + async def _read_all() -> bytes: + nonlocal total + while total < _MAX: + chunk = await self._reader.read(_MAX - total) + if not chunk: # EOF + break + chunks.append(chunk) + total += len(chunk) + return b"".join(chunks) + + data = await asyncio.wait_for(_read_all(), timeout=30.0) + if total >= _MAX: + logger.warning("rcclras VERBOSE STATUS response truncated at 1 MB — unexpected output size") return data.decode() async def start_monitor(self, groups: str = "all") -> AsyncIterator[str]: diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/rccl_text_parser.py b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_text_parser.py index 150b9c40..c4177df7 100644 --- a/cvs/monitors/cluster-mon/backend/app/collectors/rccl_text_parser.py +++ b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_text_parser.py @@ -40,10 +40,23 @@ class RCCLTextParser: _HIP_DRIVER_RE = re.compile( r"HIP runtime version (\d+),\s*amdgpu driver version (\d+)" ) - _JOB_SUMMARY_RE = re.compile( + # Anchored to the "Job summary" section to avoid matching spurious 5-integer lines. + # Lookahead stops at the next section header (word chars followed by a === underline) + # or end-of-string. We deliberately do NOT use (?=^\S|\Z) because the column header + # line "(total) per node ..." starts at column 0 and would prematurely end the match. + _JOB_SUMMARY_SECTION_RE = re.compile( + r"^Job summary\s*\n=+\s*\n(.*?)(?=^\w[^\n]*\n=+|\Z)", + re.MULTILINE | re.DOTALL, + ) + _JOB_SUMMARY_ROW_RE = re.compile( r"^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s*$", re.MULTILINE, ) + # Anchored to the "Communicators" section (same lookahead rationale as above) + _COMM_SECTION_RE = re.compile( + r"^Communicators.*?\n=+\s*\n(.*?)(?=^\w[^\n]*\n=+|\Z)", + re.MULTILINE | re.DOTALL, + ) _COMM_ROW_RE = re.compile( r"^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\d+(?:-\d+)?)\s+(\d+)\s+(\d+)\s+(\S+)\s+(\S+)\s*$", re.MULTILINE, @@ -95,10 +108,11 @@ def _parse_job_summary(self, text: str) -> Optional[RCCLJobSummary]: hip_version = int(hip_match.group(1)) if hip_match else 0 driver_version = int(hip_match.group(2)) if hip_match else 0 - # Job summary numbers table - # Format: Nodes Processes GPUs Processes GPUs - # 1 8 1 8 8 - summary_match = self._JOB_SUMMARY_RE.search(text) + # Job summary numbers table — search within the "Job summary" section only + # to avoid false-matching any other line that happens to have 5 integers. + section_match = self._JOB_SUMMARY_SECTION_RE.search(text) + section = section_match.group(1) if section_match else "" + summary_match = self._JOB_SUMMARY_ROW_RE.search(section) if not summary_match: return None @@ -129,18 +143,21 @@ def _parse_communicators(self, text: str) -> list[RCCLCommunicator]: Extract communicator groups from the table after 'Communicators'. Format: - Group Comms Nodes Ranks Ranks Ranks Status Errors - # in grp per c per n per c in grp - 0 1 1 8 8 8 RUNNING OK + Group Comms Nodes Ranks Ranks Ranks Status Errors + # in grp per c per node per comm in group + 0 1 2 7-8 16 15 RUNNING INCOMPLETE """ + # Search within the Communicators section to avoid matching other tables + section_match = self._COMM_SECTION_RE.search(text) + section = section_match.group(1) if section_match else text + comms = [] - for match in self._COMM_ROW_RE.finditer(text): + for match in self._COMM_ROW_RE.finditer(section): group_num = int(match.group(1)) comms_in_group = int(match.group(2)) - nodes_per_comm = int(match.group(3)) - # ranks_per_node may be a range like "7-8" on heterogeneous topologies - ranks_per_comm = int(match.group(5)) - ranks_in_group = int(match.group(6)) + # ranks_per_node (group 4) may be a range like "7-8" on heterogeneous topologies + ranks_per_comm = int(match.group(5)) # expected ranks in ONE communicator + ranks_in_group = int(match.group(6)) # actual respondents across ALL comms in group status = match.group(7) errors = match.group(8) @@ -152,16 +169,16 @@ def _parse_communicators(self, text: str) -> list[RCCLCommunicator]: else: health = RCCLJobState.HEALTHY - # responding_ranks = "Ranks in group" (actual respondents) - # total_ranks = "Ranks per comm" (expected total) - # missing_ranks = total - responding - missing = ranks_per_comm - ranks_in_group + # "Ranks in group" spans ALL communicators in the group, so total expected + # = ranks_per_comm * comms_in_group. Missing = expected - responding. + total_expected = ranks_per_comm * comms_in_group + missing = max(0, total_expected - ranks_in_group) # In v2.28.3, we don't get per-communicator hashes from the table, # so use group number as placeholder comms.append(RCCLCommunicator( comm_hash=f"group_{group_num}", - total_ranks=ranks_per_comm, + total_ranks=total_expected, responding_ranks=ranks_in_group, missing_ranks=missing, ranks=[], # Per-rank detail only in verbose with outliers @@ -184,8 +201,11 @@ def _parse_errors_section(self, text: str) -> list[str]: """Extract error lines from the Errors section.""" errors = [] # Find content between "Errors" header and "Warnings" header (or end) + # Stop at any section header (word followed by === underline) or end of string. + # Using \Z (end-of-string) instead of $ (end-of-line) so the lazy .*? + # doesn't stop at the first line ending when re.MULTILINE is active. errors_section = re.search( - r"^Errors\s*\n=+\s*\n(.*?)(?=^Warnings\s*\n=+|\Z)", + r"^Errors\s*\n=+\s*\n(.*?)(?=^\w[^\n]*\n=+|\Z)", text, re.MULTILINE | re.DOTALL, ) diff --git a/cvs/monitors/cluster-mon/backend/app/core/jump_host_pssh.py b/cvs/monitors/cluster-mon/backend/app/core/jump_host_pssh.py index d60673c6..0e26dfd7 100644 --- a/cvs/monitors/cluster-mon/backend/app/core/jump_host_pssh.py +++ b/cvs/monitors/cluster-mon/backend/app/core/jump_host_pssh.py @@ -419,7 +419,7 @@ async def open_port_forward( channel = await asyncio.to_thread( self.jump_transport.open_channel, "direct-tcpip", - (node, remote_port), + ("::1", remote_port), # rcclras binds to IPv6 loopback only ("127.0.0.1", 0), ) except Exception: diff --git a/cvs/monitors/cluster-mon/backend/app/main.py b/cvs/monitors/cluster-mon/backend/app/main.py index 13f56e3f..fc6c48eb 100644 --- a/cvs/monitors/cluster-mon/backend/app/main.py +++ b/cvs/monitors/cluster-mon/backend/app/main.py @@ -373,7 +373,15 @@ async def _reload_configuration_inner(): app_state.is_collecting = True for cls in REGISTERED_COLLECTORS: if cls.name in collectors_to_restart: + old_collector = app_state.collectors.get(cls.name) c = cls() + # Transfer stateful fields so a config reload doesn't emit a + # spurious job_start event (new instance initialises to NO_JOB). + if old_collector is not None: + if hasattr(old_collector, 'job_state') and hasattr(c, 'job_state'): + c.job_state = old_collector.job_state + if hasattr(c, '_bootstrapped'): + c._bootstrapped = True # skip bootstrap — state already known app_state.collectors[c.name] = c app_state.collector_tasks[c.name] = _start_collector_task(c) logger.info(f"Restarted collector: {c.name}") @@ -441,6 +449,7 @@ def __init__(self, max_queue_size: int = 64): self._queues: dict[int, asyncio.Queue] = {} self._send_tasks: dict[int, asyncio.Task] = {} self._max_queue_size = max_queue_size + self._closing: set[int] = set() # guard against concurrent double-close async def connect(self, websocket: WebSocket): await websocket.accept() @@ -466,16 +475,22 @@ async def disconnect(self, websocket: WebSocket): await self._remove(id(websocket)) async def _remove(self, client_id: int): - task = self._send_tasks.pop(client_id, None) - if task and not task.done(): - task.cancel() - self._queues.pop(client_id, None) - ws = self._clients.pop(client_id, None) - if ws: - try: - await ws.close() - except Exception: - pass + if client_id in self._closing: + return + self._closing.add(client_id) + try: + task = self._send_tasks.pop(client_id, None) + if task and not task.done(): + task.cancel() + self._queues.pop(client_id, None) + ws = self._clients.pop(client_id, None) + if ws: + try: + await ws.close() + except Exception: + pass + finally: + self._closing.discard(client_id) def broadcast(self, message: dict): """Non-blocking broadcast: enqueues to each client's queue.""" @@ -704,22 +719,34 @@ async def lifespan(app: FastAPI): # Shutdown logger.info("Shutting down CVS Cluster Monitor") - # Stop collection + # 1. Signal all background loops to stop accepting new work app_state.is_collecting = False + + # 2. Cancel collector tasks. Collectors call SSH inside asyncio.to_thread() + # which cannot be interrupted once the thread has started. Set client to + # None first so any in-flight thread that finishes and tries to issue the + # next SSH command gets the "no client" early-return rather than an + # AttributeError after destroy_clients() deletes the attribute. + if app_state.ssh_manager: + app_state.ssh_manager.client = None # type: ignore[assignment] + for task in app_state.collector_tasks.values(): task.cancel() if app_state.collector_tasks: await asyncio.gather(*app_state.collector_tasks.values(), return_exceptions=True) + if app_state.probe_task: app_state.probe_task.cancel() try: await app_state.probe_task except asyncio.CancelledError: pass - # Close Redis + + # 3. Close Redis if app_state.redis: await app_state.redis.aclose() - # Close SSH + + # 4. Destroy SSH connections (client already None, this cleans up port-forward state) if app_state.ssh_manager: app_state.ssh_manager.destroy_clients() diff --git a/cvs/monitors/cluster-mon/frontend/src/pages/RCCLHealthPage.tsx b/cvs/monitors/cluster-mon/frontend/src/pages/RCCLHealthPage.tsx index f7208012..abdb26a6 100644 --- a/cvs/monitors/cluster-mon/frontend/src/pages/RCCLHealthPage.tsx +++ b/cvs/monitors/cluster-mon/frontend/src/pages/RCCLHealthPage.tsx @@ -1,5 +1,5 @@ import { useEffect, useState, useCallback } from 'react' -import { RefreshCw, AlertTriangle, XCircle, CheckCircle, Radio } from 'lucide-react' +import { RefreshCw, AlertTriangle, XCircle, CheckCircle, Radio, Clock } from 'lucide-react' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/Card' import { api } from '@/services/api' @@ -24,6 +24,7 @@ interface RCCLStatus { node_addr: string pid: number cuda_dev: number + status?: { async_error: number; init_state: number } }> }> dead_peers?: string[] @@ -37,10 +38,15 @@ const STATE_CONFIG: Record(null) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) + const [now, setNow] = useState(() => Date.now() / 1000) const fetchStatus = useCallback(async () => { try { @@ -57,10 +63,19 @@ export function RCCLHealthPage() { useEffect(() => { fetchStatus() - const interval = setInterval(fetchStatus, 10000) // refresh every 10s + const interval = setInterval(fetchStatus, POLL_INTERVAL_MS) return () => clearInterval(interval) }, [fetchStatus]) + // Tick every second so the staleness indicator stays live + useEffect(() => { + const tick = setInterval(() => setNow(Date.now() / 1000), 1000) + return () => clearInterval(tick) + }, []) + + const snapshotAge = status?.timestamp ? now - status.timestamp : null + const isStale = snapshotAge !== null && snapshotAge > STALE_THRESHOLD_S + const stateConfig = STATE_CONFIG[status?.state || 'no_job'] || STATE_CONFIG.no_job const StateIcon = stateConfig.icon @@ -72,14 +87,25 @@ export function RCCLHealthPage() {

RCCL Health

Real-time RCCL communicator monitoring via rcclras

- +
+ {snapshotAge !== null && ( + + + {isStale ? 'Stale — ' : ''} + {snapshotAge < 60 + ? `${Math.round(snapshotAge)}s ago` + : `${Math.round(snapshotAge / 60)}m ago`} + + )} + +
{error && ( @@ -88,6 +114,16 @@ export function RCCLHealthPage() { )} + {isStale && !error && ( +
+ + Data may be stale — last snapshot was {snapshotAge !== null && snapshotAge < 60 + ? `${Math.round(snapshotAge)} seconds` + : `${Math.round((snapshotAge ?? 0) / 60)} minutes`} ago. + The collector may be unreachable or the rcclras server may be down. +
+ )} + {/* Job State Banner */} diff --git a/cvs/monitors/cluster-mon/frontend/src/pages/RCCLTimelinePage.tsx b/cvs/monitors/cluster-mon/frontend/src/pages/RCCLTimelinePage.tsx index 5ce2d85d..9b32a9e0 100644 --- a/cvs/monitors/cluster-mon/frontend/src/pages/RCCLTimelinePage.tsx +++ b/cvs/monitors/cluster-mon/frontend/src/pages/RCCLTimelinePage.tsx @@ -39,6 +39,8 @@ export function RCCLTimelinePage() { const [timeRange, setTimeRange] = useState(3600) // 1 hour default const [filterType, setFilterType] = useState('') + const [truncated, setTruncated] = useState(false) + const fetchEvents = useCallback(async () => { try { setLoading(true) @@ -47,8 +49,10 @@ export function RCCLTimelinePage() { now - timeRange, now, filterType || undefined - ) as RCCLEvent[] - setEvents(data.sort((a, b) => b.timestamp - a.timestamp)) + ) as { events: RCCLEvent[]; truncated: boolean } + const events = Array.isArray(data) ? data : (data.events ?? []) + setEvents(events.sort((a: RCCLEvent, b: RCCLEvent) => b.timestamp - a.timestamp)) + setTruncated(Array.isArray(data) ? false : (data.truncated ?? false)) } catch { // silently handle } finally { @@ -114,7 +118,7 @@ export function RCCLTimelinePage() { - {/* Event count */} + {/* Event count + truncation warning */}
@@ -122,6 +126,11 @@ export function RCCLTimelinePage() { {events.length} events in the selected time range + {truncated && ( + + In-memory log capped — oldest events may be missing. Enable Redis for full history. + + )}
From fab09a017dd50c41cfd3bee57c255ad1393d1d16 Mon Sep 17 00:00:00 2001 From: nileshnegi Date: Sun, 29 Mar 2026 22:14:38 -0500 Subject: [PATCH 21/24] Fix CVS exit cleanup --- .../cluster-mon/backend/app/collectors/base.py | 8 ++++++++ .../backend/app/core/cvs_parallel_ssh_reliable.py | 10 ++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/base.py b/cvs/monitors/cluster-mon/backend/app/collectors/base.py index 1029f168..113e4ade 100644 --- a/cvs/monitors/cluster-mon/backend/app/collectors/base.py +++ b/cvs/monitors/cluster-mon/backend/app/collectors/base.py @@ -54,6 +54,13 @@ async def collect(self, ssh_manager) -> CollectorResult: """ ... + async def on_collect_timeout(self, app_state: Any) -> None: + """ + Called when collect() is cancelled by the outer collect_timeout. + Override in subclasses to update internal state machines on timeout. + The default implementation is a no-op. + """ + async def run(self, ssh_manager, app_state: Any) -> None: """ Default task body. Loops until app_state.is_collecting is False. @@ -70,6 +77,7 @@ async def run(self, ssh_manager, app_state: Any) -> None: logger.warning( f"{self.name} collect() timed out after {self.collect_timeout}s" ) + await self.on_collect_timeout(app_state) result = CollectorResult( collector_name=self.name, timestamp=CollectorResult.now_iso(), diff --git a/cvs/monitors/cluster-mon/backend/app/core/cvs_parallel_ssh_reliable.py b/cvs/monitors/cluster-mon/backend/app/core/cvs_parallel_ssh_reliable.py index 8d143d2b..6b154a28 100644 --- a/cvs/monitors/cluster-mon/backend/app/core/cvs_parallel_ssh_reliable.py +++ b/cvs/monitors/cluster-mon/backend/app/core/cvs_parallel_ssh_reliable.py @@ -383,6 +383,12 @@ def exec(self, cmd, timeout=None, print_console=True): # CRITICAL: Acquire lock to prevent concurrent SSH operations # parallel-ssh/paramiko/libssh2 are NOT thread-safe with _ssh_lock: + # Re-check after acquiring the lock: destroy_clients() may have run + # while we were waiting, setting self.client = None. + if not self.client: + logger.info("SSH client destroyed before command could run (shutdown race) — skipping") + return {host: "ABORT: Host Unreachable Error" for host in self.host_list} + logger.info(f"CVS Pssh executing: {cmd[:100]}...") logger.info(f"Calling ParallelSSHClient.run_command() on {len(self.reachable_hosts)} reachable nodes...") logger.info(f" Timeout: {timeout if timeout else 'default'}") @@ -530,8 +536,8 @@ async def open_port_forward( def destroy_clients(self): logger.info('Destroying Current phdl connections ..') - if self.client: - del self.client + with _ssh_lock: + self.client = None # set to None (not del) so exec() guard stays valid with self._pf_lock: for c in self._pf_clients.values(): try: From 2f76193f654fd6c05308e41ff4cc579cb5fb91dc Mon Sep 17 00:00:00 2001 From: nileshnegi Date: Sun, 29 Mar 2026 22:39:03 -0500 Subject: [PATCH 22/24] Updated Technical Report --- .../cvs_rccl_monitoring_technical_report.md | 226 +++++++++++++----- .../images/rccl_health_degraded.png | Bin 0 -> 218415 bytes .../collectors/images/rccl_health_good.png | Bin 0 -> 164992 bytes 3 files changed, 162 insertions(+), 64 deletions(-) create mode 100755 cvs/monitors/cluster-mon/backend/app/collectors/images/rccl_health_degraded.png create mode 100755 cvs/monitors/cluster-mon/backend/app/collectors/images/rccl_health_good.png diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/cvs_rccl_monitoring_technical_report.md b/cvs/monitors/cluster-mon/backend/app/collectors/cvs_rccl_monitoring_technical_report.md index 58082e28..61694eb6 100644 --- a/cvs/monitors/cluster-mon/backend/app/collectors/cvs_rccl_monitoring_technical_report.md +++ b/cvs/monitors/cluster-mon/backend/app/collectors/cvs_rccl_monitoring_technical_report.md @@ -1,80 +1,178 @@ -# CVS Cluster-Mon: RCCL Monitoring Extension — Technical Report +# CVS Cluster-Mon: RCCL Monitoring Extension -> **Date:** 2026-03-29 -> **Branch:** `users/nileshnegi/add-rcclras-support` -> **Scope:** 42 files changed, +3,796 / -806 lines, 15 commits, 82 tests +> **Date:** 2026-03-29 +> **Branch:** `users/nileshnegi/add-rcclras-support` +> **Status:** Tested with 1-node and 2-nodes on Ruby MI350 cluster --- -## Executive Summary +## Problem Statement -This work adds **real-time RCCL communicator health monitoring** to the CVS cluster-mon tool by connecting directly to the `rcclras` RAS TCP service (port 28028) running inside every RCCL process. This is a **novel approach** — no existing open-source tool monitors RCCL/NCCL through the RAS interface. Industry practice relies on post-mortem log parsing and application-level timeouts, neither of which provides real-time visibility into communicator state during a live job. +Large-scale distributed training and inference jobs using RCCL often suffer from opaque failure modes: hangs from communicator deadlocks, silent performance degradation from degraded network links, segfaults from GPU memory errors, and cascading failures when a single node becomes unresponsive. Today, users have no unified way to observe RCCL's internal state during a live job — they resort to ad-hoc NCCL_DEBUG log analysis after the fact, losing critical temporal context. -The implementation required two foundational changes: (1) a **robustness refactor** of the existing collector architecture (BaseCollector ABC, Pydantic config migration, SSH port-forwarding, Redis integration), and (2) the **RCCL monitoring extension** itself (RAS protocol client, text parser, collector, REST/WebSocket API, 3 React dashboard pages). The text parser was built test-first against real `rcclras -v` output captured from a live MI300X cluster. +NCCL ships a built-in RAS (Reliability, Availability, Serviceability) subsystem that exposes communicator health, peer mesh connectivity, and lifecycle events through a dedicated TCP service (ncclras). + +RCCL inherits this subsystem `rcclras`, but no tooling exists to leverage it for continuous monitoring, correlation with system-level metrics (GPU health, RDMA errors, kernel logs), or integration with application-level signals (training step progression, loss curves). + +--- + +## What does this "CVS RCCL Monitoring Extension" do? + +CVS `cluster-mon` can now monitor live RCCL jobs in real time by connecting directly to the `rcclras` TCP service that runs inside every RCCL process on the cluster. When a rank dies, hangs, or loses connectivity, the dashboard reflects it within one poll cycle — no log parsing, no application-level timeout required. + +Based on a cursory search, this is the only open-source tool that uses the RAS interface for RCCL/NCCL monitoring. Industry practice relies on post-mortem log analysis and training-side watchdog timeouts. Neither gives users visibility into communicator state while the job is still running. --- -## What Was Built +## Background: What is `rcclras` -### Robustness Improvements (Foundation) +`rcclras` is a TCP server embedded in every RCCL process (port 28028, IPv6 loopback `[::1]` only). It exposes the internal communicator state machine via a line-oriented ASCII protocol: -| Component | What It Does | -|-----------|-------------| -| **BaseCollector ABC** | Unified collector lifecycle with `asyncio.wait_for` timeout enforcement, supervisor pattern with auto-restart on crash (exponential backoff to 2 min), per-collector `critical` flag for aggregate health | -| **Pydantic Config** | Replaced hand-rolled `simple_config.py` with typed `Settings(BaseSettings)` using `_YamlSource` for YAML loading, `env_nested_delimiter="__"` for env var overrides. Added `StorageConfig`, `RCCLConfig` sections | -| **SSH Port-Forwarding** | `open_port_forward()` async context manager on both `Pssh` and `JumpHostPssh`. Uses `socketpair()` bridge (no ephemeral TCP ports, no TOCTOU race). Enables TCP tunneling to any port on compute nodes | -| **Redis Integration** | `redis.asyncio` client initialized in lifespan with graceful degradation (app continues without Redis). Docker Compose includes `redis:7-alpine` with AOF persistence, healthcheck, and auth | -| **Collectors Status API** | `GET /api/collectors/status` returns per-collector state + `overall_status` (healthy/degraded/critical) | -| **ConnectionManager** | Per-client bounded `asyncio.Queue` with dedicated sender tasks. Slow WebSocket clients are auto-disconnected instead of blocking the collector loop | +``` +CLIENT PROTOCOL 2 → handshake +SERVER PROTOCOL 2 ← +TIMEOUT 30 → set collective timeout +OK ← +VERBOSE STATUS → request full dump + ← streams header, then waits for all ranks to + check in before sending communicator table +``` -### RCCL Monitoring Extension (Phase 1) +The server streams the response in two bursts. It sends the header and job summary immediately, then blocks until all ranks report before appending the communicator table. The client must read until EOF to get the full response. -| Component | What It Does | -|-----------|-------------| -| **RCCLRasClient** | Async TCP client speaking the rcclras wire protocol (handshake, TIMEOUT, VERBOSE STATUS). Protocol version guards for future SET FORMAT (v3) and MONITOR (v4) | -| **RCCLTextParser** | Regex-based parser for rcclras v2.28.3 VERBOSE STATUS output. Built test-first against 3 real fixture files captured from a live MI300X job (healthy, degraded with missing rank, connection reset) | -| **RCCLCollector** | `BaseCollector` subclass. Iterates all healthy nodes (not just first) to find an active rcclras listener, opens SSH port-forward to `[::1]:28028` (IPv6 loopback — required since rcclras does not bind to `0.0.0.0`), runs the RAS protocol, parses response, stores in data store, broadcasts via WebSocket. State machine: NO_JOB / UNREACHABLE / HEALTHY / DEGRADED / ERROR. Auto-generates typed state-change events (10-transition map: `job_start`, `job_start_degraded`, `job_degraded`, `job_recovered`, `job_end`, `node_unreachable`, `collector_error`) on every state transition | -| **RCCLDataStore** | Redis Streams-based ring buffer (XADD+MAXLEN — atomic, no LPUSH+LTRIM race). 1000 snapshot entries, 10000 event entries. Time-range queries via stream entry IDs. Falls back to bounded in-memory deque (500 events, 100 snapshots) when Redis is unavailable — events survive without Docker | -| **REST API** | `GET /api/rccl/status`, `/communicators`, `/communicators/{hash}`, `/events` (time-filtered), `POST /markers` (PyTorch callback endpoint, Pydantic-validated) | -| **WebSocket** | `/ws/rccl` for real-time RCCL snapshot streaming via `broadcast_rccl()` | -| **Frontend** | 3 React + TypeScript pages: **RCCLHealth** (job state banner, communicator grid with per-rank error highlighting, rcclras Errors section), **RCCLTopology** (peer mesh with v2.28.3 compatibility note), **RCCLTimeline** (event timeline with state-change event types and from/to state display). Sidebar nav with RCCL section label | +`rcclras` is not reachable directly from the CVS backend — it binds only to the IPv6 loopback interface on each compute node. Access goes through an SSH port-forward tunnel. --- -## Tasks Accomplished - -- [x] BaseCollector ABC with collect_timeout, supervisor, probe_requested -- [x] Pydantic Settings migration (simple_config.py deleted) -- [x] SSH port-forwarding on Pssh + JumpHostPssh -- [x] Thread safety: _exec_lock + _hosts_lock separation (deadlock fix) -- [x] All GPU/NIC collector methods use exec_async() (no event loop blocking) -- [x] Redis init with auth, graceful degradation, docker-compose -- [x] /api/collectors/status with overall_status -- [x] ConnectionManager with per-client queues -- [x] RCCL data models (Pydantic) — `errors: list[str]` field added to `RCCLSnapshot` -- [x] RCCLRasClient with protocol version guards -- [x] RCCLTextParser from real MI300X fixtures -- [x] RCCLCollector — `_pick_leader` replaced by `_healthy_nodes` (tries all healthy nodes); SSH port-forward dest fixed to `"::1"` (IPv6 loopback); `_health_from_snapshot` delegates to `snapshot.state` (parser already computes correct state); state-change event generation -- [x] RCCLDataStore — Redis Streams + in-memory fallback; `latest_rccl_snapshot` cleared on job end/unreachable -- [x] RCCL REST API + /ws/rccl WebSocket -- [x] Frontend: 3 React pages + navigation -- [x] Topology-diff config reload -- [x] 82 unit tests (3 new: 2-node degraded fixture with heterogeneous `ranks_per_node` range) - -## Testing Summary - -**82 tests** across 9 test files covering: BaseCollector lifecycle (timeout, cancellation, ConnectionError), config defaults and env var overrides, SSH bridge (bidirectional data, EOF propagation, daemon threads), collector attributes and collect() return types, collectors/status API logic, RAS protocol client against mock TCP server, text parser against 4 real fixtures (healthy, single-node degraded, 2-node degraded with heterogeneous `ranks_per_node` range `7-8`, connection reset), RCCL collector edge cases including state-change event emission and in-memory data store fallback, WebSocket ConnectionManager, and reload diff detection. - -## Known Limitations (RCCL v2.28.3) - -- **Only `group_0` visible per job**: rcclras exposes only the communicator group that rank 0 belongs to. Jobs with multiple communicator groups (e.g. 8 groups across 16 GPUs) show only one group in the output. This is a known RAS limitation; full group visibility planned for rcclras v2.29+. -- **No peer mesh data**: per-peer connectivity (`RCCLPeer`) is not included in the v2.28.3 text output. RAS Topology page displays a compatibility note. -- **Events lost on restart**: in-memory fallback (no Redis) stores up to 500 events per process lifetime. Events are not persisted across backend restarts without Redis. - -## TODOs (Future Phases) - -- [ ] **Phase 1.5:** Re-enable `RAS_COLL_CONNS` in RCCL (3 `#if 0` blocks) for connection latency stats -- [ ] **Phase 2:** JSON parser when RCCL syncs to v2.28.9 (`SET FORMAT json`); Prometheus `/metrics` endpoint; InfluxDB long-term storage -- [ ] **Phase 3:** Monitor mode (`MONITOR all` persistent connection) when RCCL syncs to v2.29.2; real-time event streaming; per-rank structured error parsing from Errors section -- [ ] **Phase 4:** Grafana dashboard templates; `/api/rccl/preflight` endpoint for Slurm prolog; Slurm job ID correlation; snapshot replay for post-mortem -- [ ] Integration test: full collector-to-Redis-to-API pipeline with mock rcclras server +## Architecture + +``` +rcclras :28028 (IPv6 loopback, each compute node) + │ + │ SSH port-forward tunnel (Pssh / JumpHostPssh) + ▼ +RCCLRasClient ── VERBOSE STATUS ──► RCCLTextParser + │ + RCCLSnapshot + │ + ┌───────────────────┼───────────────────┐ + ▼ ▼ ▼ + Redis Streams app_state /ws/rccl + (ring buffer) latest_rccl_snapshot WebSocket + │ + REST API ──► Frontend (3 pages) +``` + +**Collector cadence:** 30-second poll interval. The collector tries each healthy node in turn until it finds one with an active rcclras listener on port 28028. One successful response per cycle is sufficient — all ranks within a job report to the same rcclras instance. + +**State machine:** The collector tracks job state across polls. + +``` +NO_JOB ──► HEALTHY ──► DEGRADED ──► NO_JOB + │ ▲ + └──────── NO_JOB ─────────┘ + │ + UNREACHABLE + │ + ERROR +``` + +Every state transition emits a typed event (`job_start`, `job_end`, `job_degraded`, `job_recovered`, `node_unreachable`, etc.) stored in the event stream and visible on the Timeline page. + +--- + +## Components + +### RCCLRasClient +Async TCP client for the rcclras wire protocol. Takes a pre-connected `asyncio.StreamReader/Writer` from the SSH port-forward context manager. Handles the handshake, timeout setting, and VERBOSE STATUS dump. Reads until EOF in a loop — a single `read(n)` returns only the first burst and misses the communicator table. + +Includes protocol version guards for `SET FORMAT json` (protocol v3, rcclras v2.28.9) and `MONITOR` mode (protocol v4, rcclras v2.29.2) — these are not yet enabled but the client won't send unknown commands to older servers. + +### RCCLTextParser +Regex parser for the rcclras v2.28.3 VERBOSE STATUS text format. Built and tested against real output captured from a live MI300X cluster. Extracts: + +- **Job summary** — node count, process count, GPU count, RCCL version, HIP/driver versions +- **Communicator table** — group number, comm count, rank counts, status, error column +- **Dead peers** — IP:port of unreachable peers +- **Errors section** — raw error lines reported by rcclras + +The parser determines job state from the parsed data: `NO_JOB` if no valid output, `DEGRADED` if any communicator has missing ranks, dead peers, or errors, `HEALTHY` otherwise. + +### RCCLCollector +`BaseCollector` subclass running on a 30-second cycle. Key behaviours: + +- **Leader selection:** tries all healthy nodes (from `node_health_status`) in order until one has an active rcclras listener on port 28028. +- **Bootstrap:** on first poll after startup, seeds `job_state` from the last stored snapshot to avoid emitting a spurious `job_start` event on backend restart. +- **State transfer on config reload:** when configuration is reloaded and the collector is restarted, the previous `job_state` is copied to the new instance — same reason. +- **Timeout handling:** if the outer `asyncio.wait_for` fires, `on_collect_timeout()` updates the state machine to UNREACHABLE so the next cycle doesn't start from a stale state. + +### RCCLDataStore +Dual-mode storage backend: + +| Mode | When | Storage | Capacity | +|------|------|---------|----------| +| **Redis Streams** | Redis available | `rccl:snapshots`, `rccl:events` | 1 000 snapshots, 10 000 events | +| **In-memory deque** | No Redis / Redis error | `collections.deque` | 500 events, 100 snapshots | + +Redis mode uses `XADD ... MAXLEN` — atomic append and cap in a single command. Time-range event queries use Redis Stream entry IDs (millisecond timestamps embedded). The in-memory fallback activates automatically if Redis is unavailable or throws an exception mid-operation. + +### REST API + +| Endpoint | Description | +|----------|-------------| +| `GET /api/rccl/status` | Latest snapshot: state, job summary, communicators, errors | +| `GET /api/rccl/communicators` | Communicator list from latest snapshot | +| `GET /api/rccl/communicators/{hash}` | Single communicator detail | +| `GET /api/rccl/events?since=&until=&type=` | Time-filtered event log. Returns `{events, truncated}` — `truncated: true` when the in-memory buffer is at capacity and older events may be missing | +| `POST /api/rccl/markers` | PyTorch training step/loss callback. Stores as `training_marker` event | +| `WebSocket /ws/rccl` | Real-time snapshot push on every collector cycle | + +### Frontend Pages + +**RCCL Health** — primary view. Shows job state banner (Healthy / Degraded / Unreachable / No Job), a staleness indicator when the snapshot is more than 75 seconds old (2.5× the poll interval), the raw rcclras Errors section when present, and a communicator card per group showing total/responding/missing rank counts. + +**RAS Topology** — peer mesh visualization. Disabled for rcclras v2.28.3, which does not include per-peer connectivity in its text output. A compatibility note is shown; peer data is expected in a future rcclras version. + +**Timeline** — chronological event log with type filter (job_start, job_end, degraded, recovered, etc.) and time-range selector. Shows `from_state → to_state` for state-change events and step/loss for training markers. + +--- + +## RCCL Health — Live Screenshots + +### Healthy State +All 16 ranks across 2 nodes responding. `group_0` communicator: 16/16 responding, 0 missing. + +![RCCL Health - Healthy](images/rccl_health_good.png) + +### Degraded State +One rank dropped mid-job. rcclras identifies the exact rank (Rank 7), GPU (GPU 7), PID (3871587), and node (10.245.40.180) in its Errors section. The communicator card reflects 15/16 responding, 1 missing. + +![RCCL Health - Degraded](images/rccl_health_degraded.png) + +--- + +## Known Limitations (rcclras v2.28.3) + +**Single communicator group visible.** rcclras v2.28.3 exposes only the communicator group that rank 0 belongs to. A job using 8 independent communicator groups across 16 GPUs will show only one group. Full multi-group visibility is expected in a later rcclras version. + +**No per-peer connectivity data.** The v2.28.3 text format does not include peer-level mesh data. The RAS Topology page is present but shows a compatibility notice until the data is available. + +**In-memory events do not survive restarts.** Without Redis, events are held in a bounded in-memory buffer (500 events). Restarting the backend clears this history. Redis is not required for the core health dashboard — only for event history retention across restarts. + +--- + +## Testing + +Tested cluster-mon with long-running RCCL-Tests on 1-node and 2-nodes of Ruby MI350 cluster and introducing artificial chaos (e.g. killing a rccl-tests process). CVS backend/frontend app running on local laptop could directly connect to Ruby cluster compute nodes running RCCL. + +Unit-Tests: 82 tests across 9 files. Coverage includes: BaseCollector lifecycle (timeout, crash, ConnectionError, supervisor restart), Pydantic config defaults and environment variable overrides, SSH bridge (bidirectional data, EOF propagation), collectors/status API, RAS protocol client against a mock TCP server, text parser against 4 fixture files (healthy, single-node degraded, 2-node degraded with heterogeneous `7-8` ranks-per-node range, connection reset), RCCL collector state machine (all 20 transitions, bootstrap, no-duplicate-event on unchanged state), WebSocket ConnectionManager, and config reload diff detection. + +--- + +## Future Work + +| Phase | Scope | +|-------|-------| +| **2** | Switch to JSON output (rcclras v2.28.9)
Prometheus `/metrics` endpoint
InfluxDB long-term storage (structured data pipeline) | +| **3** | Persistent `MONITOR` mode (rcclras v2.29.2) for push-based event streaming (eliminates polling)
Per-rank structured error parsing | +| **4** | `/api/rccl/preflight` for Slurm prolog health gate
Slurm job ID correlation
Grafana dashboard templates
Snapshot replay for post-mortem analysis | diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/images/rccl_health_degraded.png b/cvs/monitors/cluster-mon/backend/app/collectors/images/rccl_health_degraded.png new file mode 100755 index 0000000000000000000000000000000000000000..7cd30e4da2db2f9059dbc69deac28ab6526ce5bd GIT binary patch literal 218415 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 VV5@kS$J7T(TAr?cF6*2UngEXeXXXF^ literal 0 HcmV?d00001 diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/images/rccl_health_good.png b/cvs/monitors/cluster-mon/backend/app/collectors/images/rccl_health_good.png new file mode 100755 index 0000000000000000000000000000000000000000..1c7c9e495f204462eac0203ff930f3a0ff9c3833 GIT binary patch literal 164992 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\F_Mm23p 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

FsuqK7bZgq; zr^^HVwoxOfvAP)QO6S97ej8Y`zmTOQAfM-~y5=ZeE7<+aOpIe^UB%>asK0Xth7<*i zrT2lMuVg;3xzGY>MZ@5l3xJtlET#O@e2G^Bg68XSV0~d)diDJW$1G}sp==h%$wF-O zpZ+|}70urosjEWm{&Ofz<7JY6N>9L*LB;)!u-j%dUrE1WY8-tJYD82p6U29do z2Z|M8$`qBL+HXF$_ktoZfmdF!sWj-wcEH5d`X~SRY;XaeH`2vS0YQBJJ2YbYb89Ye zQ{-M_Z1m1kBmc{vwj!o>YwJ|NHwjS~U>$CQCbFPgTKDSwD)Rvk-aIwQ;`FfJD!>Sj z4zn(%cs0i`@2Z3>WYCZ!5~vw{lkS(0KP(`+-EZrA@#B!Ze^K4v2JTNq&PH6BxQt*@ zoUT#RLdqj2X#K~MN%`5}p>$q5n~jgyve+szDfs8xTq>w7Qa>e#t-SMvTv4!Tl<<7= z!Ic6kqg$8$!vRW9YJ_WM0he;fNFy(o+;L}1<3~)HwqJ)%#r8XhN6UfR5^8FUqgtKx zJIy;&YGxm!cU}rn-m=9dS4|O1h5pvg6rWuRGmCy!GaM6_ylM1C@VT}tZEc)#3n<+_ z1`y!UeZXLTO-@s(pl{PGzXI({!{gRrWj<~BTzX5E{ae8=M$Wnm`8PQoGP>wzTf)8^ zP&N!xMdg>Hn%KZ08g_2h3@+RZ|H<;ECeq? z68FMq;}@=wsLc45lq1=xW~4X+*DyB@P;E?jJ;m2|j2?2a; z(9Cm#V%lbn=i5Ao#-x2r4OjD&<~HY3#0br*D)*MYeN1((wofz_W1}}dQ&PPKf^@u z5l`l&@im*PK^d|tbE4?ulf!YVd_&&b+&_B+gvcqOOR#`3=z~LfomqLB?(ur{p?+X8 zxNW?7WZQ>0Dr&_%UV(aeJkKF2PoYzVOQ}CKlk3$k#0m`ZF6w$&Do(OW{``&VHDQD} zwlyvLe6p1Cfeeg8GW_q6FDIv6N+v$VrAL^QaZmCosF}OYiH9b4h?>^Mu^&Hlbg*>` zxvxpy0|~MB``EfOyWIhFqXno!aT}uGSyEO92|lKjn{VLVQx`wAOf2*r{Bvrd8~gFS z>j3*f_dTDKlH$sV&Moptb%sM$4$E%(MSk`!jObLS3*05jg;l@WxN!HNFmXPF4`cU4 zjFiW*?>_`VqOkS%Xf=I$3YrG9&qM8IMjOL2ImgRH=?sM?ZE4E#W{PLj9^(_8BBlbH zq-*kv$#t_-v~$b^4O`O23lZ|)#kSgkXw?I6T~V%c^3rJa8i* %m! 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 literal 0 HcmV?d00001 From 0866e3a1a44c191e85dfc03f2720d9bdf329be3f Mon Sep 17 00:00:00 2001 From: nileshnegi Date: Sun, 5 Apr 2026 15:18:36 -0500 Subject: [PATCH 23/24] Implement RCCL Inspector Plugin support --- .../backend/app/api/rccl_endpoints.py | 42 ++ .../app/collectors/inspector_collector.py | 201 +++++++ .../app/collectors/inspector_parser.py | 202 +++++++ .../backend/app/collectors/rccl_data_store.py | 57 +- .../cluster-mon/backend/app/core/config.py | 10 + cvs/monitors/cluster-mon/backend/app/main.py | 2 + .../backend/app/models/rccl_models.py | 58 ++ .../tests/fixtures/inspector_sample.jsonl | 7 + .../backend/tests/test_inspector_parser.py | 377 ++++++++++++ .../cluster-mon/config/cluster.yaml.example | 7 + cvs/monitors/cluster-mon/frontend/src/App.tsx | 2 + .../src/components/Layout/Sidebar.tsx | 3 +- .../src/pages/RCCLPerformancePage.tsx | 549 ++++++++++++++++++ .../cluster-mon/frontend/src/services/api.ts | 8 + 14 files changed, 1521 insertions(+), 4 deletions(-) create mode 100644 cvs/monitors/cluster-mon/backend/app/collectors/inspector_collector.py create mode 100644 cvs/monitors/cluster-mon/backend/app/collectors/inspector_parser.py create mode 100644 cvs/monitors/cluster-mon/backend/tests/fixtures/inspector_sample.jsonl create mode 100644 cvs/monitors/cluster-mon/backend/tests/test_inspector_parser.py create mode 100644 cvs/monitors/cluster-mon/frontend/src/pages/RCCLPerformancePage.tsx diff --git a/cvs/monitors/cluster-mon/backend/app/api/rccl_endpoints.py b/cvs/monitors/cluster-mon/backend/app/api/rccl_endpoints.py index 3573ede8..57def3d3 100644 --- a/cvs/monitors/cluster-mon/backend/app/api/rccl_endpoints.py +++ b/cvs/monitors/cluster-mon/backend/app/api/rccl_endpoints.py @@ -79,6 +79,48 @@ async def get_rccl_events( } +@router.get("/performance") +async def get_rccl_performance() -> dict: + """ + Latest Inspector performance snapshot. + Returns bandwidth stats across all ranks from the most recent poll cycle. + Returns 503 when Inspector collector is disabled or has not run yet. + """ + from app.main import app_state + from fastapi import Response + import time + + data_store = getattr(app_state, 'rccl_data_store', None) + if data_store is None: + raise HTTPException(status_code=503, detail="Data store not initialized") + + snapshot = await data_store.get_inspector_current() + if snapshot is None: + raise HTTPException( + status_code=503, + detail="No Inspector snapshot available. Check that rccl.inspector.enabled=true and a job is running.", + ) + return snapshot + + +@router.get("/performance/history") +async def get_rccl_performance_history( + count: int = Query(50, ge=1, le=500, description="Number of snapshots to return"), +) -> dict: + """ + Recent Inspector performance snapshots for time-series charting. + Returns up to `count` snapshots, newest first. + """ + from app.main import app_state + + data_store = getattr(app_state, 'rccl_data_store', None) + if data_store is None: + return {"snapshots": []} + + snapshots = await data_store.get_inspector_snapshots(count=count) + return {"snapshots": snapshots, "count": len(snapshots)} + + @router.post("/markers", status_code=201) async def post_rccl_marker(marker: RCCLMarker) -> dict[str, str]: """ diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/inspector_collector.py b/cvs/monitors/cluster-mon/backend/app/collectors/inspector_collector.py new file mode 100644 index 00000000..d09cf57b --- /dev/null +++ b/cvs/monitors/cluster-mon/backend/app/collectors/inspector_collector.py @@ -0,0 +1,201 @@ +""" +InspectorCollector — reads RCCL Inspector JSONL log files and pushes snapshots. + +Two collection modes: + - "file": reads directly from an NFS path visible to the CVS backend (primary) + - "ssh": reads via SSH exec_async, using the existing JumpHostPssh/Pssh manager + +The Inspector plugin writes one file per process: + /-pid.log + +This collector glob-matches all *.log files in dump_dir (file mode) or +runs `tail -n ` on each compute node (ssh mode). + +critical = False — Inspector failure never affects overall cluster health status. +""" + +import asyncio +import logging +from pathlib import Path +from typing import Any, Optional + +from app.collectors.base import BaseCollector, CollectorResult, CollectorState +from app.collectors.inspector_parser import InspectorParser, aggregate_snapshot +from app.models.rccl_models import InspectorCollPerf, InspectorSnapshot + +logger = logging.getLogger(__name__) + + +class InspectorCollector(BaseCollector): + """ + Polls RCCL Inspector log files every poll_interval seconds. + + File mode (default): + Reads all *.log files from rccl.inspector.dump_dir via the local + filesystem. Use this when dump_dir is on a shared NFS mount visible + from the CVS backend host. + + SSH mode: + For each healthy node, runs `tail -n /-pid*.log` + via exec_async. Use this when NFS is not available. + """ + + name = "inspector" + poll_interval: int = 30 + collect_timeout: float = 20.0 + critical = False + + def __init__(self): + self._parser = InspectorParser() + + async def collect(self, ssh_manager) -> CollectorResult: + from app.core.config import settings + + cfg = settings.rccl.inspector + if not cfg.enabled: + return CollectorResult( + collector_name=self.name, + timestamp=CollectorResult.now_iso(), + state=CollectorState.NO_SERVICE, + data={}, + error="Inspector collector is disabled (rccl.inspector.enabled=false)", + ) + + try: + if cfg.mode == "ssh": + records = await self._collect_ssh(ssh_manager, cfg) + else: + records = self._collect_file(cfg) + except Exception as e: + logger.error(f"InspectorCollector unexpected error: {e}", exc_info=True) + return CollectorResult( + collector_name=self.name, + timestamp=CollectorResult.now_iso(), + state=CollectorState.ERROR, + data={}, + error=str(e), + ) + + snapshot = aggregate_snapshot(records) + snapshot_dict = snapshot.model_dump() + + # Push to data store if available + from app.main import app_state + data_store = getattr(app_state, 'rccl_data_store', None) + if data_store is not None: + await data_store.push_inspector_snapshot(snapshot_dict) + + return CollectorResult( + collector_name=self.name, + timestamp=CollectorResult.now_iso(), + state=CollectorState.OK, + data=snapshot_dict, + ) + + # ------------------------------------------------------------------ + # File mode + # ------------------------------------------------------------------ + + def _collect_file(self, cfg) -> list[InspectorCollPerf]: + """Read all *.log files in dump_dir from the local/NFS filesystem.""" + if not cfg.dump_dir: + logger.warning("Inspector file mode: rccl.inspector.dump_dir is not set") + return [] + + dump_path = Path(cfg.dump_dir) + if not dump_path.exists(): + logger.warning(f"Inspector dump_dir does not exist: {dump_path}") + return [] + + records: list[InspectorCollPerf] = [] + log_files = list(dump_path.glob("*.log")) + if not log_files: + logger.debug(f"Inspector: no *.log files found in {dump_path}") + return [] + + for log_file in log_files: + file_records = self._parser.parse_file(log_file, tail=cfg.max_records_per_file) + records.extend(file_records) + logger.debug(f"Inspector: parsed {len(file_records)} records from {log_file.name}") + + logger.info(f"Inspector file mode: {len(records)} records from {len(log_files)} files") + return records + + # ------------------------------------------------------------------ + # SSH mode + # ------------------------------------------------------------------ + + def _active_pids(self) -> set[int]: + """ + Extract PIDs of currently active RCCL ranks from the latest rcclras snapshot. + Returns an empty set when no job is running or rcclras hasn't connected yet. + """ + from app.main import app_state + snapshot = getattr(app_state, 'latest_rccl_snapshot', None) + if not snapshot: + return set() + pids: set[int] = set() + for comm in snapshot.get('communicators', []): + for rank in comm.get('ranks', []): + pid = rank.get('pid') + if pid: + pids.add(pid) + return pids + + async def _collect_ssh(self, ssh_manager, cfg) -> list[InspectorCollPerf]: + """Collect from each compute node via SSH tail. + + When active PIDs are known from the rcclras snapshot, only log files + belonging to those PIDs are read — stale files from previous runs in + the same dump_dir are ignored. + Falls back to reading all *-pid*.log files when no snapshot is available. + """ + if not cfg.dump_dir: + logger.warning("Inspector SSH mode: rccl.inspector.dump_dir is not set") + return [] + + active_pids = self._active_pids() + + if active_pids: + # Build a grep pattern so only files for the current job are read. + # Example: grep -E 'pid(3404720|3404721|...)\.log$' + pid_pattern = "|".join(f"pid{p}" for p in sorted(active_pids)) + cmd = ( + f"ls {cfg.dump_dir}/ 2>/dev/null " + f"| grep -E '({pid_pattern})\\.log$' " + f"| xargs -I{{}} tail -n {cfg.max_records_per_file} {cfg.dump_dir}/{{}} " + f"2>/dev/null || true" + ) + logger.debug(f"Inspector SSH: filtering to {len(active_pids)} active PIDs") + else: + # No rcclras snapshot yet — read all pid log files as fallback + cmd = ( + f"tail -n {cfg.max_records_per_file} " + f"{cfg.dump_dir}/*-pid*.log 2>/dev/null || true" + ) + logger.debug("Inspector SSH: no active PIDs known, reading all log files") + + try: + outputs = await ssh_manager.exec_async(cmd) + except Exception as e: + logger.warning(f"Inspector SSH exec failed: {e}") + return [] + + records: list[InspectorCollPerf] = [] + for node, output in outputs.items(): + if not output: + continue + node_records = self._parser.parse_lines(output) + records.extend(node_records) + logger.debug(f"Inspector SSH: {len(node_records)} records from {node}") + + logger.info( + f"Inspector SSH mode: {len(records)} records from {len(outputs)} nodes" + + (f" (PIDs: {sorted(active_pids)})" if active_pids else " (all files)") + ) + return records + + +# Set poll_interval from config at import time (consistent with other collectors) +from app.core.config import settings as _settings +InspectorCollector.poll_interval = _settings.rccl.inspector.poll_interval diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/inspector_parser.py b/cvs/monitors/cluster-mon/backend/app/collectors/inspector_parser.py new file mode 100644 index 00000000..3cb5c3d0 --- /dev/null +++ b/cvs/monitors/cluster-mon/backend/app/collectors/inspector_parser.py @@ -0,0 +1,202 @@ +""" +Parser for RCCL Inspector plugin JSONL output (format version v4.0). + +Each line in an Inspector log file is one JSON object representing the +most recently completed collective for a communicator during a dump interval. +This is a "latest snapshot" model — not a complete event log. + +Reference: ext-profiler/inspector/inspector.cc (RCCL v2.28.3) +""" + +import json +import logging +from pathlib import Path +from typing import Optional + +from app.models.rccl_models import ( + InspectorCollPerf, + InspectorEventTrace, + InspectorKernelChannel, + InspectorSnapshot, +) + +logger = logging.getLogger(__name__) + + +class InspectorParser: + """ + Parse Inspector JSONL log files into InspectorCollPerf records. + + Usage: + parser = InspectorParser() + records = parser.parse_file(Path("/nfs/inspector-logs/gpu-node-01-pid12345.log")) + records = parser.parse_lines("line1\\nline2\\n...") + """ + + def parse_file(self, path: Path, tail: int = 100) -> list[InspectorCollPerf]: + """ + Read the last `tail` lines from an Inspector log file and parse them. + Only the tail is read to bound memory usage on long-running jobs. + """ + try: + text = path.read_text(errors="replace") + except OSError as e: + logger.warning(f"Inspector: cannot read {path}: {e}") + return [] + lines = text.splitlines() + return self.parse_lines("\n".join(lines[-tail:])) + + def parse_lines(self, text: str) -> list[InspectorCollPerf]: + """ + Parse a block of text (one JSON object per line). Malformed lines + are silently skipped with a debug-level log. + """ + records: list[InspectorCollPerf] = [] + for lineno, line in enumerate(text.splitlines(), start=1): + line = line.strip() + if not line: + continue + record = self._parse_line(line, lineno) + if record is not None: + records.append(record) + return records + + def _parse_line(self, line: str, lineno: int) -> Optional[InspectorCollPerf]: + try: + obj = json.loads(line) + except json.JSONDecodeError: + logger.debug(f"Inspector: skipping malformed JSON at line {lineno}") + return None + + try: + header = obj["header"] + meta = obj["metadata"] + perf = obj["coll_perf"] + return InspectorCollPerf( + timestamp=meta["dump_timestamp_us"] / 1_000_000.0, + comm_hash=header["id"], + rank=header["rank"], + nranks=header["n_ranks"], + nnodes=header["nnodes"], + hostname=meta["hostname"], + pid=meta["pid"], + collective=perf["coll"], + sequence_num=perf["coll_sn"], + msg_size_bytes=perf["coll_msg_size_bytes"], + exec_time_us=perf["coll_exec_time_us"], + timing_source=perf["coll_timing_source"], + algo_bw_gbps=float(perf["coll_algobw_gbs"]), + bus_bw_gbps=float(perf["coll_busbw_gbs"]), + event_trace=self._parse_event_trace(perf), + ) + except (KeyError, TypeError, ValueError) as e: + logger.debug(f"Inspector: skipping line {lineno} — missing field: {e}") + return None + + def _parse_event_trace(self, perf: dict) -> Optional[InspectorEventTrace]: + """ + Parse verbose event trace from coll_perf when NCCL_INSPECTOR_DUMP_VERBOSE=1. + event_trace_sn and event_trace_ts are both nested inside the coll_perf object. + Returns None if neither key is present (non-verbose mode). + """ + sn = perf.get("event_trace_sn") + ts = perf.get("event_trace_ts") + if sn is None and ts is None: + return None + # Guard against non-dict values (malformed verbose data) + if not isinstance(sn, dict): + sn = None + if not isinstance(ts, dict): + ts = None + if sn is None and ts is None: + return None + + try: + # Merge per-channel sn and ts by channel_id + sn_channels = {c["channel_id"]: c for c in (sn or {}).get("kernel_events", [])} + ts_channels = {c["channel_id"]: c for c in (ts or {}).get("kernel_events", [])} + all_ids = sorted(set(sn_channels) | set(ts_channels)) + + channels = [ + InspectorKernelChannel( + channel_id=ch_id, + kernel_start_sn=sn_channels.get(ch_id, {}).get("kernel_start_sn"), + kernel_stop_sn=sn_channels.get(ch_id, {}).get("kernel_stop_sn"), + kernel_record_sn=sn_channels.get(ch_id, {}).get("kernel_record_sn"), + kernel_start_ts=ts_channels.get(ch_id, {}).get("kernel_start_ts"), + kernel_stop_ts=ts_channels.get(ch_id, {}).get("kernel_stop_ts"), + kernel_record_ts=ts_channels.get(ch_id, {}).get("kernel_record_ts"), + ) + for ch_id in all_ids + ] + + return InspectorEventTrace( + coll_start_sn=(sn or {}).get("coll_start_sn"), + coll_stop_sn=(sn or {}).get("coll_stop_sn"), + coll_start_ts=(ts or {}).get("coll_start_ts"), + coll_stop_ts=(ts or {}).get("coll_stop_ts"), + channels=channels, + ) + except (KeyError, TypeError, ValueError) as e: + logger.debug(f"Inspector: skipping malformed event_trace: {e}") + return None + + +def aggregate_snapshot(records: list[InspectorCollPerf]) -> InspectorSnapshot: + """ + Aggregate a list of InspectorCollPerf records into an InspectorSnapshot. + + Stats (avg/min/max busBw, collective breakdown) are computed from ALL + records in the tail window, giving a richer sample for accuracy. + + The `records` field stored in the snapshot is deduplicated to the LATEST + entry per (rank, comm_hash) — one row per rank per communicator. This + prevents the frontend table and WebSocket payload from growing with the + tail window size (e.g. 500 lines × 8 files = 4000 rows → 8 rows). + + Zero-bandwidth records (exec_time_us == 0) are excluded from bandwidth + statistics since they indicate a timing fallback or tiny collective. + """ + import time + + # Stats over all records in the tail window + bw_records = [r for r in records if r.bus_bw_gbps > 0.0] + + avg_bw: Optional[float] = None + min_bw: Optional[float] = None + max_bw: Optional[float] = None + slowest_rank: Optional[int] = None + + if bw_records: + bws = [r.bus_bw_gbps for r in bw_records] + avg_bw = sum(bws) / len(bws) + min_bw = min(bws) + max_bw = max(bws) + slowest_rank = bw_records[bws.index(min_bw)].rank + + collective_breakdown: dict[str, int] = {} + for r in records: + collective_breakdown[r.collective] = collective_breakdown.get(r.collective, 0) + 1 + + ts = records[0].timestamp if records else time.time() + + # Deduplicate to latest record per (rank, comm_hash) by sequence_num. + # sequence_num is a monotonically increasing counter per communicator, + # so the highest value is the most recent collective. + latest: dict[tuple, InspectorCollPerf] = {} + for r in records: + key = (r.rank, r.comm_hash) + existing = latest.get(key) + if existing is None or r.sequence_num > existing.sequence_num: + latest[key] = r + display_records = sorted(latest.values(), key=lambda r: (r.rank, r.comm_hash)) + + return InspectorSnapshot( + timestamp=ts, + records=display_records, + avg_bus_bw_gbps=avg_bw, + min_bus_bw_gbps=min_bw, + max_bus_bw_gbps=max_bw, + slowest_rank=slowest_rank, + collective_breakdown=collective_breakdown, + ) diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/rccl_data_store.py b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_data_store.py index f622a9ab..480f2df4 100644 --- a/cvs/monitors/cluster-mon/backend/app/collectors/rccl_data_store.py +++ b/cvs/monitors/cluster-mon/backend/app/collectors/rccl_data_store.py @@ -19,13 +19,16 @@ # In-memory fallback caps (no Redis) _MEMORY_EVENT_MAX = 500 _MEMORY_SNAPSHOT_MAX = 100 +_MEMORY_INSPECTOR_MAX = 100 class RCCLDataStore: # Redis Streams — atomic append+cap in one command - SNAPSHOT_STREAM = "rccl:snapshots" # Stream, capped at 1000 entries - EVENT_STREAM = "rccl:events" # Stream, capped at 10000 entries - CURRENT_KEY = "rccl:current" # Hash, latest snapshot only + SNAPSHOT_STREAM = "rccl:snapshots" # Stream, capped at 1000 entries + EVENT_STREAM = "rccl:events" # Stream, capped at 10000 entries + CURRENT_KEY = "rccl:current" # Hash, latest snapshot only + INSPECTOR_STREAM = "rccl:inspector:snapshots" # Stream, capped at 1000 entries + INSPECTOR_CURRENT_KEY = "rccl:inspector:current" # Hash, latest Inspector snapshot def __init__(self, redis_client, snapshot_max: int = 1000, event_max: int = 10000): """ @@ -43,6 +46,8 @@ def __init__(self, redis_client, snapshot_max: int = 1000, event_max: int = 1000 self._mem_events: collections.deque[dict] = collections.deque(maxlen=_MEMORY_EVENT_MAX) self._mem_snapshots: collections.deque[dict] = collections.deque(maxlen=_MEMORY_SNAPSHOT_MAX) self._mem_current: Optional[dict] = None + self._mem_inspector_snapshots: collections.deque[dict] = collections.deque(maxlen=_MEMORY_INSPECTOR_MAX) + self._mem_inspector_current: Optional[dict] = None async def push_snapshot(self, snapshot: dict) -> None: """Atomically append snapshot to ring buffer and update current.""" @@ -112,6 +117,52 @@ def is_memory_capped(self) -> bool: """True when the in-memory event buffer has reached its maximum capacity.""" return self._r is None and len(self._mem_events) >= _MEMORY_EVENT_MAX + async def push_inspector_snapshot(self, snapshot: dict) -> None: + """Append an Inspector performance snapshot and update the current-key.""" + if self._r is None: + self._mem_inspector_snapshots.append(snapshot) + self._mem_inspector_current = snapshot + return + try: + payload = json.dumps(snapshot) + await self._r.xadd( + self.INSPECTOR_STREAM, + {"data": payload}, + maxlen=self._snapshot_max, + ) + await self._r.hset( + self.INSPECTOR_CURRENT_KEY, + mapping={"data": payload, "ts": str(snapshot.get("timestamp", ""))}, + ) + except Exception as e: + logger.warning(f"RCCLDataStore.push_inspector_snapshot failed (falling back to memory): {e}") + self._mem_inspector_snapshots.append(snapshot) + self._mem_inspector_current = snapshot + + async def get_inspector_current(self) -> Optional[dict]: + """Return the latest Inspector snapshot.""" + if self._r is None: + return self._mem_inspector_current + try: + result = await self._r.hget(self.INSPECTOR_CURRENT_KEY, "data") + if result: + return json.loads(result) + return None + except Exception as e: + logger.warning(f"RCCLDataStore.get_inspector_current failed: {e}") + return None + + async def get_inspector_snapshots(self, count: int = 50) -> list[dict]: + """Return the most recent N Inspector snapshots, newest first.""" + if self._r is None: + return list(reversed(list(self._mem_inspector_snapshots)))[:count] + try: + entries = await self._r.xrevrange(self.INSPECTOR_STREAM, count=count) + return [json.loads(e[1]["data"]) for e in entries] + except Exception as e: + logger.warning(f"RCCLDataStore.get_inspector_snapshots failed: {e}") + return [] + async def get_events_in_range(self, start_ts: float, end_ts: float) -> list[dict]: """Return events within a UTC timestamp range using stream entry IDs. In-memory results are sorted by timestamp to handle NTP clock adjustments.""" diff --git a/cvs/monitors/cluster-mon/backend/app/core/config.py b/cvs/monitors/cluster-mon/backend/app/core/config.py index 58203885..9a3c8b44 100644 --- a/cvs/monitors/cluster-mon/backend/app/core/config.py +++ b/cvs/monitors/cluster-mon/backend/app/core/config.py @@ -53,12 +53,22 @@ class StorageConfig(BaseModel): redis: RedisConfig = Field(default_factory=RedisConfig) +class InspectorConfig(BaseModel): + """Configuration for the RCCL Inspector plugin collector.""" + enabled: bool = False + mode: str = "file" # "file" (NFS) or "ssh" + dump_dir: Optional[str] = None # NFS path where Inspector writes .log files + poll_interval: int = 30 # seconds between collection cycles + max_records_per_file: int = 100 # tail last N lines per log file + + class RCCLConfig(BaseModel): """Forward-declaration for RCCL extension config. No runtime behaviour in base robustness spec.""" ras_port: int = 28028 poll_interval: int = 30 collective_timeout_secs: int = 10 debug_log_path: Optional[str] = None + inspector: InspectorConfig = Field(default_factory=InspectorConfig) class _YamlSource(PydanticBaseSettingsSource): diff --git a/cvs/monitors/cluster-mon/backend/app/main.py b/cvs/monitors/cluster-mon/backend/app/main.py index fc6c48eb..3cea4085 100644 --- a/cvs/monitors/cluster-mon/backend/app/main.py +++ b/cvs/monitors/cluster-mon/backend/app/main.py @@ -20,6 +20,7 @@ from app.collectors.gpu_collector import GPUMetricsCollector from app.collectors.nic_collector import NICMetricsCollector from app.collectors.rccl_collector import RCCLCollector +from app.collectors.inspector_collector import InspectorCollector from app.collectors.base import BaseCollector, CollectorResult, CollectorState from app.api import router as api_router @@ -130,6 +131,7 @@ def __init__(self): GPUMetricsCollector, NICMetricsCollector, RCCLCollector, + InspectorCollector, ] diff --git a/cvs/monitors/cluster-mon/backend/app/models/rccl_models.py b/cvs/monitors/cluster-mon/backend/app/models/rccl_models.py index 31183a00..96c97d4a 100644 --- a/cvs/monitors/cluster-mon/backend/app/models/rccl_models.py +++ b/cvs/monitors/cluster-mon/backend/app/models/rccl_models.py @@ -112,3 +112,61 @@ class RCCLMarker(BaseModel): loss: Optional[float] = None rank: int timestamp: str # ISO 8601 + + +# --------------------------------------------------------------------------- +# Inspector plugin models +# --------------------------------------------------------------------------- + +class InspectorKernelChannel(BaseModel): + """Per-channel kernel timing from NCCL_INSPECTOR_DUMP_VERBOSE=1.""" + channel_id: int + # Sequence numbers — monotonic counters across all profiler events + kernel_start_sn: Optional[int] = None + kernel_stop_sn: Optional[int] = None + kernel_record_sn: Optional[int] = None + # Raw timestamps — units depend on timing_source: + # kernel_gpu: GPU clock ticks (not directly convertible without clock freq) + # kernel_cpu / collective_cpu: microseconds + kernel_start_ts: Optional[int] = None + kernel_stop_ts: Optional[int] = None + kernel_record_ts: Optional[int] = None + + +class InspectorEventTrace(BaseModel): + """Verbose event trace from coll_perf.event_trace_sn / event_trace_ts.""" + coll_start_sn: Optional[int] = None + coll_stop_sn: Optional[int] = None + coll_start_ts: Optional[int] = None + coll_stop_ts: Optional[int] = None + channels: list[InspectorKernelChannel] = [] + + +class InspectorCollPerf(BaseModel): + """Single completed collective record from one Inspector JSONL line.""" + timestamp: float # dump_timestamp_us / 1e6 (Unix seconds) + comm_hash: str # header.id — communicator identity + rank: int # header.rank + nranks: int # header.n_ranks + nnodes: int # header.nnodes + hostname: str # metadata.hostname + pid: int # metadata.pid + collective: str # coll_perf.coll (e.g. "AllReduce") + sequence_num: int # coll_perf.coll_sn — monotonic counter per comm + msg_size_bytes: int # coll_perf.coll_msg_size_bytes + exec_time_us: int # coll_perf.coll_exec_time_us + timing_source: str # coll_perf.coll_timing_source + algo_bw_gbps: float # coll_perf.coll_algobw_gbs + bus_bw_gbps: float # coll_perf.coll_busbw_gbs + event_trace: Optional[InspectorEventTrace] = None # present only with NCCL_INSPECTOR_DUMP_VERBOSE=1 + + +class InspectorSnapshot(BaseModel): + """Aggregated Inspector data across all ranks collected in one poll cycle.""" + timestamp: float + records: list[InspectorCollPerf] + avg_bus_bw_gbps: Optional[float] = None + min_bus_bw_gbps: Optional[float] = None + max_bus_bw_gbps: Optional[float] = None + slowest_rank: Optional[int] = None + collective_breakdown: dict[str, int] = {} # collective name → count diff --git a/cvs/monitors/cluster-mon/backend/tests/fixtures/inspector_sample.jsonl b/cvs/monitors/cluster-mon/backend/tests/fixtures/inspector_sample.jsonl new file mode 100644 index 00000000..a9b17b81 --- /dev/null +++ b/cvs/monitors/cluster-mon/backend/tests/fixtures/inspector_sample.jsonl @@ -0,0 +1,7 @@ +{"header": {"id": "0x7f8c496ae9f661", "rank": 0, "n_ranks": 16, "nnodes": 2}, "metadata": {"inspector_output_format_version": "v4.0", "git_rev": "abc123def", "rec_mechanism": "nccl_profiler_interface", "dump_timestamp_us": 1711800000000000, "hostname": "gpu-node-01", "pid": 12345}, "coll_perf": {"coll": "AllReduce", "coll_sn": 4217, "coll_msg_size_bytes": 2097152, "coll_exec_time_us": 412, "coll_timing_source": "kernel_gpu", "coll_algobw_gbs": 193.6, "coll_busbw_gbs": 387.2}} +{"header": {"id": "0x7f8c496ae9f661", "rank": 1, "n_ranks": 16, "nnodes": 2}, "metadata": {"inspector_output_format_version": "v4.0", "git_rev": "abc123def", "rec_mechanism": "nccl_profiler_interface", "dump_timestamp_us": 1711800000000000, "hostname": "gpu-node-01", "pid": 12346}, "coll_perf": {"coll": "AllReduce", "coll_sn": 4217, "coll_msg_size_bytes": 2097152, "coll_exec_time_us": 445, "coll_timing_source": "kernel_gpu", "coll_algobw_gbs": 179.3, "coll_busbw_gbs": 358.6}} +{"header": {"id": "0x7f8c496ae9f661", "rank": 8, "n_ranks": 16, "nnodes": 2}, "metadata": {"inspector_output_format_version": "v4.0", "git_rev": "abc123def", "rec_mechanism": "nccl_profiler_interface", "dump_timestamp_us": 1711800000000000, "hostname": "gpu-node-02", "pid": 22345}, "coll_perf": {"coll": "AllReduce", "coll_sn": 4217, "coll_msg_size_bytes": 2097152, "coll_exec_time_us": 418, "coll_timing_source": "kernel_gpu", "coll_algobw_gbs": 191.0, "coll_busbw_gbs": 382.0}} +{"header": {"id": "0xaabbccdd11223344", "rank": 0, "n_ranks": 8, "nnodes": 1}, "metadata": {"inspector_output_format_version": "v4.0", "git_rev": "abc123def", "rec_mechanism": "nccl_profiler_interface", "dump_timestamp_us": 1711800005000000, "hostname": "gpu-node-01", "pid": 12345}, "coll_perf": {"coll": "ReduceScatter", "coll_sn": 891, "coll_msg_size_bytes": 524288, "coll_exec_time_us": 88, "coll_timing_source": "kernel_gpu", "coll_algobw_gbs": 47.8, "coll_busbw_gbs": 44.2}} +this line is malformed JSON and should be skipped silently +{"header": {"id": "0x7f8c496ae9f661", "rank": 2, "n_ranks": 16, "nnodes": 2}, "metadata": {"inspector_output_format_version": "v4.0", "git_rev": "abc123def", "rec_mechanism": "nccl_profiler_interface", "dump_timestamp_us": 1711800000000000, "hostname": "gpu-node-01", "pid": 12347}, "coll_perf": {"coll": "AllGather", "coll_sn": 102, "coll_msg_size_bytes": 131072, "coll_exec_time_us": 0, "coll_timing_source": "collective_cpu", "coll_algobw_gbs": 0.0, "coll_busbw_gbs": 0.0}} +{"header": {"id": "0x7f8c496ae9f661", "rank": 3, "n_ranks": 16, "nnodes": 2}, "metadata": {"inspector_output_format_version": "v4.0", "git_rev": "abc123def", "rec_mechanism": "nccl_profiler_interface", "dump_timestamp_us": 1711800000000000, "hostname": "gpu-node-02", "pid": 22346}, "coll_perf": {"coll": "AllReduce", "coll_sn": 4217, "coll_msg_size_bytes": 2097152, "coll_exec_time_us": 425, "coll_timing_source": "kernel_gpu", "coll_algobw_gbs": 187.4, "coll_busbw_gbs": 374.8, "event_trace_sn": {"coll_start_sn": 8430, "coll_stop_sn": 8445, "kernel_events": [{"channel_id": 0, "kernel_start_sn": 8431, "kernel_stop_sn": 8438, "kernel_record_sn": 8439}, {"channel_id": 1, "kernel_start_sn": 8432, "kernel_stop_sn": 8440, "kernel_record_sn": 8441}]}, "event_trace_ts": {"coll_start_ts": 1234567890, "coll_stop_ts": 1234568315, "kernel_events": [{"channel_id": 0, "kernel_start_ts": 1234567900, "kernel_stop_ts": 1234568200, "kernel_record_ts": 1234568210}, {"channel_id": 1, "kernel_start_ts": 1234567910, "kernel_stop_ts": 1234568300, "kernel_record_ts": 1234568310}]}}} diff --git a/cvs/monitors/cluster-mon/backend/tests/test_inspector_parser.py b/cvs/monitors/cluster-mon/backend/tests/test_inspector_parser.py new file mode 100644 index 00000000..84927b5a --- /dev/null +++ b/cvs/monitors/cluster-mon/backend/tests/test_inspector_parser.py @@ -0,0 +1,377 @@ +""" +Unit tests for InspectorParser and aggregate_snapshot. +""" + +import json +from pathlib import Path + +import pytest + +from app.collectors.inspector_parser import InspectorParser, aggregate_snapshot +from app.models.rccl_models import InspectorCollPerf, InspectorEventTrace + + +FIXTURE_PATH = Path(__file__).parent / "fixtures" / "inspector_sample.jsonl" + + +# --------------------------------------------------------------------------- +# parse_lines +# --------------------------------------------------------------------------- + +class TestParseLines: + def setup_method(self): + self.parser = InspectorParser() + + def test_parses_valid_allreduce_record(self): + line = json.dumps({ + "header": {"id": "0xabc", "rank": 0, "n_ranks": 8, "nnodes": 1}, + "metadata": { + "inspector_output_format_version": "v4.0", + "git_rev": "deadbeef", + "rec_mechanism": "nccl_profiler_interface", + "dump_timestamp_us": 1_711_800_000_000_000, + "hostname": "gpu-node-01", + "pid": 9999, + }, + "coll_perf": { + "coll": "AllReduce", + "coll_sn": 1, + "coll_msg_size_bytes": 1048576, + "coll_exec_time_us": 200, + "coll_timing_source": "kernel_gpu", + "coll_algobw_gbs": 5.0, + "coll_busbw_gbs": 9.375, + }, + }) + records = self.parser.parse_lines(line) + assert len(records) == 1 + r = records[0] + assert r.comm_hash == "0xabc" + assert r.rank == 0 + assert r.nranks == 8 + assert r.nnodes == 1 + assert r.hostname == "gpu-node-01" + assert r.pid == 9999 + assert r.collective == "AllReduce" + assert r.sequence_num == 1 + assert r.msg_size_bytes == 1048576 + assert r.exec_time_us == 200 + assert r.timing_source == "kernel_gpu" + assert r.algo_bw_gbps == pytest.approx(5.0) + assert r.bus_bw_gbps == pytest.approx(9.375) + assert r.timestamp == pytest.approx(1_711_800_000.0) + + def test_skips_malformed_json_silently(self): + text = "not json at all\n" + json.dumps({ + "header": {"id": "0x1", "rank": 0, "n_ranks": 2, "nnodes": 1}, + "metadata": {"dump_timestamp_us": 1000000, "hostname": "h", "pid": 1}, + "coll_perf": {"coll": "AllReduce", "coll_sn": 1, "coll_msg_size_bytes": 64, + "coll_exec_time_us": 10, "coll_timing_source": "kernel_gpu", + "coll_algobw_gbs": 1.0, "coll_busbw_gbs": 1.875}, + }) + records = self.parser.parse_lines(text) + assert len(records) == 1 + + def test_skips_missing_field_silently(self): + # Missing coll_perf entirely + line = json.dumps({"header": {"id": "0x1", "rank": 0}, "metadata": {}}) + records = self.parser.parse_lines(line) + assert records == [] + + def test_empty_text_returns_empty(self): + assert self.parser.parse_lines("") == [] + + def test_blank_lines_skipped(self): + assert self.parser.parse_lines("\n\n \n") == [] + + def test_timestamp_conversion(self): + """dump_timestamp_us is microseconds; should convert to Unix seconds.""" + line = json.dumps({ + "header": {"id": "0x1", "rank": 0, "n_ranks": 1, "nnodes": 1}, + "metadata": {"dump_timestamp_us": 2_000_000_000_000, "hostname": "h", "pid": 1}, + "coll_perf": {"coll": "AllReduce", "coll_sn": 1, "coll_msg_size_bytes": 64, + "coll_exec_time_us": 10, "coll_timing_source": "kernel_gpu", + "coll_algobw_gbs": 1.0, "coll_busbw_gbs": 1.875}, + }) + records = self.parser.parse_lines(line) + assert records[0].timestamp == pytest.approx(2_000_000.0) + + def test_zero_exec_time_record_parsed(self): + """Zero exec_time (timing fallback) should parse, not be skipped.""" + line = json.dumps({ + "header": {"id": "0x1", "rank": 0, "n_ranks": 1, "nnodes": 1}, + "metadata": {"dump_timestamp_us": 1000000, "hostname": "h", "pid": 1}, + "coll_perf": {"coll": "AllGather", "coll_sn": 5, "coll_msg_size_bytes": 128, + "coll_exec_time_us": 0, "coll_timing_source": "collective_cpu", + "coll_algobw_gbs": 0.0, "coll_busbw_gbs": 0.0}, + }) + records = self.parser.parse_lines(line) + assert len(records) == 1 + assert records[0].exec_time_us == 0 + assert records[0].bus_bw_gbps == 0.0 + + def test_multiple_valid_lines(self): + lines = [] + for rank in range(4): + lines.append(json.dumps({ + "header": {"id": "0xfeed", "rank": rank, "n_ranks": 4, "nnodes": 1}, + "metadata": {"dump_timestamp_us": 5_000_000_000_000, "hostname": f"node{rank}", "pid": rank + 100}, + "coll_perf": {"coll": "ReduceScatter", "coll_sn": 10, "coll_msg_size_bytes": 256, + "coll_exec_time_us": 50 + rank * 5, "coll_timing_source": "kernel_gpu", + "coll_algobw_gbs": 2.0, "coll_busbw_gbs": 1.875}, + })) + records = self.parser.parse_lines("\n".join(lines)) + assert len(records) == 4 + assert {r.rank for r in records} == {0, 1, 2, 3} + + +# --------------------------------------------------------------------------- +# parse_file +# --------------------------------------------------------------------------- + +class TestParseFile: + def setup_method(self): + self.parser = InspectorParser() + + def test_parses_fixture_file(self): + records = self.parser.parse_file(FIXTURE_PATH) + # fixture has 5 valid lines + 1 malformed + 1 zero-bw + # All valid JSON lines should parse (including zero-bw) + assert len(records) >= 4 + + def test_fixture_contains_allreduce_records(self): + records = self.parser.parse_file(FIXTURE_PATH) + collectives = {r.collective for r in records} + assert "AllReduce" in collectives + + def test_fixture_contains_multiple_hosts(self): + records = self.parser.parse_file(FIXTURE_PATH) + hosts = {r.hostname for r in records} + assert len(hosts) >= 2 # gpu-node-01 and gpu-node-02 + + def test_missing_file_returns_empty(self): + records = self.parser.parse_file(Path("/nonexistent/path/inspector.log")) + assert records == [] + + def test_tail_limits_records(self, tmp_path): + """tail=2 should only parse the last 2 lines.""" + lines = [] + for i in range(10): + lines.append(json.dumps({ + "header": {"id": "0x1", "rank": i, "n_ranks": 10, "nnodes": 1}, + "metadata": {"dump_timestamp_us": 1000000, "hostname": "h", "pid": i + 1}, + "coll_perf": {"coll": "AllReduce", "coll_sn": i, "coll_msg_size_bytes": 128, + "coll_exec_time_us": 10, "coll_timing_source": "kernel_gpu", + "coll_algobw_gbs": 1.0, "coll_busbw_gbs": 1.875}, + })) + log_file = tmp_path / "test.log" + log_file.write_text("\n".join(lines)) + records = self.parser.parse_file(log_file, tail=2) + assert len(records) == 2 + assert records[0].rank == 8 + assert records[1].rank == 9 + + +# --------------------------------------------------------------------------- +# aggregate_snapshot +# --------------------------------------------------------------------------- + +def _make_record(rank: int, bus_bw: float, collective: str = "AllReduce") -> InspectorCollPerf: + return InspectorCollPerf( + timestamp=1711800000.0, + comm_hash="0xtest", + rank=rank, + nranks=4, + nnodes=1, + hostname=f"node{rank}", + pid=1000 + rank, + collective=collective, + sequence_num=1, + msg_size_bytes=1048576, + exec_time_us=100 if bus_bw > 0 else 0, + timing_source="kernel_gpu", + algo_bw_gbps=bus_bw / 1.875, + bus_bw_gbps=bus_bw, + ) + + +class TestAggregateSnapshot: + def test_avg_min_max_computed(self): + records = [_make_record(i, bw) for i, bw in enumerate([300.0, 350.0, 400.0, 200.0])] + snap = aggregate_snapshot(records) + assert snap.avg_bus_bw_gbps == pytest.approx(312.5) + assert snap.min_bus_bw_gbps == pytest.approx(200.0) + assert snap.max_bus_bw_gbps == pytest.approx(400.0) + + def test_slowest_rank_identified(self): + records = [_make_record(i, bw) for i, bw in enumerate([300.0, 200.0, 350.0, 400.0])] + snap = aggregate_snapshot(records) + assert snap.slowest_rank == 1 # rank 1 has 200 GB/s + + def test_zero_bw_excluded_from_stats(self): + """Zero-bw records (exec_time=0) should not affect bandwidth statistics.""" + records = [ + _make_record(0, 300.0), + _make_record(1, 0.0), # timing fallback — excluded + _make_record(2, 400.0), + ] + snap = aggregate_snapshot(records) + assert snap.avg_bus_bw_gbps == pytest.approx(350.0) # (300+400)/2, not /3 + + def test_collective_breakdown_counts(self): + records = [ + _make_record(0, 300.0, "AllReduce"), + _make_record(1, 300.0, "AllReduce"), + _make_record(2, 200.0, "ReduceScatter"), + ] + snap = aggregate_snapshot(records) + assert snap.collective_breakdown["AllReduce"] == 2 + assert snap.collective_breakdown["ReduceScatter"] == 1 + + def test_empty_records_returns_valid_snapshot(self): + snap = aggregate_snapshot([]) + assert snap.avg_bus_bw_gbps is None + assert snap.min_bus_bw_gbps is None + assert snap.max_bus_bw_gbps is None + assert snap.slowest_rank is None + assert snap.collective_breakdown == {} + assert snap.records == [] + + def test_all_zero_bw_returns_none_stats(self): + records = [_make_record(i, 0.0) for i in range(3)] + snap = aggregate_snapshot(records) + assert snap.avg_bus_bw_gbps is None + assert snap.slowest_rank is None + + def test_records_deduplicated_to_latest_per_rank(self): + """records field should contain only the highest sequence_num per (rank, comm_hash).""" + def _make_seq(rank: int, seq: int, bw: float) -> InspectorCollPerf: + r = _make_record(rank, bw) + return r.model_copy(update={"sequence_num": seq}) + + records = [ + _make_seq(0, 10, 300.0), + _make_seq(0, 11, 320.0), # newer — should win + _make_seq(1, 10, 280.0), + _make_seq(1, 9, 260.0), # older — should lose + ] + snap = aggregate_snapshot(records) + # Only 2 display records (one per rank) + assert len(snap.records) == 2 + by_rank = {r.rank: r for r in snap.records} + assert by_rank[0].sequence_num == 11 + assert by_rank[1].sequence_num == 10 + # Stats still computed from all 4 records + assert snap.avg_bus_bw_gbps == pytest.approx((300 + 320 + 280 + 260) / 4) + + # ------------------------------------------------------------------ + # Verbose / event_trace tests + # ------------------------------------------------------------------ + +class TestVerboseParsing: + def setup_method(self): + self.parser = InspectorParser() + + def _verbose_line(self, rank=0, n_channels=2) -> str: + kernel_sn = [ + {"channel_id": ch, "kernel_start_sn": 100 + ch, "kernel_stop_sn": 110 + ch, "kernel_record_sn": 111 + ch} + for ch in range(n_channels) + ] + kernel_ts = [ + {"channel_id": ch, "kernel_start_ts": 1000 + ch * 100, "kernel_stop_ts": 1050 + ch * 100, "kernel_record_ts": 1051 + ch * 100} + for ch in range(n_channels) + ] + return json.dumps({ + "header": {"id": "0xverb", "rank": rank, "n_ranks": 4, "nnodes": 1}, + "metadata": {"dump_timestamp_us": 2_000_000_000_000, "hostname": f"node{rank}", "pid": rank + 1}, + "coll_perf": { + "coll": "AllReduce", "coll_sn": 1, "coll_msg_size_bytes": 1048576, + "coll_exec_time_us": 200, "coll_timing_source": "kernel_gpu", + "coll_algobw_gbs": 5.0, "coll_busbw_gbs": 9.375, + "event_trace_sn": {"coll_start_sn": 99, "coll_stop_sn": 120, "kernel_events": kernel_sn}, + "event_trace_ts": {"coll_start_ts": 900, "coll_stop_ts": 1200, "kernel_events": kernel_ts}, + }, + }) + + def test_non_verbose_record_has_no_event_trace(self): + line = json.dumps({ + "header": {"id": "0x1", "rank": 0, "n_ranks": 1, "nnodes": 1}, + "metadata": {"dump_timestamp_us": 1000000, "hostname": "h", "pid": 1}, + "coll_perf": {"coll": "AllReduce", "coll_sn": 1, "coll_msg_size_bytes": 64, + "coll_exec_time_us": 10, "coll_timing_source": "kernel_gpu", + "coll_algobw_gbs": 1.0, "coll_busbw_gbs": 1.875}, + }) + records = self.parser.parse_lines(line) + assert records[0].event_trace is None + + def test_verbose_record_has_event_trace(self): + records = self.parser.parse_lines(self._verbose_line()) + assert records[0].event_trace is not None + + def test_verbose_coll_level_sn_and_ts(self): + records = self.parser.parse_lines(self._verbose_line()) + et = records[0].event_trace + assert et.coll_start_sn == 99 + assert et.coll_stop_sn == 120 + assert et.coll_start_ts == 900 + assert et.coll_stop_ts == 1200 + + def test_verbose_channel_count(self): + records = self.parser.parse_lines(self._verbose_line(n_channels=3)) + assert len(records[0].event_trace.channels) == 3 + + def test_verbose_channel_fields(self): + records = self.parser.parse_lines(self._verbose_line(n_channels=2)) + ch0 = records[0].event_trace.channels[0] + assert ch0.channel_id == 0 + assert ch0.kernel_start_sn == 100 + assert ch0.kernel_stop_sn == 110 + assert ch0.kernel_record_sn == 111 + assert ch0.kernel_start_ts == 1000 + assert ch0.kernel_stop_ts == 1050 + assert ch0.kernel_record_ts == 1051 + + def test_verbose_channels_sorted_by_channel_id(self): + records = self.parser.parse_lines(self._verbose_line(n_channels=4)) + ids = [ch.channel_id for ch in records[0].event_trace.channels] + assert ids == sorted(ids) + + def test_fixture_contains_verbose_record(self): + records = InspectorParser().parse_file(FIXTURE_PATH) + verbose = [r for r in records if r.event_trace is not None] + assert len(verbose) >= 1 + assert verbose[0].event_trace.channels[0].channel_id == 0 + assert verbose[0].event_trace.channels[1].channel_id == 1 + + def test_malformed_event_trace_falls_back_to_none(self): + """Malformed event_trace content should not fail the whole record.""" + line = json.dumps({ + "header": {"id": "0x1", "rank": 0, "n_ranks": 1, "nnodes": 1}, + "metadata": {"dump_timestamp_us": 1000000, "hostname": "h", "pid": 1}, + "coll_perf": { + "coll": "AllReduce", "coll_sn": 1, "coll_msg_size_bytes": 64, + "coll_exec_time_us": 10, "coll_timing_source": "kernel_gpu", + "coll_algobw_gbs": 1.0, "coll_busbw_gbs": 1.875, + "event_trace_sn": "not_an_object", # malformed + }, + }) + records = self.parser.parse_lines(line) + assert len(records) == 1 + assert records[0].event_trace is None + + + def test_collective_breakdown_uses_all_records(self): + """collective_breakdown counts ALL records, not just deduplicated ones.""" + def _make_seq(rank: int, seq: int, coll: str) -> InspectorCollPerf: + r = _make_record(rank, 300.0, coll) + return r.model_copy(update={"sequence_num": seq}) + + records = [ + _make_seq(0, 1, "AllReduce"), + _make_seq(0, 2, "AllReduce"), # same rank, newer seq + _make_seq(1, 1, "ReduceScatter"), + ] + snap = aggregate_snapshot(records) + assert snap.collective_breakdown["AllReduce"] == 2 + assert snap.collective_breakdown["ReduceScatter"] == 1 + assert len(snap.records) == 2 # deduplicated diff --git a/cvs/monitors/cluster-mon/config/cluster.yaml.example b/cvs/monitors/cluster-mon/config/cluster.yaml.example index 73cdbb2a..eefa06af 100644 --- a/cvs/monitors/cluster-mon/config/cluster.yaml.example +++ b/cvs/monitors/cluster-mon/config/cluster.yaml.example @@ -37,3 +37,10 @@ cluster: poll_interval: 30 collective_timeout_secs: 10 debug_log_path: null + + inspector: + enabled: false # set to true when an RCCL job is running with Inspector plugin + mode: ssh # "ssh" (remote NFS, default) or "file" (local NFS) + dump_dir: null # NFS path: e.g. /nfs/shared/inspector-logs/ + poll_interval: 10 # seconds between collection cycles + max_records_per_file: 500 # tail last N lines per .log file diff --git a/cvs/monitors/cluster-mon/frontend/src/App.tsx b/cvs/monitors/cluster-mon/frontend/src/App.tsx index e5818d9d..d58f5faf 100644 --- a/cvs/monitors/cluster-mon/frontend/src/App.tsx +++ b/cvs/monitors/cluster-mon/frontend/src/App.tsx @@ -12,6 +12,7 @@ import { LogsPage } from './pages/LogsPage' import { RCCLHealthPage } from './pages/RCCLHealthPage' import { RCCLTopologyPage } from './pages/RCCLTopologyPage' import { RCCLTimelinePage } from './pages/RCCLTimelinePage' +import { RCCLPerformancePage } from './pages/RCCLPerformancePage' import { NodeDetailsModal } from './components/NodeDetailsModal' function App() { @@ -32,6 +33,7 @@ function App() { } /> } /> } /> + } /> diff --git a/cvs/monitors/cluster-mon/frontend/src/components/Layout/Sidebar.tsx b/cvs/monitors/cluster-mon/frontend/src/components/Layout/Sidebar.tsx index ae18d3f2..3c940f45 100644 --- a/cvs/monitors/cluster-mon/frontend/src/components/Layout/Sidebar.tsx +++ b/cvs/monitors/cluster-mon/frontend/src/components/Layout/Sidebar.tsx @@ -1,5 +1,5 @@ import { NavLink } from 'react-router-dom' -import { LayoutDashboard, Settings, Cpu, Network, Activity, Package, HardDrive, Share2, FileText, Clock, GitFork } from 'lucide-react' +import { LayoutDashboard, Settings, Cpu, Network, Activity, Package, HardDrive, Share2, FileText, Clock, GitFork, Zap } from 'lucide-react' import { cn } from '@/utils/cn' const mainNav = [ @@ -17,6 +17,7 @@ const rcclNav = [ { name: 'RCCL Health', href: '/rccl-health', icon: Activity }, { name: 'RAS Topology', href: '/rccl-topology', icon: GitFork }, { name: 'Timeline', href: '/rccl-timeline', icon: Clock }, + { name: 'Performance', href: '/rccl-performance', icon: Zap }, ] function NavItem({ name, href, icon: Icon }: { name: string; href: string; icon: React.ElementType }) { diff --git a/cvs/monitors/cluster-mon/frontend/src/pages/RCCLPerformancePage.tsx b/cvs/monitors/cluster-mon/frontend/src/pages/RCCLPerformancePage.tsx new file mode 100644 index 00000000..e160ca7e --- /dev/null +++ b/cvs/monitors/cluster-mon/frontend/src/pages/RCCLPerformancePage.tsx @@ -0,0 +1,549 @@ +import { useEffect, useState, useCallback, useRef } from 'react' +import { RefreshCw, Zap, TrendingDown, BarChart3, Clock, ChevronDown, ChevronRight, Info, Filter } from 'lucide-react' +import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/Card' +import { api } from '@/services/api' + +interface KernelChannel { + channel_id: number + kernel_start_sn: number | null + kernel_stop_sn: number | null + kernel_record_sn: number | null + kernel_start_ts: number | null + kernel_stop_ts: number | null + kernel_record_ts: number | null +} + +interface EventTrace { + coll_start_sn: number | null + coll_stop_sn: number | null + coll_start_ts: number | null + coll_stop_ts: number | null + channels: KernelChannel[] +} + +interface CollPerf { + timestamp: number + comm_hash: string + rank: number + nranks: number + nnodes: number + hostname: string + pid: number + collective: string + sequence_num: number + msg_size_bytes: number + exec_time_us: number + timing_source: string + algo_bw_gbps: number + bus_bw_gbps: number + event_trace: EventTrace | null +} + +interface InspectorSnapshot { + timestamp: number + records: CollPerf[] + avg_bus_bw_gbps: number | null + min_bus_bw_gbps: number | null + max_bus_bw_gbps: number | null + slowest_rank: number | null + collective_breakdown: Record +} + +const POLL_INTERVAL_MS = 15000 + +function fmt(n: number | null | undefined, decimals = 1): string { + if (n == null) return '—' + return n.toFixed(decimals) +} + +function fmtBytes(bytes: number): string { + if (bytes >= 1024 * 1024 * 1024) return (bytes / (1024 ** 3)).toFixed(1) + ' GB' + if (bytes >= 1024 * 1024) return (bytes / (1024 ** 2)).toFixed(1) + ' MB' + if (bytes >= 1024) return (bytes / 1024).toFixed(1) + ' KB' + return bytes + ' B' +} + +function BwBar({ value, max, slowest }: { value: number; max: number; slowest: boolean }) { + const pct = max > 0 ? Math.round((value / max) * 100) : 0 + const color = slowest ? 'bg-red-500' : value / max >= 0.8 ? 'bg-green-500' : 'bg-yellow-500' + return ( +

+
+
+
+ {fmt(value)} GB/s +
+ ) +} + +function ChannelRows({ et }: { et: EventTrace }) { + return ( +
+

+ Per-channel kernel trace ({et.channels.length} channel{et.channels.length !== 1 ? 's' : ''}) +

+ + + + + + + + + + + + + + {et.channels.map((ch) => { + // start_ts and stop_ts are CPU epoch timestamps in µs (from inspectorGetTime). + // Diff is already in µs — no clock-tick conversion needed. + const diff = ch.kernel_start_ts != null && ch.kernel_stop_ts != null + ? ch.kernel_stop_ts - ch.kernel_start_ts + : null + return ( + + + + + + + + + + ) + })} + +
channel_idxstart_eventstop_eventrecord_eventstart_timestampend_timestampduration (µs)
{ch.channel_id}{ch.kernel_start_sn ?? '—'}{ch.kernel_stop_sn ?? '—'}{ch.kernel_record_sn ?? '—'}{ch.kernel_start_ts ?? '—'}{ch.kernel_stop_ts ?? '—'}{diff ?? '—'}
+
+ ) +} + +export function RCCLPerformancePage() { + const [snapshot, setSnapshot] = useState(null) + const [loading, setLoading] = useState(true) + const [error, setError] = useState(null) + const [lastFetch, setLastFetch] = useState(null) + const [expandedRows, setExpandedRows] = useState>(new Set()) + const [selectedPids, setSelectedPids] = useState>(new Set()) + const [pidDropdownOpen, setPidDropdownOpen] = useState(false) + const pidDropdownRef = useRef(null) + const [fetchProgress, setFetchProgress] = useState(null) + const progressTimerRef = useRef | null>(null) + + const startProgress = useCallback(() => { + if (progressTimerRef.current) clearInterval(progressTimerRef.current) + setFetchProgress(0) + let current = 0 + progressTimerRef.current = setInterval(() => { + // Exponential ease-out: fast early, slows near 85% ceiling + current += (85 - current) * 0.12 + setFetchProgress(current) + }, 80) + }, []) + + const completeProgress = useCallback(() => { + if (progressTimerRef.current) { + clearInterval(progressTimerRef.current) + progressTimerRef.current = null + } + setFetchProgress(100) + setTimeout(() => setFetchProgress(null), 350) + }, []) + + const fetchData = useCallback(async () => { + startProgress() + try { + const data = await api.getRCCLPerformance() as InspectorSnapshot + setSnapshot(data) + setError(null) + } catch (e: any) { + const msg = e.message || 'Unknown error' + if (msg.includes('503')) { + setError('Inspector not active. Ensure rccl.inspector.enabled=true and an RCCL job is running.') + } else { + setError(msg) + } + setSnapshot(null) + } finally { + setLoading(false) + setLastFetch(Date.now()) + completeProgress() + } + }, [startProgress, completeProgress]) + + useEffect(() => { + fetchData() + const id = setInterval(fetchData, POLL_INTERVAL_MS) + return () => { + clearInterval(id) + if (progressTimerRef.current) clearInterval(progressTimerRef.current) + } + }, [fetchData]) + + // Reset PID filter when snapshot changes (new job may have different PIDs) + useEffect(() => { + setSelectedPids(new Set()) + }, [snapshot?.timestamp]) + + // Close dropdown on outside click + useEffect(() => { + function handleClick(e: MouseEvent) { + if (pidDropdownRef.current && !pidDropdownRef.current.contains(e.target as Node)) { + setPidDropdownOpen(false) + } + } + document.addEventListener('mousedown', handleClick) + return () => document.removeEventListener('mousedown', handleClick) + }, []) + + const toggleRow = (key: string) => { + setExpandedRows(prev => { + const next = new Set(prev) + next.has(key) ? next.delete(key) : next.add(key) + return next + }) + } + + const allPids = snapshot + ? [...new Set(snapshot.records.map(r => r.pid))].sort((a, b) => b - a) + : [] + + const filteredRecords = snapshot + ? (selectedPids.size === 0 ? snapshot.records : snapshot.records.filter(r => selectedPids.has(r.pid))) + : [] + + const togglePid = (pid: number) => { + setSelectedPids(prev => { + const next = new Set(prev) + next.has(pid) ? next.delete(pid) : next.add(pid) + return next + }) + } + + const hasVerbose = snapshot?.records.some(r => r.event_trace !== null) ?? false + const maxBw = snapshot?.max_bus_bw_gbps ?? 0 + + const isFetching = fetchProgress !== null + + return ( +
+ {/* Header */} +
+
+

RCCL Performance

+

Inspector plugin — per-collective bandwidth & latency

+
+ +
+ + {/* Progress bar — visible during fetch */} +
+
+
+ + {loading && ( +
Loading Inspector data...
+ )} + + {error && !loading && ( +
+ {error} +
+ )} + + {snapshot && ( + <> + {/* Summary cards */} +
+ + +
+ +
+

Avg Bus BW

+

{fmt(snapshot.avg_bus_bw_gbps)}

+

GB/s

+
+
+
+
+ + + +
+ +
+

Min Bus BW

+

{fmt(snapshot.min_bus_bw_gbps)}

+

GB/s

+
+
+
+
+ + + +
+ +
+

Max Bus BW

+

{fmt(snapshot.max_bus_bw_gbps)}

+

GB/s

+
+
+
+
+ + + +
+ +
+

Slowest Rank

+

+ {snapshot.slowest_rank != null ? `Rank ${snapshot.slowest_rank}` : '—'} +

+

straggler

+
+
+
+
+
+ +
+ {/* Collective breakdown */} + + + Collective Breakdown + + + {Object.keys(snapshot.collective_breakdown).length === 0 ? ( +

No data

+ ) : ( + + + + + + + + + {Object.entries(snapshot.collective_breakdown) + .sort(([, a], [, b]) => b - a) + .map(([coll, count]) => ( + + + + + ))} + +
CollectiveCount
{coll}{count}
+ )} +
+
+ + {/* Snapshot metadata */} + + + Snapshot Info + + +
+ Timestamp + {new Date(snapshot.timestamp * 1000).toLocaleTimeString()} +
+
+ Total Records + {snapshot.records.length} +
+ {snapshot.records.length > 0 && ( + <> +
+ Ranks Reporting + {new Set(snapshot.records.map(r => r.rank)).size} +
+
+ Nodes + {new Set(snapshot.records.map(r => r.hostname)).size} +
+ + )} + {lastFetch && ( +
+ Last Fetched + {new Date(lastFetch).toLocaleTimeString()} +
+ )} +
+
+
+ + {/* Per-rank bandwidth table */} + + +
+ Per-Rank Bandwidth + {/* PID multi-select filter */} + {allPids.length > 1 && ( +
+ + + {pidDropdownOpen && ( +
+
+ Filter by PID + {selectedPids.size > 0 && ( + + )} +
+ {allPids.map(pid => ( + + ))} +
+ )} +
+ )} +
+
+ + {/* Verbose tip */} + {!hasVerbose && ( +
+ + + Tip: Set NCCL_INSPECTOR_DUMP_VERBOSE=1 to + enable per-channel kernel timing. Click any row to expand channel data. + +
+ )} + +
+ + + + + + + + + + + + + + + + + {filteredRecords + .slice() + .sort((a, b) => a.rank - b.rank || b.pid - a.pid) + .map((r) => { + const key = `${r.rank}-${r.comm_hash}-${r.pid}` + const expanded = expandedRows.has(key) + const canExpand = r.event_trace !== null + return ( + <> + canExpand && toggleRow(key)} + > + + + + + + + + + + + + {canExpand && expanded && ( + + + + )} + + ) + })} + +
RankPIDHostCollectiveMsg SizeExec (µs)TimingChannelsBus BW
+ {canExpand + ? (expanded ? : ) + : + } + + + {r.rank} + + {r.pid}{r.hostname}{r.collective}{fmtBytes(r.msg_size_bytes)}{r.exec_time_us}{r.timing_source} + {r.event_trace ? r.event_trace.channels.length : N/A} + + +
+ +
+ {filteredRecords.length === 0 && ( +

+ {snapshot.records.length === 0 + ? 'No rank records in this snapshot' + : `No records for selected PID${selectedPids.size > 1 ? 's' : ''}`} +

+ )} +
+
+
+ + )} +
+ ) +} diff --git a/cvs/monitors/cluster-mon/frontend/src/services/api.ts b/cvs/monitors/cluster-mon/frontend/src/services/api.ts index 07fc399c..6be7779f 100644 --- a/cvs/monitors/cluster-mon/frontend/src/services/api.ts +++ b/cvs/monitors/cluster-mon/frontend/src/services/api.ts @@ -132,6 +132,14 @@ class ApiClient { async getCollectorsStatus() { return this.request('/collectors/status') } + + async getRCCLPerformance() { + return this.request('/rccl/performance') + } + + async getRCCLPerformanceHistory(count = 50) { + return this.request(`/rccl/performance/history?count=${count}`) + } } export const api = new ApiClient(API_BASE_URL) From fd544116812267b6a79c835a75a9a5ec9aaa162b Mon Sep 17 00:00:00 2001 From: nileshnegi Date: Sun, 5 Apr 2026 16:28:52 -0500 Subject: [PATCH 24/24] Updated Technical Report with RCCL Inspector --- .../cvs_rccl_monitoring_technical_report.md | 178 ++++++++++++++++-- .../images/rccl_perf_channel_breakdown.png | Bin 0 -> 426014 bytes .../collectors/images/rccl_perf_overview.png | Bin 0 -> 414625 bytes 3 files changed, 158 insertions(+), 20 deletions(-) create mode 100755 cvs/monitors/cluster-mon/backend/app/collectors/images/rccl_perf_channel_breakdown.png create mode 100755 cvs/monitors/cluster-mon/backend/app/collectors/images/rccl_perf_overview.png diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/cvs_rccl_monitoring_technical_report.md b/cvs/monitors/cluster-mon/backend/app/collectors/cvs_rccl_monitoring_technical_report.md index 61694eb6..dafea394 100644 --- a/cvs/monitors/cluster-mon/backend/app/collectors/cvs_rccl_monitoring_technical_report.md +++ b/cvs/monitors/cluster-mon/backend/app/collectors/cvs_rccl_monitoring_technical_report.md @@ -1,8 +1,9 @@ # CVS Cluster-Mon: RCCL Monitoring Extension -> **Date:** 2026-03-29 -> **Branch:** `users/nileshnegi/add-rcclras-support` -> **Status:** Tested with 1-node and 2-nodes on Ruby MI350 cluster +> **Date:** 2026-04-05 +> **Branch:** `users/nileshnegi/add-rcclras-inspector-support` +> **Status:** rcclras health monitoring tested on Ruby MI350 cluster (1-node, 2-node) +> **Status:** RCCL Inspector performance monitoring tested on CV350 MI350 cluster --- @@ -10,15 +11,30 @@ Large-scale distributed training and inference jobs using RCCL often suffer from opaque failure modes: hangs from communicator deadlocks, silent performance degradation from degraded network links, segfaults from GPU memory errors, and cascading failures when a single node becomes unresponsive. Today, users have no unified way to observe RCCL's internal state during a live job — they resort to ad-hoc NCCL_DEBUG log analysis after the fact, losing critical temporal context. -NCCL ships a built-in RAS (Reliability, Availability, Serviceability) subsystem that exposes communicator health, peer mesh connectivity, and lifecycle events through a dedicated TCP service (ncclras). +NCCL ships a built-in RAS (Reliability, Availability, Serviceability) subsystem that exposes communicator health, peer mesh connectivity, and lifecycle events through a dedicated TCP service (`ncclras`). RCCL inherits this subsystem as `rcclras`, but no tooling exists to leverage it for continuous monitoring, correlation with system-level metrics (GPU health, RDMA errors, kernel logs), or integration with application-level signals (training step progression, loss curves). -RCCL inherits this subsystem `rcclras`, but no tooling exists to leverage it for continuous monitoring, correlation with system-level metrics (GPU health, RDMA errors, kernel logs), or integration with application-level signals (training step progression, loss curves). +A second observability gap exists on the performance side. Even when a job is healthy — all ranks alive, no dead peers — it may still run slower than expected due to a single straggler rank bottlenecking the collective. NCCL ships a profiler plugin interface (`nccl_profiler.h`) and a reference implementation called the Inspector plugin (`ext-profiler/inspector/`) that records per-collective bandwidth and latency to disk as JSONL files. RCCL v2.28.3 ships the Inspector plugin as well. However, no tooling exists to continuously read these files, surface the per-rank bandwidth breakdown, and correlate it with health events from rcclras — users must manually inspect raw log files after the fact. --- ## What does this "CVS RCCL Monitoring Extension" do? -CVS `cluster-mon` can now monitor live RCCL jobs in real time by connecting directly to the `rcclras` TCP service that runs inside every RCCL process on the cluster. When a rank dies, hangs, or loses connectivity, the dashboard reflects it within one poll cycle — no log parsing, no application-level timeout required. +CVS `cluster-mon` can now monitor live RCCL jobs in real time across two complementary channels: + +**Health monitoring via `rcclras`:** Connects directly to the `rcclras` TCP service embedded in every RCCL process. When a rank dies, hangs, or loses connectivity, the dashboard reflects it within one poll cycle — no log parsing, no application-level timeout required. + +**Performance monitoring via the `RCCL Inspector plugin`:** Reads JSONL files produced by the RCCL Inspector profiler plugin (`ext-profiler/inspector/`) to surface per-collective bus bandwidth, algorithm bandwidth, and latency — broken down by rank. Identifies stragglers (the slowest rank relative to peers) automatically. + +These two channels are complementary, not competing: + +| Capability | rcclras | Inspector | +|---|---|---| +| Rank alive / dead / missing | Yes | No | +| Dead peer detection | Yes | No | +| Per-collective bus bandwidth (GB/s) | No | Yes | +| Per-collective latency (µs) | No | Yes | +| Straggler rank identification | No | Yes | +| Message size per collective | No | Yes | Based on a cursory search, this is the only open-source tool that uses the RAS interface for RCCL/NCCL monitoring. Industry practice relies on post-mortem log analysis and training-side watchdog timeouts. Neither gives users visibility into communicator state while the job is still running. @@ -44,6 +60,54 @@ The server streams the response in two bursts. It sends the header and job summa --- +## Background: What is the `RCCL Inspector Plugin` + +The Inspector plugin is a profiler plugin shipped with RCCL v2.28.3 at `ext-profiler/inspector/`. It hooks into RCCL's profiler interface (`nccl_profiler.h`, `ncclProfiler_v5`) and records timing data for every completed collective operation. + +**Activation** is entirely via environment variables — no changes to the training script or RCCL source are required: + +```bash +NCCL_PROFILER_PLUGIN=/path/to/librccl-profiler-inspector.so +(or) +NCCL_PROFILER_PLUGIN=inspector +LD_LIBRARY_PATH=/path/to/dir/containing/librccl-profiler-inspector.so:$LD_LIBRARY_PATH + +NCCL_INSPECTOR_ENABLE=1 +NCCL_INSPECTOR_DUMP_THREAD_INTERVAL_MICROSECONDS=1000000 # 1 s recommended +NCCL_INSPECTOR_DUMP_DIR=/path/to/shared/inspector-logs +``` + +**Output format:** one JSONL file per process, named `-pid.log`. Each line is one JSON object representing the most recently completed collective for a communicator during a dump interval ("latest snapshot" model — not a complete event log): + +```json +{ + "header": { "id": "0x7f8c496ae9f661", "rank": 0, "n_ranks": 16, "nnodes": 2 }, + "metadata": { "inspector_output_format_version": "v4.0", "dump_timestamp_us": 1711800000000000, + "hostname": "gpu-node-01", "pid": 12345 }, + "coll_perf": { + "coll": "AllReduce", "coll_sn": 4217, "coll_msg_size_bytes": 2097152, + "coll_exec_time_us": 412, "coll_timing_source": "kernel_gpu", + "coll_algobw_gbs": 193.6, "coll_busbw_gbs": 387.2 + } +} +``` + +**Bandwidth formulas** (verified against NCCL-tests documentation): + +| Collective | algBw | busBw factor | +|---|---|---| +| AllReduce | `msgBytes / execTime` | `2*(n-1)/n` | +| AllGather, ReduceScatter | `msgBytes*nranks / execTime` | `(n-1)/n` | +| Reduce, Broadcast, Send, Recv | `msgBytes / execTime` | 1 | + +**Timing source hierarchy:** GPU clock (`kernel_gpu`) > CPU kernel timing (`kernel_cpu`) > CPU collective timing (`collective_cpu`). + +**GPU clock units:** AMD `wall_clock64()` / HIP `clock64()` runs at **100 MHz (10 ns per tick)**, not 1 GHz. The Inspector converts ticks to µs as `ticks / 100`. Using `/ 1000` (treating ticks as nanoseconds) would produce exec times 10× too small and bandwidth 10× too large. + +**Graceful degradation:** RCCL's `src/plugin/profiler.cc` catches any Inspector init failure and continues without profiling — the job always proceeds regardless of Inspector state. + +--- + ## Architecture ``` @@ -53,17 +117,23 @@ rcclras :28028 (IPv6 loopback, each compute node) ▼ RCCLRasClient ── VERBOSE STATUS ──► RCCLTextParser │ - RCCLSnapshot - │ - ┌───────────────────┼───────────────────┐ - ▼ ▼ ▼ - Redis Streams app_state /ws/rccl - (ring buffer) latest_rccl_snapshot WebSocket - │ - REST API ──► Frontend (3 pages) + RCCLSnapshot ──────────────────────────────┐ + │ │ active PIDs + ┌───────────────────┼───────────────────┐ ▼ + ▼ ▼ ▼ InspectorCollector + Redis Streams app_state /ws/rccl (SSH exec_async) + (ring buffer) latest_rccl_snapshot WebSocket │ + │ InspectorParser + REST API ──► Frontend (4 pages) │ + InspectorSnapshot + │ + ┌───────────────────┤ + ▼ ▼ + Redis Streams /api/rccl/ + rccl:inspector:* performance ``` -**Collector cadence:** 30-second poll interval. The collector tries each healthy node in turn until it finds one with an active rcclras listener on port 28028. One successful response per cycle is sufficient — all ranks within a job report to the same rcclras instance. +**Collector cadence:** 30-second poll interval for rcclras; 10-second poll interval for Inspector. The rcclras collector tries each healthy node in turn until it finds one with an active listener on port 28028. One successful response per cycle is sufficient — all ranks within a job report to the same rcclras instance. **State machine:** The collector tracks job state across polls. @@ -106,13 +176,48 @@ The parser determines job state from the parsed data: `NO_JOB` if no valid outpu - **State transfer on config reload:** when configuration is reloaded and the collector is restarted, the previous `job_state` is copied to the new instance — same reason. - **Timeout handling:** if the outer `asyncio.wait_for` fires, `on_collect_timeout()` updates the state machine to UNREACHABLE so the next cycle doesn't start from a stale state. +### InspectorCollector + +`BaseCollector` subclass polling on a 10-second cycle (`critical = False` — Inspector failure never affects the overall cluster health status). Two collection modes: + +**File mode** (`mode: file`): reads `*.log` files directly from a locally-mounted NFS path. Zero SSH overhead. Requires the Inspector `dump_dir` to be visible from the CVS backend host. + +**SSH mode** (`mode: ssh`): runs `tail -n ` on each compute node via `exec_async`. Used when NFS is not available. When the rcclras snapshot is present, only log files matching active PIDs are read — stale files from previous runs in the same `dump_dir` are ignored automatically. Falls back to reading all `*-pid*.log` files when no snapshot is available (e.g., before rcclras has connected). + +The Inspector plugin names log files using the result of `gethostname()`, which is typically the FQDN (e.g., `cv350-zts-gtu-g31a-18.prov.gtu.zts.cpe.ice.amd.com-pid3404720.log`). The glob pattern uses `*-pid*.log` to avoid short-hostname vs. FQDN mismatches. + +### InspectorParser + +JSONL parser for the RCCL Inspector v4.0 output format. Reads the tail of each log file (bounded by `max_records_per_file`, default 500) and parses each line independently — malformed lines are skipped silently at DEBUG level. Produces `InspectorCollPerf` records. + +`aggregate_snapshot()` computes bandwidth statistics (avg/min/max busBw, straggler rank) from the full tail window, then deduplicates the `records` field to the **latest entry per (rank, comm_hash)** by `sequence_num` before storing. This keeps the WebSocket payload and frontend table bounded to one row per rank regardless of tail window size. + +#### Bugs fixed in Inspector v2.28.3 (branch `users/nileshnegi/rccl/inspector-fixes`) + +Five bugs in the Inspector plugin prevented it from producing valid output on RCCL v2.28.3. All five were diagnosed and fixed: + +| # | Bug | Root Cause | Fix | +|---|---|---|---| +| 1 | **Log files always empty** (`inspector_plugin.cc`) | `ncclTaskColl::nChannels` is uninitialized at allocation (`ncclMemoryPoolAlloc` does not zero memory). Garbage value (224) made the dump condition `nKernelChCompleted == nChannels` unsatisfiable — no collective ever completed. | Add `collStopFired` flag to `inspectorCollInfo`. Trigger dump when `collStopFired && nKernelChCompleted == nKernelChStarted == nChannels`. Initialize `nChannels = 0` at allocation in `enqueue.cc` so `scheduleCollTasksToPlan` overwrites it with the correct value before the profiler reads it. | +| 2 | **Teardown hang** (`src/transport/profiler.cc`) | `profilerProxyProgress` polled GPU counters indefinitely during teardown for channels that were never dispatched to GPU. The proxy thread never marked those channels done, blocking RCCL teardown. | Detect teardown (`proxyState->progressState.stop`) and drain: skip Start+Stop for channels whose GPU start counter was never written; skip Stop for channels whose GPU stop counter was never written. | +| 3 | **Zero bandwidth / garbage exec time** (`inspector.cc`) | `calculateMaxKernelExecTimeUsecs` iterated `for (i = 0; i < nChannels; i++)` using the same garbage `nChannels = 224`. Channels 57–223 had uninitialized `tsStartUsec` / `tsCompletedUsec` (random memory values), producing a spuriously large max exec time. | Normalize `collInfo->nChannels = collInfo->nKernelChStarted` and `collEvtTrk.nChannels = nKernelChStarted` before calling `inspectorUpdateCollPerf`, so the timing loop and JSON dump loop iterate only over channels that actually fired. | +| 4 | **GPU bandwidth 10× too large** (`inspector.cc`) | `calculateKernelGpuExecTimeUsecs` computed `execTimeNanosecs / 1000` treating AMD `wall_clock64()` ticks as 1 GHz nanoseconds. AMD GPU hardware timer runs at **100 MHz (10 ns/tick)**, so the correct divisor is 100, not 1000. | Change `execTimeNanosecs / 1000` to `ticks / 100`. Verified: reported busBw (387–388 GB/s) matches rccl-tests output (386 GB/s) within noise. | +| 5 | **Channels under-counted in dump** (`inspector_plugin.cc` + `enqueue.cc`) | The dump fired when `nKernelChCompleted == nKernelChStarted`, but some channels' GPU start counters are written to host memory slightly later than others. The dump fired on the first batch (e.g. 43 of 48), freeing `collInfo`. Remaining channels found a freed (zeroed) `parentObj` and became no-ops. | Fix 1's `enqueue.cc` change restores the correct `nChannels = 48` so the dump condition correctly waits for all channels. `collStopFired` ensures the dump never fires before CollStop is recorded. | + +#### Remaining known bugs (not fixed — low impact for CVS use) + +| Bug | Impact | +|---|---| +| ReduceScatter `trafficSize` may be inflated by `nranks` | busBw for ReduceScatter may be wrong; verify on cluster before alerting | +| Unsigned underflow in collective CPU fallback: no guard on `tsCompletedUsec < tsStartUsec` | Very unlikely (requires clock going backwards); produces garbage large value if it occurs | + ### RCCLDataStore Dual-mode storage backend: | Mode | When | Storage | Capacity | |------|------|---------|----------| -| **Redis Streams** | Redis available | `rccl:snapshots`, `rccl:events` | 1 000 snapshots, 10 000 events | -| **In-memory deque** | No Redis / Redis error | `collections.deque` | 500 events, 100 snapshots | +| **Redis Streams** | Redis available | `rccl:snapshots`, `rccl:events`, `rccl:inspector:snapshots` | 1 000 snapshots, 10 000 events each | +| **In-memory deque** | No Redis / Redis error | `collections.deque` | 500 events, 100 snapshots, 100 Inspector snapshots | Redis mode uses `XADD ... MAXLEN` — atomic append and cap in a single command. Time-range event queries use Redis Stream entry IDs (millisecond timestamps embedded). The in-memory fallback activates automatically if Redis is unavailable or throws an exception mid-operation. @@ -125,6 +230,8 @@ Redis mode uses `XADD ... MAXLEN` — atomic append and cap in a single command. | `GET /api/rccl/communicators/{hash}` | Single communicator detail | | `GET /api/rccl/events?since=&until=&type=` | Time-filtered event log. Returns `{events, truncated}` — `truncated: true` when the in-memory buffer is at capacity and older events may be missing | | `POST /api/rccl/markers` | PyTorch training step/loss callback. Stores as `training_marker` event | +| `GET /api/rccl/performance` | Latest Inspector snapshot: avg/min/max busBw, straggler rank, per-rank table, collective breakdown. Returns 503 when Inspector is disabled or no data yet | +| `GET /api/rccl/performance/history?count=N` | Up to N recent Inspector snapshots for time-series charting (max 500) | | `WebSocket /ws/rccl` | Real-time snapshot push on every collector cycle | ### Frontend Pages @@ -135,6 +242,12 @@ Redis mode uses `XADD ... MAXLEN` — atomic append and cap in a single command. **Timeline** — chronological event log with type filter (job_start, job_end, degraded, recovered, etc.) and time-range selector. Shows `from_state → to_state` for state-change events and step/loss for training markers. +**RCCL Performance** — Inspector data view. Shows avg/min/max bus bandwidth summary cards, collective breakdown table (call count per collective type), and a per-rank bandwidth table with a proportional bar chart. The slowest rank (straggler) is highlighted in red. Polls `/api/rccl/performance` every 15 seconds. Shows a descriptive 503 message when Inspector is not active. + +Each rank row is expandable to show the **per-channel kernel trace** (requires `NCCL_INSPECTOR_DUMP_VERBOSE=1`). Columns: `channel_idx`, `start_event` / `stop_event` / `record_event` (monotonic sequence numbers across all profiler events for the collective, showing relative ordering), `start_timestamp` / `end_timestamp` (CPU epoch µs from `gettimeofday`, recorded when the proxy thread observed the GPU counter), and `duration (µs)` (end − start, already in µs — no clock-tick conversion applied). + +Note on min busBw: the summary card min and slowest-rank are computed over **all records in the tail window**, not just the latest per rank. Warmup collectives (cold GPU on first iteration) typically appear in the tail and produce a low min — this is expected and does not indicate a genuine straggler. + --- ## RCCL Health — Live Screenshots @@ -151,7 +264,21 @@ One rank dropped mid-job. rcclras identifies the exact rank (Rank 7), GPU (GPU 7 --- -## Known Limitations (rcclras v2.28.3) +## RCCL Performance — Live Screenshots + +### Performance Overiew +RCCL Performance Summary (min/max/avg bus_bandwidth, straggler rank(s), and collective breakdown) + +![RCCL Performance - Overview](images/rccl_perf_overview.png) + +### Channel Breakdown +When run with `NCCL_INSPECTOR_DUMP_VERBOSE=1`, RCCL Inspector plugin can record channel count and GPU timing events per channel. + +![RCCL Performance - Channel Breakdown](images/rccl_perf_channel_breakdown.png) + +--- + +## Known Limitations — rcclras v2.28.3 **Single communicator group visible.** rcclras v2.28.3 exposes only the communicator group that rank 0 belongs to. A job using 8 independent communicator groups across 16 GPUs will show only one group. Full multi-group visibility is expected in a later rcclras version. @@ -161,11 +288,21 @@ One rank dropped mid-job. rcclras identifies the exact rank (Rank 7), GPU (GPU 7 --- +## Known Limitations — RCCL Inspector v2.28.3 + +**Activation requires job-side configuration.** The Inspector plugin must be built from RCCL source (`make` in `ext-profiler/inspector/`) and enabled via env vars in the job submission script (`NCCL_PROFILER_PLUGIN=inspector`, `NCCL_INSPECTOR_ENABLE=1`, `NCCL_INSPECTOR_DUMP_DIR=`). CVS reads the output files; it cannot enable the plugin retroactively. + +**Latest-snapshot sampling model.** The Inspector writes only the most recently completed collective per communicator per dump interval — not a complete event log. Collectives that finish between two dump wakeups are overwritten and lost. The dump interval is a sampling rate, not a capture window. A 1 s interval (1 000 000 µs) gives one fresh record per second per rank, which is sufficient for bandwidth trending in a 30 s CVS poll cycle. + +**dump_dir accumulates stale files.** Files from previous runs persist in the same `dump_dir` until manually cleaned. CVS mitigates this by filtering to PIDs known from the current rcclras snapshot; when rcclras is unavailable, all files are read and deduplicated by `sequence_num`. + +--- + ## Testing Tested cluster-mon with long-running RCCL-Tests on 1-node and 2-nodes of Ruby MI350 cluster and introducing artificial chaos (e.g. killing a rccl-tests process). CVS backend/frontend app running on local laptop could directly connect to Ruby cluster compute nodes running RCCL. -Unit-Tests: 82 tests across 9 files. Coverage includes: BaseCollector lifecycle (timeout, crash, ConnectionError, supervisor restart), Pydantic config defaults and environment variable overrides, SSH bridge (bidirectional data, EOF propagation), collectors/status API, RAS protocol client against a mock TCP server, text parser against 4 fixture files (healthy, single-node degraded, 2-node degraded with heterogeneous `7-8` ranks-per-node range, connection reset), RCCL collector state machine (all 20 transitions, bootstrap, no-duplicate-event on unchanged state), WebSocket ConnectionManager, and config reload diff detection. +Unit-Tests: 103 tests across 10 files. Coverage includes: BaseCollector lifecycle (timeout, crash, ConnectionError, supervisor restart), Pydantic config defaults and environment variable overrides, SSH bridge (bidirectional data, EOF propagation), collectors/status API, RAS protocol client against a mock TCP server, text parser against 4 fixture files (healthy, single-node degraded, 2-node degraded with heterogeneous `7-8` ranks-per-node range, connection reset), RCCL collector state machine (all 20 transitions, bootstrap, no-duplicate-event on unchanged state), WebSocket ConnectionManager, config reload diff detection, and Inspector parser (JSONL parsing, malformed-line skipping, timestamp conversion, tail limiting, `aggregate_snapshot` avg/min/max/straggler/deduplication/collective breakdown). --- @@ -173,6 +310,7 @@ Unit-Tests: 82 tests across 9 files. Coverage includes: BaseCollector lifecycle | Phase | Scope | |-------|-------| -| **2** | Switch to JSON output (rcclras v2.28.9)
Prometheus `/metrics` endpoint
InfluxDB long-term storage (structured data pipeline) | +| **2** | Switch rcclras to JSON output (rcclras v2.28.9)
Prometheus `/metrics` endpoint
InfluxDB long-term storage (structured data pipeline) | | **3** | Persistent `MONITOR` mode (rcclras v2.29.2) for push-based event streaming (eliminates polling)
Per-rank structured error parsing | | **4** | `/api/rccl/preflight` for Slurm prolog health gate
Slurm job ID correlation
Grafana dashboard templates
Snapshot replay for post-mortem analysis | +| **Inspector** | Bandwidth time-series charts on the Performance page (history endpoint already exists)
Per-communicator breakdown when multiple communicators are active
Alert threshold when straggler busBw falls >50% below the mean | diff --git a/cvs/monitors/cluster-mon/backend/app/collectors/images/rccl_perf_channel_breakdown.png b/cvs/monitors/cluster-mon/backend/app/collectors/images/rccl_perf_channel_breakdown.png new file mode 100755 index 0000000000000000000000000000000000000000..05a5e899f90c8cef7efd250f0b29f4fb19ffe359 GIT binary patch literal 426014 zcmeEubyS;6*DrOUP(zB93a&+hOG^bSPH<}jL4v!(fdVbw;O_1c970P85*!j-TAToZ zU=4c1`QC4>Z}o8Q{r9eQ@3R*2$jt1S+55L`X1*vZN|W5CzD-0#L?SEmMwN(&^o)q; zI`Zaq!js6ix(b9pmmE~3rHD%VXjch0S503jydom1h#)@xaE)+(%T`9)fl#XL{O3}K zO};S^(OHh{n^)?t2J6!vdf^B39osH%ZVrCt=&9rv5H4Pb28}Z<4IpU2h~&F`2!Zua zbXJH!o+SJS5Jb@=DUnZifh>uUk?iXmZI#SfdOAnL>6~N=gZ_?rcd@B7>_Gz-)3S+a zK~C?rNKkBeG{tifsJP%d6Al@S%6o8nPUJtYVBe33%l~{#c;b5&`1a^A_Yj`)!q+U9 zIoLExUjL>fQqFGg_(Uy#!B@6QY+#NHo)aGZwz>Cj6y5v|zp%{9`>zPCU39TLyLonT zC*EHDX?RfyqV&&Cj)^aPLw5g@&!vmr_&)R7;=bqwk@B1W-SbAV zeOweNFgm1A^*qes5{q3L7(Swcs+?i(69*iQ3eEo$4QwBt<4BY>$7Ler=pW}m;*u9F zv@zSF=-u)cj`;TIcD#^&x3IOgfpZM9Xl;HIXNf6LG}tV(v0-fI00zBNBTII$rbu%O zKFf@$NGxmp+PC%-QY=?Vld15uEWf29m6cIU#`{vz-f-f}fFBHO0s@1MeqsLWY@(f6 zR_tzWZk;=~q{p=q6zfs%YgSjN+L^NBL*ptPl<_#c)i9W(lD>GVF{?E9xI(H8LWQYg zzZx24CFuh~wdz+%wW!gHg2a6~mK@dESZ{=xsP#Rpb^-aI_|aHr^BaH?Z9y+;6WU0z z<@FI<>0+44KX}CU$_fF8TCHLq&}3hGF511HL18iN5iFrkmHh&=r3oE+Ku+_pxD>#5?O z%b{*0kSf{I!B>$wp(N|5r@z@{<35s1 z@>^Hg-QLuFg(Kmx?3ggapE;(?VVf=c`xC902%r2Ve}xP}n5#c7Um7U_Hv3L8a;kiz zKZtHdhEQW^KG1Srz2PRQJF3+aS*d;LDdMBVzU5cEcRuObQS~;@1DJ`bG|GMHIlg^? z6n#pm`pgSeRuM9FgH!#5?CYs)PIf_Zu5xOs{PqKx=k|XzNJOOUc%Ps_=A31|46Ji; zqCOxb<~vCW@aoLMR3Xr8GrU!V0L4zV&&kphT@YhepKgktJ%uWn(2}_mehDmvtkw8l z7PT;B2|d0YgZ{+8%Bu2VGR{H=o?5u*l_bJD8&-3~o_?=GZA?j?9LzDJM7=lkCaV7n zN6Z3Wr@S+wQbi~Dfs}vs+`Nj##uQ&xmGD0Z>vImVyMw^ zt)6@P$fe89++k=m(ax(6go!Imt190Ck?2swRpHX)Za&Jp&W)$oa+89RRVfimJkI0l zoif&)RM?bI+cj^MU}T_Tp6T~npwSwbKTh|?0nSeAZL~xzen%j8E0nH`Yk|@0(}3ei zU?LVc^FmlnC)tnEtMruw9k8S!!~*7~GH-g-%txxwj_IF7zd4^rT{e}!K!@h`pDV15 zfUW6sn2l*&$9#PV7JTO}(DOa|L1t$pOlR-sJvWJ1>6=^c0=P%`PL6kG9?L>w zEG-(5rUO@d`=`=ETH@1xdNnPo98uWx>;D?-KH&Ebgx9=bq7K?rBdz2cPIN|gD_kRv z3A)}X*j;UGx@@FVM;~pI{+A(#nz8zlhflvtB2Jxgz8I2u%#YhETWA#j?m24rkKS&6 ze#A*Hsyx%*J3^1hc=q}42~%DlQd#?%q{OV!sFC=qQGrLg)_gd#AaSf;Ek(qH<4T7T zs^=||%$;AIM|atLU5ℑ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 N=geXhaRH7L*wZCe=1T(_#oo1|Jy8~ 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

jqavzN{BI-ZY&`r3|k}dXrzE_=I|SKQKl6Bv$s^ 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 !zzexWvA)L15 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%0Dn?9Q? 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

Tj^4EtF!E^d2nuPvqs-TH#!mc$L`Ife`>?g~ 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

Wz(e);2c2LV;UR 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⪙m};$g7)Zu?#_U&HKtKn!&->IvEq zQ)xnNvPE1mSx9dq#rA$^L4lUlbTDvWAKj*!*_6%wT2mThv8jt9%=UbCV9_}izHJF3 zwIslg*gGAkSJg5KuqKX?QEl$Tp5H9=oIIM5cw_NfGW#{UYk-RfV<;3}>aG$deMa{F zh=Yvf`iB2&-B4g8EG#F>X=rIkFp;*lk5VrWLMaeu}+4aR`k~h@Uxxs6=ni86|Ps z3qgviGQ@y-BNhhK^b22<(D9~dU|<#l0H##bR1fl+UjPp)EC3_mN_=FHBjVL4;K@VE ziIcKuT)p#)12PWe$C36}T*RhGg`M~IXp-T3GyFN<9rI`BhtCd)tu8ozzIKxDwhK4D zs0XXvcva#B0fyhj-mR=}-=O`1*$&7is^{-(%XA6i{lddmOAyP*0rS7)#xPMh+nR^% zY$$pJ<|qC1mSVK~mG38+h#4`D?cp#K~&5dG!vwS;7M88hLHsr&#pW6RdPnpp%pFL6X0zU@dn>Rg5#x=ynaH9|g9Quf zL{0?blRwnJwuSeNYSbqEeZFn8=;LbC#kVRz!38^#3@f=fIY}U!e4zbw<24S(wY9G7 z$Et6BPa1MSn83ADm)~~ar{>WCH3FQE6Yx7I6ohnAakU?!?_7#r?}AjC0wXH08tOg8 z8SXL)^J9T{D;a=9z8Ie|fn|ck{-s|gUGrueK&N|v9d4WMQK&_gv^~!@c9O>fm0k_O zT8_(`6G_GioZ9~TfaMxQE42Vv6yRP{QdU*|(#KHDY$+ZTk-mLPRG&TV`Vl*agT@ue zUiUAMq__274dxfR(Vatw}J*ni?4I-li^3j*pMil`n3hXVkwrL@awgv7sN-f(Uq3vZ?3briupt_elI- zSO4c{x(NglnJEH+2c+K27{Lw+YLO_d3~*Qv3GOn)#HPhQ@p}Pi=L! zzGfVj{_uzMX31Rvu>8y_?f)=?DvjQ*(jx+Af&z3ApP9BuDY)>T1b_dtq5gg!7Tfl6 zqA2QLj+J8qa0i@l%{)5Ny)9wOv9U2h!!_-&gn$43_N`mMpXxs}()NADtACr_6!z*r ry#6X@>oVy5|NoIykNuw>g7lhL#RK|Gx3!!M103=)%F-p0CV~G4`QD=O literal 0 HcmV?d00001

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