I will be updating this guide from time to time with new information as I come accross it or correct old mis/information that exist as I wrote this while being a newbie. So check back every month or so if you need.
Garuda Linux by default is configured to provide the best performance out of the box on your Desktop machine. With a little setup you can use garuda on your laptop just fine as well.
My laptop has an i7 9750H processor which on the default pstate driver thermal throttles very badly. I have noticed the cpu never crossed 2.7GHz which is 100MHz off base (2.6GHz). But when I added:
intel_pstate=passive
I began noticing much better cpu scaling.
Intel Pstate is not suitable for laptop usage at this moment. At least as far as my specs go. The Pstate performance governor just tries to push all cores to max boost without any forethought causing it to throttle itself down. But even then it only throttles down to base instead of downclocking intelligently to offset the boost clock depending on core load. I have not used Pstate on desktop so I don’t know if the situation is better there but it certainly does not work here. This simple “fix” should resolve most of the overheat issues and it works for any distro not just arch based ones.
What follows is a comprehensive list of everything I know about running Linux and Linux Utitlities on laptops. Basic knowledge of your laptop’s specs and performance (at least on windows) is expected as depending on your specs you can get away with keeping some of the tweaks. I am running an I7 9750H which is a 6c/12t processor and is infamous for its thermal output.
This guide should work for any linux distro on laptops unless you are using ASUS ROG, which has its own dedicated linux utility which might be better suited for you.
In general if you are going to use an arch distro you should familiarize yourself with the wiki since it will be your primary goto for majority of fixes. When asking for help people usually will assume you have tried at least the stuff on the wiki before asking so you have been warned.
Before we begin, ensure your system is up-to-date with a good old fashioned -Syu
run.
sudo pacman -Syu
This will ensure you have no issues down the line due to conflicts between older and newer packages.
You can use pamac
better known as Add/Remove Software
to do everything and it will take care of updating for you if you’re not comfortable with the terminal yet. If you do encounter an error consider searching the forum as other people may have already found the solution. It helps keep the forum clean and organized.
Part 1: Garuda on Laptops
Since Garuda is an arch based distro the easiest thing to do would be to goto the laptop section of the archwiki linked above. Once there you will find every bit of information available for running arch (and by extension garuda) on a laptop down to specific models.
Following that is Fan Speed Control
Depending on your make and model Garuda may detect all your temperature sensors and fans appropriately in which case it should use them appropriately out of the box. In case it does not following this part of the wiki will allow garuda to detect your cooling configuration.
Once you have the cooling setup you can use custom config files to further optimize how you want to run your laptop.
If you are running intel 7th gen or above consider following this guide as well:
**Part 2: Garuda on Battery **
Garuda being a gaming distro, is configured to give the best performance out of the box. Naturally if you plan to use your laptop away from a charger you will need to change some things.
Starting off with performance-tweaks
:
sudo pacman -Rs performance-tweaks
These tweaks essentially set your governor to performance which boosts to maximum frequency as much as possible and set your energy-performance-bias to the same as well. Not good for battery life. Of course garuda provides the exact opposite of this as well in the form of:
sudo pacman -Syu powersave-tweaks
Which do the exact opposite. Of course you can only have one installed since they both tweak the same settings which means in order to get back to gaming you need to reverse the above process.
However that is needless tedium and at this point you should familiarize yourself with the cpupower
utility which comes pre-installed.
sudo cpupower frequency-set -d MIN_FREQ -u MAX_FREQ -g powersave/performance
With this single command you can set/remove restrictions on your cpu’s performance allowing you to customize to your usecase. Furthermore you can simply add it to a script, with appropriate values for MIN_FREQ and MAX_FREQ, which can be set to run depending on the powersource.
OR
You could automate the whole process with the help of tlp
and batteryimprove
listed in optional utilities.
Part 2.5: Laptop heebiejeebies
Laptop manufacturers use all kinds of voodoo magic and pixie dust and end up creating incredibly proprietary stuff in the process. The thing that deals with all this nonsense is your kernel. However not all kernels deal equally which may lead to some compatibility issues.
By default Garuda ships with only the zen kernel. If you’re reading this for a fresh install Garuda Setup Assistant will ask you to install from a selection of kernels and you can use that. Just select linux
and linux-lts
from the options.
Otherwise install the linux
and linux-lts
kernel from your package manager.
sudo pacman -S linux linux-headers linux-lts linux-lts-headers
Its always a good idea to have at least the lts-kernel installed as a point of comparison/fallback. If something isn’t working you can always swap to the lts to check if its a kernel issue or not because usually lts (standing for long-term-support) is a heavily tested and reliable kernel.
Part 3: Optional Utilities
Following is a list of laptop centric utilities you may find useful. These are tools I have tried to various lengths but didn’t find much use for my needs. I leave them here for reference incase you find something you need.
auto-cpufreq: This package as the name implies will control your CPU frequency depending on current load and thermal headroom. This is vital for your laptop if you’re running linux. It ensures you get the best performance without overheating your laptop. Once installed simply enable and start the service with systemctl
. Now I have seen that the PKGBUILD
enables it by default but its better to do it again since it does not break anything.
You will need to remove either of the powersave/performance tweaks to use this utility
sudo systemctl enable auto-cpufreq.service
sudo systemctl start auto-cpufreq.service
You can check what its doing with auto-cpufreq --stats
to ensure its running properly.
Disclaimer: You may experience slowdowns on your laptop if you have an older CPU with auto-cpufreq
installed. In that case you can try disabling pstates by adding intel_pstate=disable
to your kernel parameters and using an application like core ctrl
to manually set the governor to ondemand
. Source
thermald: This package as the name implies helps to regulate your system temperature by monitoring system temps and using available cooling methods to keep your laptop from overheating. Thermald focuses more on keeping cool so if thats what you want install it and read on. If you are looking for performance though I’d stay away from this one. I originally was running this in tandem with auto-cpufreq
but found that it kept trying to throttle the cpu and competed with auto-cpufreq
TLP: This is THE linux tool for laptops. If you have the time, knowledge and patience then sitting down and customizing a tlp profile for your laptop and use cases is the best solution. I have not provided a repo link because you can easily install it through pacman
. There is also a gui in the AUR called tlpui
. At the core of tlp is a conf file which defines an extensive list of parameters to finely control every aspect of your laptop. I would encourage you to learn and make use of this tool. FYI it does allow turbo-boost. There is a repo linked below that provides a premade configuration if you do not want to tweak it yourself.
powertop: Powertop is a very versatile tool for managing and monitoring power consumption on your system. At its simplest the tool comes with an autotune feature which turns all of the best options to their best settings for most cases. You also have access to a cli interface to manually toggle which settings you want. However its a lot more powerful under the hood and its best you follow the link to their site where a detailed guide is provided for configurations. I do not use powertop so I cannot say much more than that.
On top of all this Garuda also has a package of tweaks for powersaving on laptops aptly named powersave-tweaks
that you can install.
BatteryImprove This is geared more towards the casual user/usecase. If you have a 6+ core laptop and you are not doing anything too demanding you may try this tool. This is mostly just a tlp config and a bash script for maximizing battery savings. I encourage you to look into it to see if the tweaks match your needs.
This guide is suitable for every laptop uptil this point. Now lets move onto laptops with dGPUs. I will be focusing on NVIDIA gpus because those are the only laptops I have. If you own an AMD dGPU feel free to reply to this post with your input.
Step 4: Laptops with NVIDIA dGPUs For laptops using optimus gpus you will need to first install the nvidia drivers. There are two methods for doing this:
-
Install using
nvidia-all
from Frogging Family. This version is pre-configured to work better on linux. However the drivers are external and need to be updated manually. They will not update through Add/Remove Software’s update option or pacman -Syu. -
Do a manual install with the drivers in the repos. Since they are in the repos they will be updated whenever you update the system.
sudo pacman -S nvidia-dkms nvidia-lts nvidia-prime nvidia-utils
You could install nvidia
instead of nvidia-dkms
however if you aren’t running a custom kernel or plan to. However on garuda with linux-zen
you will need dkms. Once the installs done, Reboot.
lsmod | grep nvidia
to check whether the driver is loaded after rebooting.
If you find the driver is not loaded then edit your /etc/mkinitcpio.conf
file and add nvidia
to the end of the
MODULES=(module1 module2 nvidia)
line inside the brackets. Then run sudo mkinitcpio -P
and reboot.
Once that is done we need to install optimus-manager
and optimus-manager-qt
DISCLAIMER: From Garuda Linux "Spotted Eagle" (210507) onwards optimus-manager
is shipped with all editions. Before installing check your installed programs to see whether it is already installed or not to avoid reinstalling.
sudo pacman -S optimus-manager optimus-manager-qt
optimus-manager This package will allow you to quickly swap between three modes of operation on your laptop: intel, hybrid and nvidia.
Intel mode will completely turn your nvidia gpu off making it inaccessible to the system.
Hybrid mode uses the intel gpu for everything. However you can use prime-run
to run games or other high-performance applications on the dGPU.
Nvidia will only use the dGPU for everthing.
Once again use systemctl to enable and start the service.
sudo systemctl enable optimus-manager.service
sudo systemctl start optimus-manager.service
optimus-manager-qt This provides a handy little indicator in your notification bar to easily tell what mode you are running on. It also proivdes a settings ui to manage optimus-manager.
You can access teh settings by right-clicking on the icon and choosing settings.
In the settings first ensure launch at startup
is ticked. Then click on optimus and you can choose which mode to startup in from startup mode
option.
Most important however is to goto Nvidia tab and setting dynamic power management
from No
to Fine
. This ensure the behaviour mentioned above for Hybrid mode.
That is all! Congratulations ! Now your garuda setup is optimized for laptop use. All of these tools can be configured and customized to your liking so be sure to check out their respective pages. I will add and update this guide as much as I can overtime. Thanks!