[HowTo] Power savings setup| 2020-06-02

Important things

  • Make sure that you have installed working fine for your hardware LTS kernel or lastest stable kernel
  • Since 4.12 kernel you have to create a /etc/udev/rules.d/60-ioschedulers.rules with setup about I/O schedulers for different types storage. HowTo is described in this article.
  • Make sure that you have installed for your CPU Microcode
  • Make sure that you have added the appropriate entries in the GRUB configuration file
  • Make sure you have installed all of the updates


In default Manjaro ISOs provides lastest stable kernel release. If you have any issues/regressions hardware, you can simply change kernel to previous version. Please check official announcements forum threads to find out.

Check out https://www.kernel.org/category/releases.html for list of currently at the moment supported and maintained official kernel list.

You can simply use Manjaro Settings Manager for switch to another kernel branch OR using mhwd-kernel tool in terminal as root.

Current available list of kernel parameters is always available on https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html

CPUs Microcode

AMD CPU's users should have installed lastest amd-ucode package.
Intel CPU's users should have installed lastest intel-ucode package.

Adding advanced flags to the GRUB configuration file

This section IS NOT FOR NEWBIES. You need to know what hardware you've and set properly setup.
You can check what exactly flags are available for your hardware via command modinfo $MODULE_NAME | grep '^parm:'.

