Code Monkey home page Code Monkey logo

notcpucores's Introduction

Build Status Download Ko-fi PayPal Join the Discord chat

NotCPUCores

Work, Play, Stream - Without the Stutter | Download Under Releases | Download Test Builds

Version 1.7.2.0

What is NotCPUCores?

NotCPUCores is a GUI for quick CPU Resource Assignment and Priority adjustment, along with other minor tweaks. A lot of similar snake oil marketed Non-Free alternatives exist that like to call themselves names such as "Game Booster", "FPS Booster", "System Stabilizer", "Process Tweaker", "Game Tweaker" among other terms we don't like. We will not market ourselves as such. NotCPUCores does the same or similar tweaks compared to non-free alternatives as well as providing additional features.

Is it worth using NotCPUCores/CPUCores/(Insert Other Optimizer/Booster Here)?

All these "optimizers" do simple tweaks that you yourself can do, so probably not; You DEFINITELY should NOT be forced to pay money for it. You MAY see marginal returns, slightly better stability of FPS, but also more battery usage. There is SIMPLY NO REPLACEMENT for doing a hardware upgrade.

How does it work? / Getting the Benefits without Installing / Etc

Visit the Wiki

How to build from source code

  1. Download and run "AutoIt Full Installation" from official website.
  2. Get the source code either by downloading zip or do git clone https://github.com/rcmaehl/NotCPUCores.
  3. Right click on NotCPUCores.au3 in the NotCPUCores directory and select "Compile Script (x64) (or x86 if you have 32 bit Windows install).
  4. This will create NotCPUCores.exe in the same directory.

This program is free and open source. Feel free to download and modify. Please do not sell exact copies.

notcpucores's People

Contributors

edislev avatar gelogame avatar micwoj92 avatar rcmaehl avatar voodagod avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

notcpucores's Issues

Allow for multiple Work/Play processes

Minor issue, probably uncommon.

It's a problem for games launched with the Origin Client (at least Apex Legends that I know of).
The game's process r5apex.exe is protected and can't have its affinity or process priority changed once it is started up.
image

Unique traits:

  • The game inherits Origin.exe affinity settings by default
  • NotCPUCores is able to catch and adjust r5apex.exe affinity settings (when considered as 'Other Processes') if it is running before game is launched.

Problem:

  • NotCPUCores can't begin unless game is already running (or it'll auto stop if it detects game isn't running, I'm not too sure about the backend)

