Tweaks for a better performance
Ubuntu, by default, provides cool desktop environment with some default settings which may consume much resource in the system. Tips here are to speed up Ubuntu, and they are valid for most versions of Ubuntu and can also be applied in Linux Mint and other Ubuntu based distributions.
Last update: 2022-06-22
Table of Content
- Disable animation
- Reduce startup applications
- Add user to sudoers
- Use a faster installation method
- Disable unattended update
- Change network connection priority
- Install a lightweight Desktop Environment
- Keep the cache in RAM
- Use temporary folder in RAM
- Disable Firewall log
- Disable journal feature
- Disable access time
- Remove Grub timeout
Disable animation#
Ubuntu comes with cool effects, but it consumes system resource. Turn it off is a good way to increase system performance.
Open a terminal and enter this command:
gsettings set org.gnome.desktop.interface enable-animations false
Reduce startup applications#
First make all startup applications visible, because in Ubuntu, most of them are hidden by default:
cd /etc/xdg/autostart/
sudo sed --in-place 's/NoDisplay=true/NoDisplay=false/g' *.desktop
Now check the Startup Applications, uncheck what you don’t need, for example:
- Evolution Alarm
- Orca Screen Reader
- Ubuntu Report
- Update Notifier
Delay the execution by adding sleep x;
before the execution command of the applications.
Add user to sudoers
#
To skip entering password on sudo
command, add current user to sudoers
with the rule NOPASSWD
:
sudo bash -c "echo '$USER ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/$USER"
Use a faster installation method#
Mirror server
Ubuntu contacts to many repos to download, update its packages. Choose the best mirror server is a good way to speed up system update or application installation.
In Software & Updates → Ubuntu Software → Download From and choose Select Best Server.
No language translation
Suppressing the language translation while updating will slightly increase the apt
update speed. To do that, open the following file:
sudo nano /etc/apt/apt.conf.d/00aptitude
And add the following line at the end of this file:
Acquire::Languages "none";
Use apt-fast
apt-fast
is a shell script wrapper for apt-get
that improves updated and package download speed by downloading packages from multiple connections simultaneously. Install apt-fast
via official PPA using the following commands:
sudo add-apt-repository ppa:apt-fast/stable && \
sudo apt update && \
sudo apt install -y apt-fast
Automatic installation
First, add new repo to source list:
sudo bash -c 'echo "deb http://ppa.launchpad.net/apt-fast/stable/ubuntu bionic main" > /etc/apt/sources.list.d/apt-fast.list'
then use non-interactive method:
sudo apt-key adv \
--keyserver keyserver.ubuntu.com \
--recv-keys A2166B8DE8BDC3367D1901C11EE2FF37CA8DA16B && \
sudo apt update && \
sudo DEBIAN_FRONTEND=noninteractive apt install -y apt-fast
Add alias for apt-fast
:
echo 'alias sudo="sudo "' >> ~/.bash_aliases && \
echo 'alias apt=apt-fast' >> ~/.bash_aliases && \
echo 'alias apt-get=apt-fast' >> ~/.bash_aliases && \
sudo bash -c 'echo "alias apt=apt-fast" >> /root/.bash_aliases' && \
sudo bash -c 'echo "alias apt-get=apt-fast" >> /root/.bash_aliases'
Source the bash file if you want the alias gets effective immediately:
source ~/.bash_aliases
Disable unattended update#
Ubuntu has a feature named Unattended Upgrades, which installs the latest security (and others) updates automatically whenever they are available. It comes pre-installed and enabled by default in the recent Ubuntu versions. While this feature helps to keep the Ubuntu system up-to-date, it is also quite annoying sometimes.
To disable unattended upgrades on Ubuntu and its derivatives, run:
sudo dpkg-reconfigure unattended-upgrades
Then choose No
and hit ENTER
to disable unattended upgrades.
Change network connection priority#
If machine is connected to Wi-Fi and Ethernet simultaneously, here is a method to set priority connection.
Install ifmetric
tool which can be used to change the metric of any interface:
sudo apt install -y ifmetric
To use this, first see the metrics using route command:
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.42.0.1 0.0.0.0 UG 100 0 0 eth0
0.0.0.0 10.42.0.2 0.0.0.0 UG 600 0 0 wlan0
The interface with lower metric is preferred for Internet.
Here, eth0
has lower metric, so it will be preferred over wlan0
.
If you want to prefer wlan0
, then lower its metric:
sudo ifmetric wlan0 50
Now, the routing table would look like:
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.42.0.2 0.0.0.0 UG 50 0 0 wlan0
0.0.0.0 10.42.0.1 0.0.0.0 UG 100 0 0 eth0
Now Linux will be using wlan0
for Internet. The change will be reflected immediately.
Install a lightweight Desktop Environment#
By default, Ubuntu uses GNOME 3 and GDM3, however, they are too heavy. Many users have reported that they can save 1 GB of RAM when using a lightweight desktop environment, such as LXDE, LXQt, XFCE.
Here are some choices:
MATE (GNOME2)
MATE is a lightweight desktop based on GNOME2 base code, it’s fully open source and a very nice option.
sudo apt install ubuntu-mate-core
Lubuntu (LXDE/LXQt)
Lubuntu is another lightweight option which I recommend if your system is low on resources or if you are giving new life to an older computer. Install it using this command:
sudo apt install lubuntu-core
Xubuntu (XFCE)
Xubuntu is an Ubuntu derivative based on the Xfce desktop environment that is light, simple, stable, but it’s also highly customizable. If you want to try it, use the following command:
sudo apt install xubuntu-core
When asked, select lightdm
as the Desktop Manager, instead of gdm
.
Missing packages in a minimal installation
The most happened issue is missing fbdev
which shown in the log:
...
(WW) Warning, couldn't open module fbdev
(EE) Failed to load module "fbdev" (module does not exist, 0)
...
Fatal server error:
(EE) no screens found(EE)
...
To install fbdev
, run:
sudo apt install xserver-xorg-video-fbdev
Keep the cache in RAM#
Computers with at least 12 GB of memory (RAM), will probably benefit by shrinking the cache less aggressively.
sudo gedit admin:///etc/sysctl.conf
Add below lines at the bottom of the file:
# keep the cache
vm.vfs_cache_pressure=50
Use temporary folder in RAM#
Turn on tmpfs
and mount /tmp
on it:
sudo cp -v /usr/share/systemd/tmp.mount /etc/systemd/system/
sudo systemctl enable tmp.mount
Disable Firewall log#
You usually don’t care about this kind of log, so let it go:
sudo ufw logging off
Disable journal feature#
Only disable journal feature on a separated disk which contains only build source code and data.
A journaling file system is a file system that keeps track of changes not yet committed to the file system. In the event of a system crash or power failure, such file systems can be brought back online more quickly with a lower likelihood of becoming corrupted.
On build server machine, system failure is rare, so you can disable this journaling feature.
Press ESC
on boot, then select Advanced Boot option → recovery mode.
In the Recovery Menu, select root
to enter the command line mode.
Trigger the emergency mount, and then turn off the journal feature on the target disk:
echo "u" > /proc/sysrq-trigger
tune2fs -O ^has_journal /dev/<disk>
Verify with:
debugfs -R features /dev/<disk>
If you are disabling on a data storage, do not need to go to Recovert mode. Just unmount the disk and use above tools with sudo. E.g.:
sudo umount /dev/sda
sudo tune2fs -O ^has_journal /dev/sda
Disable access time#
Linux writes the access time every you read a file. It’s the very rare program indeed that relies on access time, so disabling access time is safe virtually everywhere.
To disable access time, add noatime
into the mount option in /etc/fstab
on the target device.
For example:
/dev/disk/by-uuid/<uuid> /mnt/work auto nosuid,nodev,noatime,nofail,x-gvfs-show 0 0
Remove Grub timeout#
The grub gives you 10 seconds to change between dual boot OS or to go in recovery. This time can be reduced, by entering below command to open grub configuration:
sudo gedit /etc/default/grub &
Then change GRUB_TIMEOUT=10
to GRUB_TIMEOUT=1
.
And update the settings:
sudo update-grub