Windows desktop monitor for real-time graphics performance.
Download · User guide · 使用指南 · Troubleshooting · Changelog
The app wraps Intel PresentMon 2.4.1, enriches every frame with system/process metrics (CPU, RAM, NVIDIA GPU/VRAM), and shows live charts in PyQt5.
Requires Administrator (or membership in the Windows Performance Log Users group). PresentMon uses ETW.
Download the latest installer or portable EXE from GitHub Releases:
| Asset | Use |
|---|---|
IGPPerformanceMonitor-Setup-x.y.z.exe |
Recommended. Installs to Program Files, Start Menu shortcut, uninstaller. Requests admin. |
IGPPerformanceMonitor.exe |
Portable one-file build (also used by in-app updates). |
auto_updater.exe |
Internal swapper used by Help → Check for Updates. |
Packaged builds check GitHub Releases shortly after launch and can roll back to the previous published version.
The same manuals ship in the app under Help → User Manual.
| English | 简体中文 | 繁體中文 | 日本語 | |
|---|---|---|---|---|
| How to use the app | User guide | 使用指南 | 使用指南 | ユーザーガイド |
| When something fails | Troubleshooting | 排障 | 疑難排解 | トラブルシューティング |
| What changed | Changelog | 更新记录 |
Full index: docs/README.md.
- Multi-app capture (several process names at once)
- Live charts: FPS, frame time, CPU/GPU/RAM/VRAM, per-app and system
- Always-on-top overlay that follows the target window
- CSV export / import with offline stutter analysis
- English and Simplified Chinese UI (
IGP_LANG=enorzh_CN) - Dark / light theme
- In-app self-update from GitHub Releases (SHA256 verified)
pip install -r requirements.txt
Scripts\run_dev.batpython -m src.main --debugHeadless capture (admin). Prefer Scripts\capture_debug.bat so UAC relaunch still writes temp\:
Scripts\capture_debug.bat --process-name Unity.exe --timed 10
python -m src.main --headless --process-name Unity.exe --timed 10pip install -r requirements-dev.txt
Scripts\build.bat
Scripts\build_installer.bat
python Scripts\generate_manifest.pyOutputs in dist\:
IGPPerformanceMonitor.exeauto_updater.exeIGPPerformanceMonitor-Setup-<version>.exe(needs Inno Setup 6)app_manifest.json(GitHub Release metadata)
Default branch is develop. Stabilization and tags live on release. Both are protected.
Tagging vX.Y.Z on release (must match VERSION) runs .github/workflows/release.yml, which publishes those files as a GitHub Release.
python Scripts/check.py :: compile + import + lint
python -m src.main -t ui :: window + screenshots
python -m src.main -t update :: download / verify / cancel
python -m src.main -t startup :: first-run language picker (real child process)
python -m src.tests :: i18n / CSV / manifest contractsThe capture area needs admin: Scripts\selfcheck.bat capture -a App.exe -s 8. See .claude/skills/test-after-changes/SKILL.md.
src/ Application, tests, auto-updater
Scripts/ Dev / build / installer / headless helpers
docs/ Localized README + user manuals (en, zh-CN, zh-TW, ja)
assets/ App icon (PNG + ICO) and README logo
third-party/ Bundled PresentMon 2.4.1 CLI
.claude/skills/ Agent workflow skills (English)
.github/workflows/ CI + Release
PresentMon.exe --stdout--> CsvParser --> FrameData
PresentMonWrapper._enrich_frame() # stamps sampler cache only
DataStore.add_frame()
SystemMetricsSampler (~500ms) --> DataStore snapshots + _latest cache
Do not call psutil.cpu_percent() per frame — Windows clock granularity makes that return 0.0. See CLAUDE.md and .claude/skills/dev-guide/.
MIT. PresentMon is bundled under its own license from Intel; see third-party notices.