The current tedious workaround:

  1. Manually assign 'Origin.exe's affinity with Task Manager`
  2. Launch game so r5apex.exe is fixed with the affinity settings I've assigned earlier
  3. Run NotCPUCores

As I've mentioned, it is application specific and probably an issue affecting only a small number of your program's userbase, but it may still be useful for others.

Adjust handling of multiple processes

Currently the software loops within a single function ignoring all GUI and all functions with only OnEvent() calls interrupting it. This needs to change to support multiple processes and to prevent call blocking to other parts of the code.

Add Streaming Mode

Linus you're a genius in all the wrong ways.

  • Add support for OBS and XSplit optimization
  • Options to split Processor resources based on various modes:

OFF - Disable Steaming Mod
Last Core - Assign Broadcasting software to the Last Processor Thread
Last 2 Cores - Assign Broadcasting software to the Last 2 Processor Thread
Last 4 Cores - Assign Broadcasting software to the Last 4 Processor Thread
Odd Cores - Assign Broadcasting software to odd numbered Processor Threads
Even Cores - Assign Broadcasting software to even numbered Processor Threads
Last AMD CCX - Assign Broadcasting software to All processor threads within the last CCX (per Ryzen Specs)
Last 2 AMD CCX - Assign Broadcasting software to All processor threads within the last 2 CCXs (per Ryzen Specs)

Add Option to Optimize Exclusions, and restore their Affinity when restoring

When I was trying to set the priority and core allocation for Steam.exe and looking at the debug console's commands it mentions "Exited. Restoring Previous State" after setting Steam.exe from turning it off/on and it resets back to the default settings. If I try to optimize Steam.exe while it is running the custom settings applied will work unless I turn off Steam.exe

Evidence for the 'exited' thing: https://imgur.com/a/GE3Xkp7

After restarting/deactivating Steam: https://imgur.com/a/MzNB5XX (notice that the 'previous state' sentence in the debug console is there).

While Steam is running: https://imgur.com/a/utApd3j (notice that the 'previous state' sentence in the debug console isn't there).

Move commits to their own branches

Start moving code commits to their own branch until changes are complete. This will allow bugfixing of the current version while still allowing future changes to be made.

1.7.0.0 onward

ONLY working with "All Cores" setting since 1.7.0.0 (on 2 Ryzen CPU/APU)

Hi,
i have AMD Ryzen 5 2600X (6C/12T) and AMD Ryzen 5 2400U (4C/8T).
both Windows 10 1909 (Build 18363.592)
both 16GB DualChannel RAM (DDR4-3200CL16 and DDR4-2400CL16)

Any custom cores setting (like: 1,3,5,7,9,11) (for AMD Ryzen 5 2600X) or "Physical Cores" doesnt work! Actually non setting other than "All-Cores" work! (and this only once)
Does not work on BOTH CPUs/APUs (i can also check on Ryzen 5 2400G if you want)

debug error:
"Exited. Restoring Previous State...
Done"
...and nothing happens!

I want NotCPUCores to run games with "above normal" prio and on "Physical Cores" only - while running OBS on cores (2,4) on 2500U or (2,4,6,8) on 2600X when i stream games! (using my APU for OBS AMF Encoder // while using x264 on 2600X)

With v1.6.2.0 it works fine!

Amateur translation, add Chinese

Using network translation to complete the text translation of simplified Chinese, because I am not a programmer, I can't use github, I can only put the translated text here, I hope the author can see and add it to the program.

01.txt

Default to All Cores on lower end systems

Newer games on lower end systems suffer from core loss. While this is less noticeable on higher threaded systems, preventing FPS degradation takes priority over frame-rate stability (0.1% and 1% lows).

Separate Work and Play tab

Work tab:

  • Assignment and adjustment of Several Processes at once

Play tab:

  • Assignment and adjustment single process (plus children)
  • Assignment and adjustment of chat software (Discord, telegram, skype, IRC, etc)

Executable crashes on start

Hi there. I get an error message when i try to start NotCPUCores_x64.exe that says it's "disabled or has no enabled devices associated with it." I attached a screenshot of the error here.
Image 1

I disabled a lot of windows' default services. Do I need to have any services enabled for notcpucores?

Thanks for making this program! It saves me a lot of time.

Assignment Ranges not functioning properly

I have a 8C16T CPU and I intend to do:
6 threads for the game
2 threads for everything else
8 threads for OBS encoding

When I do these settings:
Work/Play: Custom, 1-6
Stream: Last Half
Assign Other Processes: Remaining Cores
image
Everything works fine, game is assigned first 6 cores and OBS is assigned last 8 cores.

However, if I choose to do this instead which should mean the same thing:
Work/Play: Custom, 1-6
Stream: Custom, 9-16
Assign Other Processes: Remaining Cores

Other processes:
image image
Game:
image
OBS:
image

Add refresh option for process list

Currently only processes that are already running once you start NotCPUCores are in the list.
Make the list refreshable by button and/or F5

Add support for 4 way SMT

Both AMD and Intel will be releasing future processors with 4 threads per core. Add code to handle these types of processors.

GUI does not support processes with names longer than 14 characters

In the GUI, I cannot type more than 14 characters into the Process Name box. This is problematic, because the process name of the game I wish to use it with is 18 characters. I see no reason for this restriction, especially considering NotCPUCores works just fine with process names longer than 14 characters through the command line.

2017-07-15_16-53-34

Include a LICENSE file

The README says that the project is open source, but without a license, it's still fully copyrighted to you.

I suggest a simple license, such as the MIT License.

Change README to remove a wrong statement

At the end it says "This program is free and open source. Feel free to download and modify. Please do not put up for sale.", but according to the licensing terms of the GNU Lesser General Public License v3.0 which was the license chosen by this product, it allows commercial use if you agree the contract and its conditions.

Hence, it would be possible to fork the code (make some tweaks to it if wanted) and sell it providing the source code along the binaries, and also attributing that there is code taken from this project, and that would not even be breach of contract.

Therefore, should be removed or changed that statement at the end. You may not want to sell your product, but you should make clear that if this product is being sold somewhere, then you are not related to that project and then you will not maintain neither support it. You should say something like "is allowed the use, modification... commercial use allowed... providing that sources are available..." but also warn that you are not responsible for whatever come from forks/derivative works.

question: i don't understand why the magic cores maximun number is like that, would you tell me why?

; Example .......: No
; ===============================================================================================================================
Func _Optimize($iProcesses, $hProcess, $hCores, $iSleepTime = 100, $sPriority = "HIGH", $hOutput = False)

Local $iExtended = 0
Local $aProcesses[1]

If IsDeclared("iThreads") = 0 Then Local Static $iThreads = _GetCPUInfo(1)
Local $aPriorities[6] = ["LOW","BELOWNORMAL","NORMAL","ABOVENORMAL","HIGH","REALTIME"]

Local $hAllCores = 0 ; Get Maxmimum Cores Magic Number
For $iLoop = 0 To $iThreads - 1
	$hAllCores += 2^$iLoop
Next

Digital Sign Error: A referral was returned from the server

Hey,

Thanks for such a great project! I just download the executable file version 1.7.1.0-beta. Normally, I always keep UAC security level at highest and using UAC: Only elevate executables that are signed and validated option. As a ref #47, I think your digital sign provider or signer no longer accessible. Can you update the digital sign, please? Thank you so much!

PS: I don't think about to turn off UAC. (Just little safety thing, to be out of sight from the Script Kiddies who has taken an black hacker course on Udemy and learnt something a noob thing on YouTube Premium)

how do I even use this?

I know I'm gonna sound stupid because it works for everyone else but I can't see an exe file, how do I use this? Help!

TF2 not optimizing properly

For TF2 I do not have any custom commands or launch options that alter with the cpu core useage (I have set "-high" in the command) But when I try to use NotCPUCores to limit tf2 to use only the physical cores (0 and 2) it is very likely it won't save or will randomly reset back to using all the cores (2 physical cores and 2 virtual cores).

So how do I know this? I use Task Manager to see if TF2 is running on the cores I want it to run on; sometimes when the optimization actually works: in TM, TF2, Details, right click hl2.exe (it is TF2), and go on the set affinity it shows that only cores 0 and 2 are running/used. When the cpucores app doesn't work TM says that TF2 is using all the cores.

Way how notcpucores work

Hello
I found your project really good and as I'm learning how to code I decided to make my version.
The problem is that AutoIt is a little hard and I'm more confortable with c#.

I wanted to know which windows services does the software close and how does It choose which processes are optimized.

I didn't find any way to send you a message so I did It here
thanks

Additional Processor Specific Optimizations

Depending on processor architectures certain core assignments will perform better than others, this is especially notable with AMD based processors. Look into and convert "Last AMD CXX" and "Last AMD" to Processor optimized settings.

More Advanced Process Handling

Addition of Automatically Optimizing Child Processes
Addition of Excluding Processes Globally
Addition of Including Processes Globally

Include a screenshot of the GUI in the README

Fairly simple idea: Since there is a GUI version of the program there should be a screenshot of it in the README so that people know what it looks like without needing to install the software.

1.6 Default core assignment behaves like "1"

Using 1.6 it shows the default core assignment for my 4 core AMD A8-7600 to be "1-2", but it still behaves like "1". Once i delete it and retype "1-2" or "1,2" it will actually use the first 2 threads

MIT License allows commercial redistribution

If you want to keep people from repackaging the code and selling it - avoid using the MIT license (probably use GPLv3 - that has pretty strict anti-commercial resale ideas in it).

Enlarge UI

Enlarge UI, especially horizontally to allow more upcoming options

Perhaps merge Back-end Console and Window Process List into UI (Collapsible?)

Add opinions / comments below

Improve Debug Output

hey, when i run "Debug Console" to see if NotCPUCores works fine it doesnt scroll to the newest event

would be nice if you fix that. ;)

Hotkey conflict problem

sry,my english is poor.
i found that notcpucores register the hotkey F5.
F5 is used by many games or softwares,this conflict made lots of problem.
can i suggest to fix it?

Use all cores by default

Currently always limited to core 1 by default.
Make the default list of cores contain all cores.

Minimize Window

i've been using NotCPUCores instead of CPUCores recently, and i'd like to be able to minimize the window, maybe even to the system tray, as it does take a while to start up & would be more convenient to just start once & then optimize games when needed

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.