Skip to content

6. PODsys Metrics

podsys-metrics is a high-performance system monitoring tool for real-time collection of CPU, memory, disk, network (Ethernet/InfiniBand), and NVIDIA GPU performance metrics. It supports both standalone and cluster monitoring modes, with a Web dashboard for cluster-wide visualization.

6.1 Features

  • CPU Monitoring: User mode, system mode, IO wait, idle time utilization statistics
  • Memory Monitoring: Memory usage, cache, buffer statistics
  • Disk Monitoring: Disk read/write I/O statistics (throughput + IOPS)
  • Network Monitoring:
    • Ethernet interface send/receive statistics
    • InfiniBand port traffic statistics
  • GPU Monitoring: NVIDIA GPU utilization, memory usage, temperature, power consumption, frequency, NVLink bandwidth
  • CUDA Information: GPU device details and compute capability detection
  • Cluster Web Dashboard: Real-time charts (Chart.js) and tables for multi-node visualization
  • Data Persistence: JSONL format per node per module for historical analysis

6.2 Architecture

┌─────────┐      ┌──────────┐
│ server  │─────▶│ client 1 │
│ (Web)   │─────▶│ client 2 │
│         │─────▶│ client N │
└─────────┘      └──────────┘
ComponentBinaryRequiresDescription
Clientpodsys-metrics-clientCUDA + NVMLRuns on compute nodes, collects metrics
Serverpodsys-metrics-serverC++17 onlyRuns on management node, Web UI + data persistence

6.3 Standalone Usage

After deploying compute nodes using PODsys, the podsys-metrics-client binary is located at /podsys/scripts/podsys-metrics-client on all compute nodes.

Log in to any compute node and run directly:

bash
# Monitor GPU, JSON output, run 100 times
/podsys/scripts/podsys-metrics-client gpu -j -d 100

# Monitor CPU and memory simultaneously
/podsys/scripts/podsys-metrics-client cpu mem

# Monitor all modules
/podsys/scripts/podsys-metrics-client all

Monitoring Modules

ModuleDescription
cpuCPU usage
memMemory usage
diskDisk I/O, space, inode
ethEthernet traffic
ibInfiniBand traffic
gpuGPU utilization, memory, temperature, power, frequency
cudaCUDA device info (standalone only)
allAll modules

Command Options

OptionDescription
-j, --jsonOutput in JSON format
-d, --duration <num>Number of iterations (default: 9999)
-h, --helpDisplay help information

6.4 Cluster Monitoring

Start Daemon on Compute Nodes

Use PDSH to start the daemon on all compute nodes from the management node:

bash
# Start daemon on all nodes (background mode)
pdsh -R ssh -w ^hosts.txt "/podsys/scripts/podsys-metrics-client daemon -p 9001 -f"

# Or start without background (for testing)
pdsh -R ssh -w ^hosts.txt "/podsys/scripts/podsys-metrics-client daemon -p 9001"

Note

  • hosts.txt contains the IP addresses of all compute nodes (generated by install_progress.sh)
  • Default daemon port is 9001
  • Use -f flag to run in background (fork mode)

Start Server on Management Node

The podsys-metrics-server binary is located at podsys-bxx/scripts/podsys-metrics-server on the management node.

bash
cd podsys-bxx/
./scripts/podsys-metrics-server -i hosts.txt <modules...> [options]

Parameters:

ParameterDescriptionDefault
-i, --iplist <file>Node IP list file (required)-
<modules>Monitoring modules (cpu, mem, gpu, disk, eth, ib, or all)-
-d, --duration <num>Number of iterations1
--server-port <port>Server listen port9000
--client-port <port>Client daemon port9001
--http-port <port>Web UI port8080
--data-dir <dir>Data output directory./data
--tableEnable terminal table output (disabled by default)off
--host <addr>Bind address0.0.0.0

Usage Examples

bash
# Monitor all modules for 10 minutes
./scripts/podsys-metrics-server -i hosts.txt all -d 600

# Monitor CPU, memory, GPU for 10 iterations
./scripts/podsys-metrics-server -i hosts.txt cpu mem gpu -d 10

# Monitor GPU with custom Web port
./scripts/podsys-metrics-server -i hosts.txt gpu --http-port 9090

# Enable terminal table output alongside Web UI
./scripts/podsys-metrics-server -i hosts.txt gpu -d 100 --table

Web Dashboard

After starting the server, open http://<manager-ip>:8080 in a browser:

  • Node List: Left sidebar shows all connected compute nodes
  • Module Tabs: Switch between GPU / CPU / Memory / Disk / Ethernet / InfiniBand
  • Metric Selector: (GPU module) Switch between utilization, memory, power, temperature, clock, NVLink bandwidth
  • Real-time Charts: Chart.js line charts showing historical trends (last 60 data points, auto-refresh)
  • Data Table: All nodes latest metrics overview, auto-refresh every 2 seconds

TIP

The Web UI is disabled by default in terminal output. Use --table to also print tables to the terminal.

Data Persistence

Monitoring data is appended to the data/ directory in JSONL format (one JSON object per line), partitioned by node and module:

data/
├── node01_cpu.jsonl
├── node01_gpu.jsonl
├── node02_cpu.jsonl
└── ...

Copyright © 2026 The PODsys Project. All rights reserved.