Example modinfo i915 | grep '^parm:' results:
modinfo i915 | grep '^parm:'
parm:           modeset:Use kernel modesetting [KMS] (0=disable, 1=on, -1=force vga console preference [default]) (int)
parm:           panel_ignore_lid:Override lid status (0=autodetect, 1=autodetect disabled [default], -1=force lid closed, -2=force lid open) (int)
parm:           semaphores:Use semaphores for inter-ring sync (default: -1 (use per-chip defaults)) (int)
parm:           enable_rc6:Enable power-saving render C-state 6. Different stages can be selected via bitmask values (0 = disable; 1 = enable rc6; 2 = enable deep rc6; 4 = enable deepest rc6). For example, 3 would enable rc6 and deep rc6, and 7 would enable everything. default: -1 (use per-chip default) (int)
parm:           enable_dc:Enable power-saving display C-states. (-1=auto [default]; 0=disable; 1=up to DC5; 2=up to DC6) (int)
parm:           enable_fbc:Enable frame buffer compression for power savings (default: -1 (use per-chip default)) (int)
parm:           lvds_channel_mode:Specify LVDS channel mode (0=probe BIOS [default], 1=single-channel, 2=dual-channel) (int)
parm:           panel_use_ssc:Use Spread Spectrum Clock with panels [LVDS/eDP] (default: auto from VBT) (int)
parm:           vbt_sdvo_panel_type:Override/Ignore selection of SDVO panel mode in the VBT (-2=ignore, -1=auto [default], index in VBT BIOS table) (int)
parm:           reset:Attempt GPU resets (0=disabled, 1=full gpu reset, 2=engine reset [default]) (int)
parm:           vbt_firmware:Load VBT from specified file under /lib/firmware (charp)
parm:           error_capture:Record the GPU state following a hang. This information in /sys/class/drm/card<N>/error is vital for triaging and debugging hangs. (bool)
parm:           enable_hangcheck:Periodically check GPU activity for detecting hangs. WARNING: Disabling this can cause system wide hangs. (default: true) (bool)
parm:           enable_ppgtt:Override PPGTT usage. (-1=auto [default], 0=disabled, 1=aliasing, 2=full, 3=full with extended address space) (int)
parm:           enable_execlists:Override execlists usage. (-1=auto [default], 0=disabled, 1=enabled) (int)
parm:           enable_psr:Enable PSR (0=disabled, 1=enabled - link mode chosen per-platform, 2=force link-standby mode, 3=force link-off mode) Default: -1 (use per-chip default) (int)
parm:           alpha_support:Enable alpha quality driver support for latest hardware. See also CONFIG_DRM_I915_ALPHA_SUPPORT. (bool)
parm:           disable_power_well:Disable display power wells when possible (-1=auto [default], 0=power wells always on, 1=power wells disabled when possible) (int)
parm:           enable_ips:Enable IPS (default: true) (int)
parm:           fastboot:Try to skip unnecessary mode sets at boot time (default: false) (bool)
parm:           prefault_disable:Disable page prefaulting for pread/pwrite/reloc (default:false). For developers only. (bool)
parm:           load_detect_test:Force-enable the VGA load detect code for testing (default:false). For developers only. (bool)
parm:           force_reset_modeset_test:Force a modeset during gpu reset for testing (default:false). For developers only. (bool)
parm:           invert_brightness:Invert backlight brightness (-1 force normal, 0 machine defaults, 1 force inversion), please report PCI device ID, subsystem vendor and subsystem device ID to dri-devel@lists.freedesktop.org, if your machine needs it. It will then be included in an upcoming module version. (int)
parm:           disable_display:Disable display (default: false) (bool)
parm:           enable_cmd_parser:Enable command parsing (true=enabled [default], false=disabled) (bool)
parm:           mmio_debug:Enable the MMIO debug code for the first N failures (default: off). This may negatively affect performance. (int)
parm:           verbose_state_checks:Enable verbose logs (ie. WARN_ON()) in case of unexpected hw state conditions. (bool)
parm:           nuclear_pageflip:Force enable atomic functionality on platforms that don't have full support yet. (bool)
parm:           edp_vswing:Ignore/Override vswing pre-emph table selection from VBT (0=use value from vbt [default], 1=low power swing(200mV),2=default swing(400mV)) (int)
parm:           enable_guc_loading:Enable GuC firmware loading (-1=auto, 0=never [default], 1=if available, 2=required) (int)
parm:           enable_guc_submission:Enable GuC submission (-1=auto, 0=never [default], 1=if available, 2=required) (int)
parm:           guc_log_level:GuC firmware logging level (-1:disabled (default), 0-3:enabled) (int)
parm:           guc_firmware_path:GuC firmware path to use instead of the default one (charp)
parm:           huc_firmware_path:HuC firmware path to use instead of the default one (charp)
parm:           enable_dp_mst:Enable multi-stream transport (MST) for new DisplayPort sinks. (default: true) (bool)
parm:           inject_load_failure:Force an error after a number of failure check points (0:disabled (default), N:force failure at the Nth failure check point) (uint)
parm:           enable_dpcd_backlight:Enable support for DPCD backlight control (default:false) (bool)
parm:           enable_gvt:Enable support for Intel GVT-g graphics virtualization host support(default:false) (bool)

Make backup a default grub file:

sudo cp /etc/default/grub /etc/default/grub.bak

Edit grub file in Your favorite text editor. For this HowTo I used nano.

sudo nano /etc/default/grub

Find line:


Paste the appropriate flags ''between the quotation marks'' as described below.

For more information on what these flags do, please read The Arch Wiki.

The story of _OSI(Linux)

ACPI OSI Linux Obsolete/legacy for OLDER devices with mostly BIOS FW.


From pre-history through Linux-2.6.22, Linux responded TRUE upon a BIOS OSI(Linux) query. Unfortunately, reference BIOS writers got wind of this and put OSI(Linux) in their example code, quickly exposing this string as ill-conceived and opening the door to an un-bounded number of BIOS incompatibilities.
For example, OSI(Linux) was used on resume to re-POST a video card on one system, because Linux at that time could not do a speedy restore in its native driver. But then upon gaining quick native restore capability, Linux has no way to tell the BIOS to skip the time-consuming POST -- putting Linux at a permanent performance disadvantage.
On another system, the BIOS writer used OSI(Linux) to infer native OS support for IPMI! On other systems, OSI(Linux) simply got in the way of Linux claiming to be compatible with other operating systems, exposing BIOS issues such as skipped device initialization.

