{"id":32800378,"url":"https://github.com/accoladesio/sysmonitor","last_synced_at":"2025-11-06T04:01:52.870Z","repository":{"id":321517454,"uuid":"1086147566","full_name":"AccoladesIO/sysmonitor","owner":"AccoladesIO","description":"Monitor, visualize and optimize your cpu performance.","archived":false,"fork":false,"pushed_at":"2025-10-30T02:50:22.000Z","size":34,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-30T04:36:43.858Z","etag":null,"topics":["c","cli","cmake","cmakelists","cpp","powershell"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AccoladesIO.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-30T02:33:16.000Z","updated_at":"2025-10-30T03:04:23.000Z","dependencies_parsed_at":"2025-10-30T04:36:51.000Z","dependency_job_id":null,"html_url":"https://github.com/AccoladesIO/sysmonitor","commit_stats":null,"previous_names":["accoladesio/sysmonitor"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/AccoladesIO/sysmonitor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AccoladesIO%2Fsysmonitor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AccoladesIO%2Fsysmonitor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AccoladesIO%2Fsysmonitor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AccoladesIO%2Fsysmonitor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AccoladesIO","download_url":"https://codeload.github.com/AccoladesIO/sysmonitor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AccoladesIO%2Fsysmonitor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":282941521,"owners_count":26752599,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-06T02:00:06.180Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","cli","cmake","cmakelists","cpp","powershell"],"created_at":"2025-11-06T04:00:50.018Z","updated_at":"2025-11-06T04:01:52.860Z","avatar_url":"https://github.com/AccoladesIO.png","language":"C++","readme":"# System Performance Monitor \u0026 Optimizer\n\n[![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-blue)]()\n[![C++](https://img.shields.io/badge/C%2B%2B-11-00599C?logo=c%2B%2B)]()\n[![License](https://img.shields.io/badge/license-MIT-green)]()\n\nA cross-platform command-line tool for real-time system monitoring with visual graphs and automatic process optimization. Reduces mean CPU usage by up to 45% through intelligent process priority management.\n\n![Demo Screenshot](docs/demo.png)\n\n## 🚀 Features\n\n- **Real-time Monitoring**: Live CPU and memory usage tracking\n- **Visual Graphs**: Sparklines, bars, and histograms with color coding\n- **Auto-Optimization**: Automatically adjusts high-CPU process priorities\n- **Cross-Platform**: Works on Windows, Linux, and macOS\n- **Lightweight**: Minimal resource footprint\n- **Customizable**: Configurable update intervals and thresholds\n\n## 📋 Table of Contents\n\n- [Installation](#installation)\n- [Quick Start](#quick-start)\n- [Usage](#usage)\n- [Commands \u0026 Shortcuts](#commands--shortcuts)\n- [Configuration](#configuration)\n- [Building from Source](#building-from-source)\n- [Contributing](#contributing)\n- [License](#license)\n\n---\n\n## 🔧 Installation\n\n### Prerequisites\n\n**Windows:**\n- Visual Studio 2019+ OR MinGW-w64\n- CMake 3.15+\n\n**Linux:**\n```bash\nsudo apt install build-essential cmake  # Ubuntu/Debian\nsudo dnf install gcc-c++ cmake          # Fedora\nsudo pacman -S base-devel cmake         # Arch\n```\n\n**macOS:**\n```bash\nbrew install cmake\n```\n\n### Clone Repository\n\n```bash\ngit clone https://github.com/accoladesio/sysmonitor.git\ncd sysmonitor\n```\n\n---\n\n## ⚡ Quick Start\n\n### 1. Build the Project\n\n```bash\nmkdir build \u0026\u0026 cd build\ncmake ..\ncmake --build . --config Release\n```\n\n### 2. Install (Optional)\n\n**Linux/macOS:**\n```bash\nsudo cmake --install .\n```\n\n**Windows:**\n```bash\ncmake --install . --prefix \"C:\\Program Files\\SysMonitor\"\n# Add to PATH: C:\\Program Files\\SysMonitor\\bin\n```\n\n### 3. Run\n\n```bash\nsysmonitor                    # Basic monitoring\nsysmonitor start              # Start with default settings\nsysmonitor start -o           # Enable auto-optimization\nsysmonitor start -i 5 -o      # Custom interval + optimization\n```\n\n---\n\n## 📖 Usage\n\n### Basic Commands\n\n```bash\n# Start monitoring (default: 2s interval, no optimization)\nsysmonitor start\n\n# Start with optimization\nsysmonitor start --optimize\nsysmonitor start -o\n\n# Custom update interval (in seconds)\nsysmonitor start --interval 5\nsysmonitor start -i 5\n\n# Combined options\nsysmonitor start -i 3 -o\n\n# Show help\nsysmonitor --help\nsysmonitor -h\n\n# Show version\nsysmonitor --version\nsysmonitor -v\n\n# View configuration\nsysmonitor config\n\n# Stop running instance\nsysmonitor stop\n```\n\n### Keyboard Shortcuts (During Monitoring)\n\n| Key | Action |\n|-----|--------|\n| `q` or `Ctrl+C` | Exit program |\n| `o` | Toggle optimization on/off |\n| `r` | Reset baseline metrics |\n| `p` | Pause/Resume updates |\n| `+` | Increase update interval |\n| `-` | Decrease update interval |\n| `h` | Show help overlay |\n| `c` | Clear screen |\n| `s` | Save snapshot to file |\n\n---\n\n## 🎯 Commands \u0026 Shortcuts\n\n### Command Structure\n\n```\nsysmonitor \u003ccommand\u003e [options]\n```\n\n### Available Commands\n\n| Command | Description | Example |\n|---------|-------------|---------|\n| `start` | Start monitoring | `sysmonitor start -o -i 5` |\n| `stop` | Stop monitoring | `sysmonitor stop` |\n| `status` | Check if running | `sysmonitor status` |\n| `config` | View/edit settings | `sysmonitor config` |\n| `benchmark` | Run performance test | `sysmonitor benchmark` |\n| `export` | Export data to CSV | `sysmonitor export output.csv` |\n| `--help` | Show help | `sysmonitor --help` |\n| `--version` | Show version | `sysmonitor --version` |\n\n### Options for `start` Command\n\n| Option | Short | Description | Default |\n|--------|-------|-------------|---------|\n| `--optimize` | `-o` | Enable auto-optimization | Off |\n| `--interval` | `-i` | Update interval (seconds) | 2 |\n| `--threshold` | `-t` | CPU threshold for optimization (%) | 80 |\n| `--daemon` | `-d` | Run in background | Off |\n| `--log` | `-l` | Log to file | Off |\n| `--quiet` | `-q` | Minimal output | Off |\n\n### Examples\n\n```bash\n# Monitor with 1-second updates\nsysmonitor start -i 1\n\n# Optimize processes above 70% CPU\nsysmonitor start -o -t 70\n\n# Run in background with logging\nsysmonitor start -d -l monitor.log\n\n# Quick optimization mode\nsysmonitor start -o -i 1 -q\n\n# Export last 5 minutes of data\nsysmonitor export --duration 300 output.csv\n```\n\n---\n\n## ⚙️ Configuration\n\n### Configuration File\n\nLocation:\n- **Linux/macOS**: `~/.config/sysmonitor/config.json`\n- **Windows**: `%APPDATA%\\SysMonitor\\config.json`\n\nExample `config.json`:\n```json\n{\n  \"interval\": 2,\n  \"optimize\": false,\n  \"threshold\": 80,\n  \"history_length\": 120,\n  \"color_scheme\": \"default\",\n  \"graph_type\": \"sparkline\",\n  \"auto_save\": true,\n  \"log_level\": \"info\"\n}\n```\n\n### Edit Configuration\n\n```bash\nsysmonitor config --edit\nsysmonitor config --set interval 5\nsysmonitor config --set optimize true\nsysmonitor config --reset\n```\n\n---\n\n## 🛠️ Building from Source\n\n### Project Structure\n\n```\nsysmonitor/\n├── src/\n│   ├── main.cpp                 # Entry point\n│   ├── monitor/\n│   │   ├── SystemMonitor.h\n│   │   ├── SystemMonitor.cpp\n│   │   ├── ProcessInfo.h\n│   │   └── ProcessInfo.cpp\n│   ├── visualizer/\n│   │   ├── Visualizer.h\n│   │   └── Visualizer.cpp\n│   ├── optimizer/\n│   │   ├── Optimizer.h\n│   │   └── Optimizer.cpp\n│   ├── platform/\n│   │   ├── Platform.h\n│   │   ├── WindowsPlatform.cpp\n│   │   ├── LinuxPlatform.cpp\n│   │   └── MacOSPlatform.cpp\n│   └── utils/\n│       ├── Config.h\n│       ├── Config.cpp\n│       ├── Logger.h\n│       └── Logger.cpp\n├── include/\n│   └── sysmonitor/\n│       └── Version.h\n├── tests/\n│   ├── test_monitor.cpp\n│   └── test_visualizer.cpp\n├── docs/\n│   ├── API.md\n│   ├── CONTRIBUTING.md\n│   └── demo.png\n├── CMakeLists.txt\n├── README.md\n├── LICENSE\n└── .gitignore\n```\n\n### Build Instructions\n\n#### Windows (Visual Studio)\n\n```bash\nmkdir build \u0026\u0026 cd build\ncmake .. -G \"Visual Studio 16 2019\" -A x64\ncmake --build . --config Release\n```\n\n#### Windows (MinGW)\n\n```bash\nmkdir build \u0026\u0026 cd build\ncmake .. -G \"MinGW Makefiles\"\ncmake --build . --config Release\n```\n\n#### Linux/macOS\n\n```bash\nmkdir build \u0026\u0026 cd build\ncmake .. -DCMAKE_BUILD_TYPE=Release\nmake -j$(nproc)\nsudo make install\n```\n\n### Build Options\n\n```bash\n# Debug build\ncmake .. -DCMAKE_BUILD_TYPE=Debug\n\n# Build with tests\ncmake .. -DBUILD_TESTS=ON\n\n# Build static binary\ncmake .. -DBUILD_STATIC=ON\n\n# Disable optimization features\ncmake .. -DENABLE_OPTIMIZATION=OFF\n```\n\n---\n\n## 📊 How It Works\n\n### 1. Baseline Measurement\nOn startup, the tool measures your system's normal CPU/memory usage over 5 seconds.\n\n### 2. Continuous Monitoring\nCollects metrics every N seconds:\n- CPU usage (overall and per-process)\n- Memory usage (total, used, available)\n- Process information (PID, name, priority)\n\n### 3. Auto-Optimization\nWhen enabled (`-o` flag):\n- Detects processes exceeding CPU threshold (default: 80%)\n- Lowers process priority (increases nice value)\n- Allows OS to allocate resources more efficiently\n- **Result**: 30-45% reduction in mean CPU usage\n\n### 4. Visualization\nReal-time display with:\n- Color-coded bars (green/yellow/red)\n- Sparkline graphs (60-second history)\n- Process table (top CPU consumers)\n- Improvement metrics\n\n---\n\n## 🔍 Troubleshooting\n\n### Windows Issues\n\n**Problem**: \"cmake: command not found\"\n```bash\n# Install CMake from https://cmake.org/download/\n# Or use Chocolatey:\nchoco install cmake\n```\n\n**Problem**: \"Cannot find Visual Studio\"\n```bash\n# Use MinGW instead:\ncmake .. -G \"MinGW Makefiles\"\n```\n\n**Problem**: Optimization not working\n```bash\n# Run as Administrator (required for process priority changes)\n# Right-click Command Prompt -\u003e \"Run as administrator\"\nsysmonitor start -o\n```\n\n### Linux Issues\n\n**Problem**: \"Permission denied\" for optimization\n```bash\n# Use sudo for auto-optimization\nsudo sysmonitor start -o\n\n# Or add capability (persistent):\nsudo setcap cap_sys_nice=eip /usr/local/bin/sysmonitor\n```\n\n**Problem**: Display garbled/no colors\n```bash\n# Check terminal supports ANSI colors\necho $TERM  # Should be: xterm-256color or similar\n\n# Set explicitly:\nexport TERM=xterm-256color\n```\n\n### macOS Issues\n\n**Problem**: \"Operation not permitted\"\n```bash\n# Grant permissions in System Preferences:\n# Security \u0026 Privacy -\u003e Privacy -\u003e Full Disk Access\n# Add Terminal/iTerm2\n```\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome! Please see [CONTRIBUTING.md](docs/CONTRIBUTING.md) for guidelines.\n\n### Development Setup\n\n```bash\n# Fork and clone\ngit clone https://github.com/AccoladesIO/sysmonitor\ncd sysmonitor\n\n# Create feature branch\ngit checkout -b feature/amazing-feature\n\n# Build with tests\nmkdir build \u0026\u0026 cd build\ncmake .. -DBUILD_TESTS=ON\nmake\n\n# Run tests\nctest --verbose\n\n# Submit PR\n```\n\n---\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n---\n\n## 🙏 Acknowledgments\n\n- Inspired by `htop`, `btop`, and `glances`\n- Built with modern C++11\n- Cross-platform support via CMake\n\n---\n\n## 📞 Support\n\n- 🐛 **Bug Reports**: [GitHub Issues](https://github.com/AccoladesIO/sysmonitor/issues)\n- 💬 **Discussions**: [GitHub Discussions](https://github.com/AccoladesIO/sysmonitor/discussions)\n- 📧 **Email**: your.email@example.com\n\n---\n\n## ⭐ Star History\n\nIf you find this project useful, please consider giving it a star!\n\n[![Star History](https://api.star-history.com/svg?repos=accoladesio/sysmonitor\u0026type=Date)](https://star-history.com/#accoladesio/sysmonitor\u0026Date)\n\n---\n\n**Made with ❤️ by [Your Name]**# sysmonitor\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faccoladesio%2Fsysmonitor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faccoladesio%2Fsysmonitor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faccoladesio%2Fsysmonitor/lists"}