Three Simple Tweaks for Better SSD Performance
Productivity Sauce
As I explained in the previous post, replacing my notebook's hard disk with an SSD significantly improved the overall system performance -- even without any additional tweaking. But there are also a couple of simple tricks that can boost performance even further. The first one is to disable the sreadahead service. The sreadahead tool helps to speed up the boot process with conventional hard disks, but it actually slows the boot with SSDs. To disable the service, open the sreadahead.conf file for editing using your preferred text editor:
sudo nano /etc/init/sreadahead.conf
Comment then the following line:
exec /sbin/sreadahead -t 0
Next trick is to add the elevator=noop kernel boot parameter to disable the elevator scheduler. On Ubuntu 9.10, open the grub.cfg file for editing:
sudo nano /boot/grub/grub.cfg
Add then the elevator=noop parameter as follows:
linux /boot/vmlinuz-2.6.31-15-generic root=UUID=b5c7bed7-58f1-4d03-88f4-15db4e367fa0 ro quiet splash elevator=noop
This scheduler is used to read and write data from the hard disk sequentially. Since an SSD is not a conventional hard disk, disabling the elevator scheduler significantly improves the read and write performance of your SSD.
Finally, you might want to set the file system mount option to noatime. To do this, edit the /etc/fstab file, so it looks something like this:
/dev/sda1 / ext4 noatime,errors=remount-ro 0 1
Adding the noatime option eliminates the need for the system to make writes to the file system for files which are simply being read -- or in other words, this means faster file access and less disk wear.
That's it. Now reboot your machine, and you should notice faster boot and better performance.
Comments
comments powered by DisqusSubscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters
Support Our Work
Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.
News
-
Red Hat Enterprise Linux 9.5 Released
Notify your friends, loved ones, and colleagues that the latest version of RHEL is available with plenty of enhancements.
-
Linux Sees Massive Performance Increase from a Single Line of Code
With one line of code, Intel was able to increase the performance of the Linux kernel by 4,000 percent.
-
Fedora KDE Approved as an Official Spin
If you prefer the Plasma desktop environment and the Fedora distribution, you're in luck because there's now an official spin that is listed on the same level as the Fedora Workstation edition.
-
New Steam Client Ups the Ante for Linux
The latest release from Steam has some pretty cool tricks up its sleeve.
-
Gnome OS Transitioning Toward a General-Purpose Distro
If you're looking for the perfectly vanilla take on the Gnome desktop, Gnome OS might be for you.
-
Fedora 41 Released with New Features
If you're a Fedora fan or just looking for a Linux distribution to help you migrate from Windows, Fedora 41 might be just the ticket.
-
AlmaLinux OS Kitten 10 Gives Power Users a Sneak Preview
If you're looking to kick the tires of AlmaLinux's upstream version, the developers have a purrfect solution.
-
Gnome 47.1 Released with a Few Fixes
The latest release of the Gnome desktop is all about fixing a few nagging issues and not about bringing new features into the mix.
-
System76 Unveils an Ampere-Powered Thelio Desktop
If you're looking for a new desktop system for developing autonomous driving and software-defined vehicle solutions. System76 has you covered.
-
VirtualBox 7.1.4 Includes Initial Support for Linux kernel 6.12
The latest version of VirtualBox has arrived and it not only adds initial support for kernel 6.12 but another feature that will make using the virtual machine tool much easier.
noatime is safe for most application
atime (access time) is updated whenever a file system object is read -- even from cache.
ctime (ionode modification time) gets updated whenever the file system object's ionode is changed (e.g., file/directory is created, ownership is changed, permissions are changed, file/directory is deleted).
mtime (object modification time) gets updated whenever the file system object is modified (e.g., truncated, appended, overwritten).
Well-written backup applications use the mtime to flag modified files for progressive, incremental, and differential backup modes. If the backup application also preserves ownership & permissions, it should also look at ctime. atime is no use whatsoever here -- backups are interested about file changes -- not reads.
atime has a few edge cases. Some systems audit file reads to track usage. tmpwatch removes aged files from the /tmp directory based on atime. mail-notify looks at atime to notify users about new mail. Cache & proxy servers once used atime for pruning objects from their cache, but this has been largely replaced by tree indices that can weigh multiple factors (e.g., number of requests vs. aging).
For the most part noatime is completely irrelevant. If in doubt, read the opinions of the holy trinity of Linux development -- Linus Torvalds, Andrew Morton, and Ingo Molnar:
http://kerneltrap.org/node/14148
noatime may break some applications like backup tools
noatime implies nodiratime
Anon
Something similar may apply to general readahead too - if you are going to need those blocks later sequential readahead can still be a win as you will simply wait less later (at a point when you would have had to stall).
sreadahead
journaling on SSD is also a bad idea
fstab
/dev/sda1 / ext4 noatime,nodiratime,errors=remount-ro 0 1
setting readahead values for just one drive
blockdev --setra 0 /dev/sda
Obviously you'll want to put this command in a init.d file or similar...
p.s. this is only for 2.6 kernels
Test results
Re: GRUB configuration changes
Re: Quality information
There are many ways to skin a cat, and I don't pretend that my way is the best one. However, I did try all the modifications myself and they worked.
You are right, though. I should have thanked you for commenting on my post. I'm always grateful to people who find time to share their ideas and knowledge with others. Thank you!
GRUB configuration changes
on Ubuntu 9.10 I recommend editing /etc/default/grub instead of /boot/grub/grub.cfg. Any changes made to /boot/grub/grub.cfg directly will be lost the next time update-grub2 is executed (like when a new kernel or kernel-patch is installed via software update). So, by changing the line
GRUB_CMDLINE_LINUX_DEFAULT=quiet splash"
to
GRUB_CMDLINE_LINUX_DEFAULT=quiet splash elevator=0"
in /etc/default/grub and then running update-grub2 one can make this change more persistent.
Juergen Pabel
Re: editing grub.cfg is not advised in Ubuntu
thanks
Quality information
You also do things in a terribly dirty way.
Learn to disable a service. Uh uninstall readahead may be even esier. That and editing grub configuration properly.
Why don't you give it some time, get some real experience and test the modifications thoroughly then start filling the web with quality information?
Also, next time at least say "thank you".
editing grub.cfg is not advised in Ubuntu
The preferred way to change boot parameters in Ubuntu 9.10 is by editing /etc/default/grub, altering the line that starts with GRUB_CMDLINE_LINUX_DEFAULT=... to suit your needs. Once you have saved it, run update-grub to apply the changes to /boot/grub/grub.cfg. Verify that the changes are in place, and then reboot.
Or, in the specific case in this article, just "echo noop > /sys/block/DEVICE/queue/scheduler" to change the elevator without rebooting, substituting the correct device name for DEVICE.