/AutoSuspender

Whenever chosen trigger processes (e.g. video games) are running, automatically suspend chosen target processes (e.g. web browsers, IM apps), resuming them when the trigger process stops. Suspended processes can't use any CPU and Windows is more likely to move their memory from fast RAM to pagefile, thereby improving trigger process performance

Primary LanguagePowerShell

AutoSuspender

How It Boosts Performance

Whenever chosen "trigger" processes (e.g. video games) are running, AutoSuspender automatically suspends chosen "target" processes (e.g. web browsers, instant messaging apps, and game launchers), and automatically resumes them when the trigger process ends.

Suspended target processes are effectively frozen / sleeping and therefore can't slow down the trigger process by using CPU or accessing the disk or network in the background. Windows is also more likely to move memory used by target processes from fast RAM to the slower pagefile on disk, which leaves more speedy RAM available for the trigger process to use.

When the trigger process closes, AutoSuspender will report how much the RAM usage of the target processes (known as their "working set") decreased during their suspension.

AutoSuspender can perform other tricks using the config file (see Configuration) and through various Command line arguments

Installation

Download the "Source code (zip)" file from the "Latest" release on the Releases page. Open the zip file and extract the single "AutoSuspender-x.y.z" folder inside to somewhere like your desktop or

C:\Users\your-username\AppData\Local

If you try to extract it somewhere and it asks for Administrator permission, you will need extract it somewhere else.

Run AutoSuspender.bat from that folder to start the script.

If you want to create a .exe file from the script, run compile.bat.

Configuration

You can configure the script by modifying the config.yaml file. Whenever you run the script, config.yaml is autocreated (if it doesn't already exist) using config-template.yaml as a template. So just run the script once before configuring it.

Keep the spacing and formatting in config.yaml as it is otherwise the script won't be able to read it properly.

Command Line Arguments

There are some optional command line arguments that temporarily change the way the script operates.

Argument Description
‑Help Displays a short description of AutoSuspender and a list of these possible command line arguments, then exits.
‑WhatIf Enables "what if" mode; the script doesn't actually take any action on target processes but does everything else. Useful for testing and measuring performance benefits of using AutoSuspender.
‑ResumeAll Immediately resumes all target processes then run as normal. Handy for when a previous launch of the script failed to resume everything for some reason.
‑CheckOnce Checks for trigger processes only once, exiting immediately if none are running. If one is running, performs usual operations then exits when the trigger process exits (after resuming the target processes). Useful if you arrange for the script to run every time Windows runs a new process.
‑PollTriggers Poll the status of the trigger process, rather than waiting to be told by Windows when it has stopped, which allows mointoring memory usage. This can be useful for gathering benchmarking data, but it can have a small performance impact so is disabled by default.
‑Verbose The script will be more descriptive about what's going on.
‑Debug Enables debugging mode, useful for anyone wishing to fix bugs in the script.