So "Linux" turned out to be a really poor chose of
OSI string, and from Linux-2.6.23 onward we respond FALSE.

BIOS writers should NOT query _OSI(Linux) on future systems.
Linux will complain on the console when it sees it, and return FALSE.
To get Linux to return TRUE for your system will require
a kernel source update to add a DMI entry,
or boot with "acpi_osi=Linux".


More explain about OSI

STRONGLY PLEASE READ this before going forward: How to Choose the Proper ACPI Kernel Argument made by @linesma

GRUB Flags


WARNING: Users with modern devices (FW UEFI based) should not using ANY of additional flags EXCEPT really need them for resolving issues with lm-sensors, heating for example.
HP users should not use acpi=force acpi_enforce_resources=lax against ELAN Touchpad can missed from available devices.
See thread: Touchpad suddenly not recognised

acpi=force acpi_enforce_resources=lax

When not working backlight control function keys

acpi=force acpi_enforce_resources=lax drm.vblankoffdelay=1 acpi_backlight=vendor

ACPI - for the modern models of laptops with UEFI (2011 year production or newer) please adding after acpi_osi=Linux:

acpi_osi='!Windows 2012'

ACPI - for the modern models of laptops with UEFI (2014 year production or newer) please using:

This workaround is dedicated for Intel Skylike Laptops with NVIDIA Optimus freezes issue. See: Bumblebee GH-764:

acpi_osi=! acpi_osi="Windows 2009"


acpi_osi=! acpi_osi='Windows 2015'

On some laptops, when Fn keys or display backlight Fn keys does not works at all use blank acpi_osi value:


AMD - enable DPM for the graphics cards AMD Radeon. Flag Only for Linux Kernel built-in radeon module driver. [legacy]


AMD - enable HDMI Audio for the graphics cards AMD Radeon. Flag Only for Linux Kernel built-in radeon module driver. [legacy]


INTEL - Enable Early Kernel Mode Setting for i915 module.

  • Edit /etc/mkinitcpio.conf file and in MODULES section add i915.
# The following modules are loaded before any boot hooks are
# run.  Advanced users may wish to specify all system modules
# in this array.  For instance:
#     MODULES=(piix ide_disk reiserfs)
  • Regenerate boot images:
sudo mkinitcpio -P
  • Add to GRUB_CMDLINE_LINUX in grub conf file and update grub configuration:

Install X.org framebuffer video driver package:

sudo pacman -S xf86-video-fbdev --noconfirm --needed

Reboot for apply changes.

Disable IPv6 - don't load required kernel modules for IPv6 working

NOTE: be sure you have disabled IPv6 support for external network apps and services like ufw firewall tool, ntpd Netwok Time Sync Daemon or dhcpd. Otherwise app services will not working properly. You have been warned.

More details and samples are available in this ArchWiki article.

For disable whole IPv6 stack add this setting to grub command line:


Disabling Consistent Network Device Naming

Simplify this setting restore legacy network interfaces names like ath0 wlan1 and so on.


Don't print systemd version during boot


Disabling audit


Disabling PCIE ASPM Power Savings against issues


Disabling Watchdog feautre


NOTE: blacklist Watchdogs modules too:

blacklist iTCO_wdt
blacklist iTCO_vendor_support

Forcing enable power saving mode for Atheros WLAN devices

In default ath9k module don't switch to power saving mode under battery power mode.


Disable all current mitigations to regain the maximum possible lost performance

UPDATE NOTICE 2020-04-09 from @FadeMind

Since discovering a lot of FW Intel Microcode CVE's Linux kernel slowed down a lot (multicore 15% down, single core 25% down).
See https://www.reddit.com/r/linux/comments/b1ltnr/disabling_kernel_cpu_vulnerabilities_mitigations/

On site https://make-linux-fast-again.com/ they are available flags for disabling ALL of fixes maded in lastest kernel.

