A comprehensive Python-based system monitoring tool for Linux that provides real-time hardware metrics similar to hwinfo64. Features both text-based and graphical interfaces for monitoring CPU, GPU, memory, and disk usage.
- CPU Information: Model name, core count, frequency, per-core usage, and temperature
- GPU Support: NVIDIA and AMD GPU detection with utilization, memory, temperature, and power draw
- Memory Monitoring: System RAM usage with detailed statistics
- Disk I/O: Real-time disk usage, I/O statistics, and filesystem information
- Historical Data: 2-minute rolling history for all metrics
- Standard Mode: Detailed text-based display with color-coded usage bars
- Graph Mode: Real-time line graphs showing metric trends over time
- Neofetch Mode: System information display in neofetch-like format
- CSV Recording: Export metrics to CSV files for analysis
- NVIDIA: Full support via nvidia-smi with temperature, utilization, memory, and power
- AMD: Multi-layer detection system:
- Vendor ID checking via
/sys/class/drm/card*/device/vendor - lspci fallback detection
- ROCm support for detailed metrics
- Sysfs fallback for basic utilization
- Vendor ID checking via
- Python 3.10+ with psutil
- ruff (for code formatting/linting)
- NVIDIA GPUs:
nvidia-smicommand-line tool - AMD GPUs:
rocm-smifor detailed metrics (basic support works without)
uv run main.py # Standard monitoring mode
uv run main.py --graph # Graph mode with historical data
uv run main.py --neofetch # Display system info in neofetch-like format
uv run main.py --record # Record metrics to CSV
uv run main.py --output file.csv # Custom CSV output file--graphor-g: Run in graph mode with historical charts--neofetchor-n: Display system information in neofetch-like format--recordor-r: Record metrics to CSV file for analysis--outputor-o: Specify output CSV filename (default: hw_metrics.csv)
Real-time line graphs showing 2-minute historical data:
- CPU usage trends
- Memory usage patterns
- GPU utilization history (if available)
- GPU memory usage trends (if available)
- Disk usage monitoring
- SystemMonitor Class: Core hardware detection and metrics collection
- Caching System: 60-second GPU detection cache to minimize system calls
- Graceful Degradation: Missing GPU tools don't crash the application
- Multi-source Data: Combines multiple system interfaces for comprehensive metrics
- NVIDIA Detection: Uses nvidia-smi for comprehensive metrics
- AMD Detection: Multi-layered approach:
- Primary: Vendor ID verification via sysfs
- Secondary: lspci parsing for device identification
- Metrics: ROCm tools for detailed info, sysfs fallback for basic usage
- Efficient Polling: 1-second refresh rate with minimal system impact
- Terminal Safety: Automatic bounds checking and resize handling
- Memory Efficient: Rolling deque for historical data storage
uv run ruff check . # Lint code
uv run ruff format . # Format codeThe application logs GPU detection issues and errors to hw_monitor.log for debugging.
AMD GPU metrics availability depends on your specific hardware and drivers:
- Temperature: Varies by card model and hwmon support
- Memory Usage: Requires ROCm tools for detailed metrics
- GPU Utilization: May not be available on older cards/drivers
- Device Detection: Automatically handles multiple GPU cards
- Minimum Terminal: 80x25 for standard mode, 100x35 for graph mode
- Permissions: Some GPU metrics may require elevated permissions
- Dependencies: Works with standard Linux utilities, enhanced with GPU tools

