CoreCtrl is a graphical system monitoring and performance tuning program for controlling a machines performance characteristics as well as it's fans. It has a global as well as per-program profiles for CPU governor and GPU performance levels. It has graphs for monitoring and several information layouts which show detailed incriminating information about the system it's running on.
CoreCtrl is written by software author Juan Palacios who seems like a nice guy. He's known for other software such as the mobile phone game DumbYard.
We tested the current git version as of 2019-07-15.
Features and usability
First a word of warning: CoreCtrl will immediately override your current fan, CPU and GPU settings when you first launch it. It will do so before you change anything in it's interface, just launching the program makes it override the currently used configuration. The fans are set to "auto" and the CPU governor is set to "powersave".
This is a problem if you are using a complicated fan control setup configured by the standard
fancontrol service since it will simply crash when other software changes the fan settings. You are currently out of luck if you want to use CoreCtrl to configure just your GPU or you want to configure nothing and just view the information it presents. CoreCtrl is currently a all-or-nothing solution, you can either allow it to control everything or not use it.
The Control Center
When launched CoreCtrl asks for the
root password and starts a daemon running and root and presents a nice user-friendly interface where it's possible to change the "global" profile or clone it to application-specific profiles. The interface related to GPU settings looks like this:
Only AMD APUs are supported as of now. Support for other GPUs will be added in the future.
There is also a tab for CPU settings where the CPU frequency governor can be set.
The interface for tuning the CPU does not have any configuration for the system fans. This may be a big problem since, as we already mentioned, CoreCtrl will override the systems fan settings and make other fan control software services
fancontrol crash and exit. This is perfectly fine if you are using BIOS-configured system fan settings but it could be a deal-breaker if you're not.
The "Global" profile will be used when you launch CoreCtrl and it's daemon will revert back to this profile when you exit a game that has had a application-specific profile applied to it.
Profile switching is under the hood controlled by a daemon called "corectrl_helper". This will start when you enter the root password upon startup. It will exit automatically shortly after you exit CoreCtrl.
CoreCtrl can be minimized to the system tray and lives there when you are not configuring or watching it.
The System Tab
CoreCtrl has two options at the bottom of it's interface: "Profiles and System". The "System" interface has four different views: "CoreCtrl" which shows information about the program, "Software" which tells you what Kernel and Mesa versions you have, "GPU " which tells you all kinds of incriminating information about the GPU and "[CPU 0]" which, like the GPU view, tells you a whole lot about your CPU. There would probably a [GPU 1] view if you have more than one.
The initial "Global Profile" you get in the "Profiles" view can be cloned. Clicking "Clone" the global profile prompts you for a Name, Executable and an icon. Each program can have it's own CPU and GPU settings which are applied when the executable you specify is launched. The "Global" profile is re-applied upon exit.
This feature works as expected. We made a profile for the popular free software game SuperTuxKart and launched it while monitoring CPU and GPU settings. They changed when launching the game and reverted back to the "Global Profile" when exiting the game.
One usability-issue it's hard to ignore when it comes to these profiles: You have to "clone" a exiting profile to make CoreCtrl aware of a new executable. It would be much better if each profile could have a list of executable. Having 3 profiles named "Light Games", "FPS games" and "Rendering Programs" with 5 executable attached to each would be preferable to having 15 different profiles. But that's just not how the program's made.
Verdict and conclusion
CoreCtrl is in principle a really good nice and user-friendly program for controlling the systems performance level when launching games and other software. However, it does currently have some major draw-backs. One is the lack of a "Do not control" option in the "Performance mode" and "Ventilation" settings for the GPU and the "Frequency governor" setting for the CPU. It's fine if you would like CoreCtrl to control everything. It's not if you don't. It would be better if it was possible to be able to choose which settings it takes control over and we would ideally like all the settings to be set to a "Do not control" option by default.
It would also be much better if each profile could have more than one executable attached to it. There really is no reason to have 30 different profiles in order to make the CPU and GPU ramp up upon launching a game.
CoreCtrl is absolutely worth a try if you want a easy way to change the systems performance settings when you launch games. It does, as mentioned, have some draw-backs and it's a program which should simply be avoided if you are using a custom fan-setup controlled by
fancontrol or similar software.
CoreCtrl is a fairly new program and it is in rapid development. The best way to acquire the technology is to compile it from git. The code can be checked out from
You will need some dependencies to install it,
botan2-devel qca-qt5-devel are packages you likely do not have which you will need. CoreCtrl uses the cmake build system. cmake will tell you if you are missing any additional dependencies.
CoreCtrl relies on a daemon which needs to be launched as root by dbus. This functionality will not work if it's installed into
/usr/local/ which means that installing it into
/usr is preferable. This can be archived by adding
-DCMAKE_INSTALL_PREFIX=/usr to cmake. Thus; it can be built like this:
git clone https://gitlab.com/corectrl/corectrl.git cd corectrl mkdir build;cd build cmake -DCMAKE_INSTALL_PREFIX=/usr .. make -j$(nproc)
You will of course have to
make install as
root once it's done building. It doesn't take long.