mitigations=off does not disabling all of them.

THERE IS a flag sentence.

mitigations=off noibrs noibpb no_stf_barrier tsx=on

After applying changes in grub AND REBOOT you can check status of mitigations via command:

sudo spectre-meltdown-checker

Disable Synaptics RMI4 spam in some Lenovo ThinkPads.

If you have spam message rmi4_phisical rmi4-00: Failed to read irqs, code=-6 or similar you can disable it via grub flag:


Save applied changes to a file. Execute the command in a terminal:

 sudo update-grub

Installing additionals for TLP

TLP is installed, customized and enabled in Manjaro ISOs. You can install additional recommended tools for boost/extend power saving.

In a terminal, run the following command:

sudo pacman -S --needed tlp tlp-rdw iw smartmontools ethtool x86_energy_perf_policy

Disable RFKILL services:

sudo systemctl mask systemd-rfkill.socket systemd-rfkill.service


Check current settings of TLP via

sudo tlp-stat
# /etc/tlp.conf - TLP user configuration
# See full explanation: https://linrunner.de/en/tlp/docs/tlp-configuration.html
# New configuration scheme (TLP 1.3). Settings are read in the following order:

# 1. Intrinsic defaults
# 2. /etc/tlp.d/*.conf - Drop-in customization snippets
# 3. /etc/tlp.conf     - User configuration (this file)
# Notes:
# - In case of identical parameters, the last occurence has precedence
# - This also means, parameters enabled here will override anything else
# - IMPORTANT: all parameters here are disabled, remove the leading '#'
#   to enable them; shown values may be suggestions rather than defaults
# - Default *: intrinsic default that is effective when the parameter is missing
#     or disabled by a leading '#'; use PARAM="" to disable an intrinsic default
# - Default <none>: do nothing or use kernel/hardware defaults

After made changes in /etc/tlp.conf file restart systemd tlp service sudo systemctl restart tlp

Installing Linux Thermal Daemon

NOTE: thermald working only with Intel CPUs with P-State govenor

Before install thermald please install and configure propertly lm_sensors by command sudo pacman -S lm_sensors && sudo sensors-detect

Install, enable and run thermald daemon by following command:

NOTE - for now, the package thermald is in the AUR. We will use yay as an example here

yay -S thermald --needed

Manually enable and launch thermald systemd service:

sudo systemctl enable thermald && \
sudo systemctl start thermald

REQUIRED FOR 4.12 and NEWER. Dynamically changing the scheduler I/O disks.

Manjaro using in default mq-deadline. For customize I/O scheduler since 4.12 kernel YOU HAVE TO create a 60-ioschedulers.rules UDEV rule file. They are available new optionals schedulers.
Higher read/write performance for the solid state drives (SSD) have mq-deadline scheduler. You can automate the process of change scheduler disk I/O, depending on whether the disk is rotating (HDD) or not (SSD).

Create a new file:

sudo nano /etc/udev/rules.d/60-ioschedulers.rules

Paste this code into it:

# set scheduler for NVMe
ACTION=="add|change", KERNEL=="nvme[0-9]*", ATTR{queue/scheduler}="none"
# set scheduler for SSD and eMMC
ACTION=="add|change", KERNEL=="sd[a-z]|mmcblk[0-9]*", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="mq-deadline"
# set scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq"

Update grub via sudo update-grub and restart the computer.

You can check current using scheduler for all connected disks by command:

 cat /sys/block/sd*/queue/scheduler


This topic is just BASIC guide for tweaks and improving performance. Since lastest major update this topic a lot were changed in hardware and software code self.
I encourage you to read the documentation TLP. You can customize the service to suit your needs. This topic contains the basic configuration to work properly.

See Also

