Counter-Strike: Global Offensive – Boost Performance Using Process Priority Management

Counter-Strike: Global Offensive – Boost Performance Using Process Priority Management 4 - steamlists.com
Counter-Strike: Global Offensive – Boost Performance Using Process Priority Management 4 - steamlists.com

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.

Project on Bitbucket – [bitbucket.org]

Download precompiled setup and portable – [bitbucket.org]

Counter-Strike: Global Offensive - Boost Performance Using Process Priority Management - Steam Process Priority management - F32E559

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.

Requirement

.NET-Framework 4.8 (last .NET-Framework with old Service structure)

Environment

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

Installation

https://bitbucket.org/da-legendary-Michi/legendary_repository/downloads/ – [bitbucket.org]  (or pull and build)

Start from Release-Directory or Start Setup from Setup Release-Directory

PriorityForcer – [bitbucket.org]

PriorityForcerSetup – [bitbucket.org]

Configure config.xml

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. 

    Configure It

     

    I recommend using notepad++ or similar Editors for configuring config.xml and a config merge-tool or scm to version your config.

    WinMerge – [winmerge.org]

    Counter-Strike: Global Offensive - Boost Performance Using Process Priority Management - Steam Process Priority management - EF01E7E
     

    NotePad++ – [notepad-plus-plus.org]

    Counter-Strike: Global Offensive - Boost Performance Using Process Priority Management - Steam Process Priority management - F0D0A79
     

    VSCode – [visualstudio.com]
     


    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.
     

     

     
     <SettingConfig>
     <pollTimeInMilliseconds>300000</pollTimeInMilliseconds>
    

     

    You can also DisableLogging or just enable Exception-Logging
     

     

     
    <DisableLogging>false</DisableLogging>
    <OnlyExceptionLogging>false</OnlyExceptionLogging>
    

     

    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
     

     

     <IgnoreForcingThreadPriority>false</IgnoreForcingThreadPriority> 
    

     

    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 – [microsoft.com]
     

     

     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
     

     

     <Ignore>true</Ignore>
     <IgnoreForcingThreadPriority>true</IgnoreForcingThreadPriority>
    

     

    Taskmgr is ignored by PriorityForcer.
     

     

    The Second ProcessConfig entry belongs to steamservice.
     

     

     
     <ProcessPriorityClass>BelowNormal</ProcessPriorityClass>
    

     

    and
     

     

     
    <ThreadPriorityLevel>Lowest</ThreadPriorityLevel>
    

     

    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.


Be the first to comment

Leave a Reply

Your email address will not be published.


*