Hi, welcome to this post, This Counter-Strike: Global Offensive – Boost Performance Using Process Priority Management Guide was created to help you.
This guide shows you how to utilize process priorities to boost performance on low and mid-tier equipment significantly.
Steam Process Priority management
Help your Operation System to control your process priorities (which programs of you need more and which less performance)
Low- to mid-tier devices frequently struggle with process priorities; for example, SteamChat degrades performance in the background while you are playing and without even using SteamChat.
If you configure these parameters in Windows, they are not permanent.
You can use my software or other tools for this; my tool and source code are available to everyone.
Intro Why I created PriorityForcer
My Razer Laptop runs an external graphics card but only features a dual core CPU; nonetheless, the performance remains adequate. Every time I joined a CSGO server, steamservice, steamwebhelper, and steam itself all consumed between 20-30% gpu usage in Taskmanager – meaning they were using at least 20% gpu usage! So after browsing through task manager manually (there wasn’t an automated tool which did this), locating the details tab, and selecting Priority low for these programs immediately got more FPS and performance but after switching servers or 20-30 Minutes had passed, they reverted back to High Priority!
After several weeks of fiddling around, I created this tool to “force” any application I want into either ProcessPriority or ProcessThreadPriority at my preferred priority level.
.NET-Framework 4.8 (last .NET-Framework with old Service structure)
Works as ConsoleAPP or Service
You can set it up (services on Windows need to be already set up) (and to debug your config run it as ConsoleAPP) OR
You can let it just run as ConsoleAPP in a directory
Start from Release-Directory or Start Setup from Setup Release-Directory
If you installed it, it should be placed “C:\Program Files\Michi\PriorityForcer\config.xml” here.
What does it???
- After starting, it lists all active services and adds them (if they do not already exist) to config.xml.
- It regulates whether or not the processes you wish to prioritize run and how often they run (->config.xml setting).
- BackgroundThreads cache and delay the processing of Threads due to their large quantity.
Or it kills the process you wish to kill while PriorityForcer is running.
I recommend using notepad++ or similar Editors for configuring config.xml and a config merge-tool or scm to version your config.
If not existant, it creates a config.xml in Execution-Directory (Program Directory).
The config-File has a “ProcessList” and a “SettingConfig”. In SettingConfig you define the amount of milliseconds between each run of PriorityForcer.
You can also DisableLogging or just enable Exception-Logging
In ProcessList is every (by user rights of PriorityForcer accessible) process found. If you change the value of the “trigger” <Ignore>false</Ignore> PriorityForcer looks every run for this service and if the ProcessPriorityClass matches your wanted value.
possible values for ProcessPriorityClass are here: ProcessPriorityClass – [microsoft.com]
ProcessPriorityClass: AboveNormal BelowNormal High Idle Normal RealTime
If you set IgnoreForcingThreadPriority to false
than a Background-Thread looks for every Thread of processes with <Ignore>false</Ignore> and if the ThreadPriorityLevel differs from the one in your config it forces your wanted ThreadPriorityLevel.
If you set in a <ProcessConfig>
1. from <KillProcess>false</KillProcess> and <Ignore>false</Ignore> 2. to <KillProcess>true</KillProcess> and <Ignore>true</Ignore>
than PriorityForcer tries to Kill this process (and every sub process)
possible values for ThreadPriorityLevel are here:
ThreadPriorityLevel: AboveNormal BelowNormal Highest Idle Lowest Normal TimeCritical
In the config part of <ProcessList> below we have two Process entries.
The First ProcessConfig entry belongs to Taskmgr and because
Taskmgr is ignored by PriorityForcer.
The Second ProcessConfig entry belongs to steamservice.
gets forced if the found process and the processthread priorities differ from your config.xml entry.
<ProcessList> <ProcessConfig> <Name>Taskmgr</Name> <ProcessPriorityClass>Normal</ProcessPriorityClass> <Ignore>true</Ignore> <IgnoreForcingThreadPriority>true</IgnoreForcingThreadPriority> <ThreadPriorityLevel>Normal</ThreadPriorityLevel> <KillProcess>false</KillProcess> </ProcessConfig> <ProcessConfig> <Name>steamservice</Name> <ProcessPriorityClass>BelowNormal</ProcessPriorityClass> <Ignore>false</Ignore> <IgnoreForcingThreadPriority>false</IgnoreForcingThreadPriority> <ThreadPriorityLevel>Lowest</ThreadPriorityLevel> <KillProcess>false</KillProcess> </ProcessConfig>
Error-Log an Debug
1. in Program-Directory “C:\Program Files\Michi\PriorityForcer\18.02.2022log.txt”
2. As ConsoleAPP PriorityForcer displays every step it does in console. You can disable this feature in the SettingConfig part of config.xml
Counter-Strike: Global Offensive – Boost Performance Using Process Priority Management is described in this guide. If you notice anything that needs to be fixed or updated, please let us know in the comments, and we’ll get to it as quickly as possible. May this be a good day for you. This piece was motivated by the author and creator Michi^. Don’t forget to add us to your bookmarks if you like the post; we update regularly with fresh stuff.
- All Counter-Strike: Global Offensive Posts List