1
Files
autoPriority/README.md
T

2.4 KiB

autoPriority

Monitors process memory usage on Windows and automatically adjusts CPU priority: promotes memory-heavy processes to HIGH and demotes everything else to NORMAL.

Windows only.

How it works

Every scan interval the program iterates over all running processes:

RSS vs threshold Current priority Action
≥ threshold anything except HIGH → HIGH (logged as PROMOTE)
≥ threshold already HIGH skip
< threshold ABOVE_NORMAL, HIGH, or REALTIME → NORMAL (logged as DEMOTE)
< threshold NORMAL, BELOW_NORMAL, or IDLE skip

If SetPriorityClass fails for a process (e.g., anti-cheat protection), the process is added to an in-memory exclusion list and never touched again (logged as BLOCK). When the process exits, it is automatically removed from the list.

On shutdown, all promoted processes are restored to NORMAL.

Build

Requires Go 1.26+.

# Standard build (with console window)
go build -o autopriority.exe .

# Background build (no console, minimal size)
go build -ldflags="-H windowsgui -s -w" -o autopriority.exe .

Usage

autopriority [flags]
Flag Default Description
-mem 536870912 Memory threshold in bytes (512 MB)
-interval 1 minute Scan interval (min 10s)
-dry-run false Log only, don't change priority

Examples:

# Run with 1 GB memory threshold, scanning every 30 seconds
autopriority -mem=1073741824 -interval=30s

# Dry run — log decisions without changing anything
autopriority -dry-run

Log

Log is always written to %TEMP%\autopriority.log. A new log file is created on each run (previous log is deleted).

Log entries:

Prefix Meaning
PROMOTE Priority raised to HIGH
DEMOTE Priority lowered to NORMAL
BLOCK SetPriorityClass failed; process added to exclusion list
RESTORE Promoted process restored to NORMAL on shutdown
SKIP RESTORE PID reused by a different process; restore skipped
[DRY-RUN] Would change priority (dry-run mode)

Auto-start

Open Win+R, type shell:startup, and press Enter. Then place a shortcut to autopriority.exe in the folder that opens.

Dependencies

None. Uses only Windows API (kernel32, psapi) via raw syscall.