Power savings for laptops
Fstab okay for SSD?
Checking "blk-mq" is active
Laptop overheats and crashes on high power
Laptop doesn't wake from suspend - Frozen black screen
10 things to do for Manjaro 64 bit xfce?
Fan control
Fstab okay for SSD?
Maximise/ optimise battery life
Switching CPU hyperthreading on or off in Manjaro x64
Top 10 Things to do after a fresh install - 2018 Edition
Optimizing Linux for Slow Computers | AkitaOnRails.com
Kernel module for laptop to incress battery life
The operating time from the battery (Gnome 3)
[SOLVED] ACPI Issues when running with lid closed - Cannot shutdown or reboot
Manjaro v17.1-rc4 feedback thread
KDE Plasma problems: Volume control, Brightness adjustment, Data traffic, LtoR layout [Solved]
AMD GPU power saving settings?
Fn keys manual setup, not sure if it should be in newbie or advanced forum
DELL workstation huge performance problem on battery
ASUS Ryzen 5 3550h laptop has bad Linux support
Did power saving guide, now performance is laggy
Keyboard Issues on Opening Laptop after Suspend to RAM
Brightness Fn-keys Manjaro KDE [SOLVED]
lm-sensor zeigt hohe Temperatur an
fancontrol not at all working with MSI GF63
How fix fonts during boot for intel i915
How fix fonts during boot for intel i915
PowerTOP Startup Script
Script-Screen off
Reducing RAM use in KDE
ACPI error on boot - Nvidia/Intel hybrid BumbleBee
System freeze - wont boot when bumblebee is installed
Elevated System Temperature and loud fan
[Stable Update] 2018-04-02 - Kernels, ZFS, Pamac, Udisks2
Once more a NVMe related issue, I think
GNOME on laptops: battery consumption
Fan is not running and my laptop is melting
Angry power saver mode
Battery drains
System Profiler says no Battery on Laptop
CPU overheating error/warning on brand new laptop
Intel-virtual-output - High temperature causes Linux crash
Setting up TLP+thermald -- modprobe: FATAL: Module cpuid not found
KDE black screen with cursor after suspend
Formatting to NTFS with same logical/physical sector size?
Top 10 Things to do after a fresh install - 2018 Edition
Battery saving recommendations
Does anyone have any battery saving tips?
Battery Life
WiFi realtek card
[Testing Update] 2018-08-03 - Kernels, Jade, Adapta, Haskell
Fan too loud on HP laptop
My PC is overheating while playing native steam game
Black screen after installing video-nvidia-390xx
Manjaro stuck after Grub
XPS 13 Intel Turbo boost issue/cpu leak
Regarding KDE install on Dell Laptop
Fan Running at Full Speed
Bumblebee Kurulumu
[Testing Update] 2019-04-01 - Mate, KDE-Dev, Cinnamon, Deepin, Browsers, Systemd
Battery problems
Videos stuttering
high temp manj 18.0.4 macbookPro9,2
No battery Indicator
Lm_sensors - detecting fans
Problemas para Suspender e Hibernar
Thermald error: missing /etc/thermald/thermal-conf.xml
Anyway to get more battery life from my macbook pro?
Is there a way to overclock an intel CPU without making use of the bios?
Serious problems with the battery life
Wi-Fi CPU Frequency Higher than with LAN
A (preferably GUI) tool for tweaking / managing settings for Intel HD Graphics GPU
Cpupower - working instructions needed
What is tick_sched_time and why it is consuming so much battery?
thermald now in AUR not in repos
Manjaro-i3 18.0.4 released
Suggest Kernel Boot Parameters
Better thermal control for Intel HD Graphics?
Chrome/Firefox crashes randomly
Laptop feels hot
Manjaro doesn't turn completly off and doesn't restart
Power saving (after looking for wiki)
Problem with Hibernation
Desktop freeze - how to figure out the reason
External HDD showing in lsusb but not visible in file manager
Background (Wallpaper and Lock Screen) crash when computer goes to sleep.
How to improve battery life?
My first impressions with Manjaro
laptop battery drains really fast. Less than an hour
Optimising kernel for battery life
Battery drain compared to WIN10
[Testing Update] 2019-12-01 - Kernels, Nvidia, Systemd 243, Alsa
My laptop is running hot on Intel + Radeon
Random Freeze, just don't know where to start
CPU temperature is higher then expected
Install New Manjaro 19 Can't Go To Sleep
nVidia proprietary freezing for short periods of time on SSD activity
Manjaro 19.0.2 (KDE) on DELL XPS 15 9560 - some remarks
SSD hangs up
HDMI sound issue (Dell G3, Cannon Lake)
Fine Tuning Energy Saving?
[CPU] AMD a6-9220e performance - won't get near turbo speed
thermalD does not work - issue w/ AMD FX CPU
Large power drain with Quadro P1000 Mobile
[SOLVED] OS temporary freezes before shutting down
[SOLVED] OS temporary freezes before shutting down
After waking from Suspend laptop fans power up to max
[Solved] Multiple random KDE [Stable] Tower Freezes, over months
Laptop battery backup in manjaro
Trouble with dual graphics setup
[solved] Need help with laptop power management
Power saving (after looking for wiki)
lightdm.service + systemd-backlight load time
Wifi very slow and brightness don't work
Brightness keyboard control doesn't work
Plasmashell (KDE) - High load over my CPU
Issues on wakeup from suspend
S.M.A.R.T + Trim on SSD
Maximize Battery Usage, How?
Awe-Struck + Problems installing/running Manjaro
Brightness keys not working in Xfce, although I can change brightness elsewhere and keystrokes register
Backlight is not working correctly
My experience with Manjaro KDE coming from KDE Neon
Manjaro Cinnamon freezing "randomly" :-(
How to install intel graphics
Battery backup compare windows/linux
Manjaro on old Toshiba?
Problems with Optimus and Prime
Backlight keys not working
New laptop. Loud fan. lm_sensors can't detect fan
[SOLVED] ALT+F4 not working
I/O scheduler
Wi-Fi broken after suspending my Samsung RV509
[Stable Update] 2017-05-19 - Kernels, LibreOffice, Mesa, Thunderbird, Cinnamon
Lenovo Ideapad 510s Fan always on
BFQ is not the default scheduler in kernel 4.12
Ideas for manjaro-architect
Tlp and tlp-sleep
Battery life in laptops running Manjaro
Suspend to ram fix for the lts kernel linux49
Issues with backlight on a Samsung Laptop
Battery life worse than windows
[Unstable Update] 2017-09-22 - Nvidia 384.90, Nvidia 340.104, Nvidia 304.137, Haskell, Python

Thanks for tutorial @FadeMind could you add how add kernel parameters for Ati and Nvidia, I cant get it from Arch wiki. Please wikified and put to Manjaro wiki that is so important topic.


thanks for the blk-mq scheduler tip ... testing now.

1 Like

@mgundogdu Please read this howto with care. I mention how to ADD and USE flags. If you don't understand GRUB config file specify, please begin basic setup guide learn.


I don't want spend time for transform MD text code in to WIKI code syntax, too much work to do here.


I found out manjaro much more cooler than my previous "bloated" Ubuntu, thanks for all the detailed tutorials!:slight_smile:


I've just tried these steps and all looks good except that plymouth doesn't work, it see it flash up very briefly and then disappears. The image that is where when it does show looks to be duplicated 4 times in each quarter of the screen and quite small.

This what I have:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash threadirqs acpi_osi=Linux acpi_osi='!Windows 2012' acpi=force acpi_enforce_resources=lax drm.vblankoffdelay=1 acpi_backlight=vendor i915.modeset=1 rd.udev.log-priority=3 libahci.ignore_sss=1"

I suspect it is the i915.modeset? Is there any way to fix this? I can live without plymouth but I would prefer to just fix it.

EDIT: nevermind, removing that line did fix it.

It was the mere mention of Windows 2012 that broke things.

That's my story, and I'm sticking to it.


Errn Guys,

how many of you were successful in configuring this Power Saving stuff?

And how good was the results?

It sounds really awsome but I'm not gonna lie... it looks pretty intimidating

1 Like

I was able to run through this pretty quick... However, being a long time linux user, I only used half of the information.

Research a little into what each piece of this does, maybe one or two checklist items at a time and see how it goes. This article seems written in a straightforward fashion that should be somewhat simple to reverse.

It also depends on your setup and what you're trying to accomplish. For me, this article is a good guide to Fn keys and acpi boot information.

Simple answer, if you don't care about performance and you care about battery life, do everything. If you know which ones hinder performance and need performance, skip the ones that hinder performance.

I come from the debian world, so the idea of having to reimage less often seems nice to me... assuming I don't break everything in the process of learning.

This guide is not for newbies :wink:

1 Like

Edit - this was @amonobeax - sorry.

You can just start with Microcode, TLP and thermald - easy enough ... then you can add grub flags that pertain to your system - maybe just 1 at a time (read up on how to edit flags at boot in case you mess it up) ... not too scary there.
(heres mine on a newish intel system + SSD)
GRUB_CMDLINE_LINUX="scsi_mod.use_blk_mq=1 acpi_osi=Linux acpi_osi='!Windows 2015' acpi=force acpi_enforce_resources=lax i915.modeset=1 kernel.nmi_watchdog=0 rd.udev.log-priority=3"

The question persists is it worth it?

It concerns me that most of the material I can find about power saving the Author never mention results... which IMO suggests the effect is marginal.

It'd be so much better if authors did something like:
I gave up this and this for % of battery life gain.

I dunno, the benefit of tlp and thermald is 1-2 hours of battery life for me. The other optimizations seem to provide lesser gains. Optimizing desktop for lower cpu usage can have greater impact (if you can go from 2-3% idle to 0-1% idle).

Not so sure that's the biggest power draw in most machines.
You want long battery run time:

  1. Turn down the screen brightness
  2. Invest in an SSD big enough to hold everything. Move seldom used stuff to some NAS or another Mains powered machine that you keep running with the monitor off.

Since forever, the screen takes more power than any other component.
Modern CPUs ramp the power up and down so efficiently that you don't have to micro-manage them anymore.


Sure, not the biggest issue. But can make a noticeable difference still, for example 20 minutes gained from using a wm instead gnome. Btw, I counted brightness as a part of the desktop optimization.

I would consider myself a newbie. Followed this tutorial. Was managable. What I did notice on the system monitor is that all 4 cores now seem to be working at the same time which I guess implies a better use of the CPU. However this could also be related to switching from 4.4 to 4.9. 4.4 has never worked great for me on my Skylake laptop. Well I guess even if the improvement is marginal it's still worth it given the few minutes of implementing these.

BTW Intel Microcode was already installed on mine so I think that step is no longer necessary.

When an article has more power than a nuclear bomb. Thanks for all the time you have invested to write this awesome article. Cheers :beer:

1 Like

This is a solid tutorial!!

Thank you for making this.

I was just wondering that how are NVMe drives handled with Kernel 4.12?

Section with blk-mq is outdated. According to arch wiki link it now requires two commands to activate.
Does someone knows is the mq schedules are better for HDD/SSD setup?

using scsi_mod.use_blk_mq=1 i get the I/O scheduler mq-deadline which is correct as far as I'm concerned since I'm using an SSD. I replaced the elevator=deadline command so am quite happy with this new mq-deadline being the enabled scheduler.

it's a new type of scheduler added in later kernels since this tutorial was written up as explained in the arch wiki 'improvement' comment

Reason: Linux 4.12 and later introduced new schedulers: [none] mq-deadline kyber bfq (Discuss in Talk:Improving performance#)

Forum kindly sponsored by