357

What are your tips for improving overall system performance on ubuntu? Inspired by this question I realized that some default settings may be rather conservative on Ubuntu and that it's possible to tweak it with little or no risk if you wish to make it faster.

This is not meant to be application specific (e.g. make firefox load pages faster), but system wide.

Preferably 1 tip per answer, with enough detail for people to implement it.

A couple of mine would be:

  • Install Preload (via Software Center or sudo apt-get install preload);
  • Change Swappiness value - "which controls the degree to which the kernel prefers to swap when it tries to free memory";

What are yours?

PS: Since this is not intended to have a unique answer but rather, several useful tips, I'm making this community wiki out-of-the-box.

11
  • 46
    It would be a good idea to mention how effective your tip is: how much of an improvement did you notice, or even better, measure? Aug 13, 2010 at 17:47
  • 5
    I have not found any evidence that changing the swappiness has any positive effect. It might give a temporary feeling of performance increase, that seems to subside quite fast. I have not seen any concrete evidence in form of benchmarks that would proof the effectiveness of changing the swapiness parameter
    – txwikinger
    Aug 14, 2010 at 14:27
  • 5
    I doubt it has any noticeable performance impact. The ttys used hardly any memory, nor would there be any significant cpu usage.
    – txwikinger
    Aug 16, 2010 at 14:37
  • 6
    Isn't "premature optimization the root of all evil"? (en.wikipedia.org/wiki/Program_optimization#Quotes)
    – Alejandro
    Sep 26, 2010 at 2:11
  • 2
    @Alejandro that quote assumes that you've done it as well as you could in the first place. May 16, 2012 at 13:26

37 Answers 37

187

If you are "the average Joe", then just don't do anything. Don't fiddle with programs or settings which you don't understand. Don't follow tips posted on the Internet how to improve the performance of your system by compiling some software yourself or by installing a selfmade kernel.

Some of those tips may give you minor performance improvements indeed, but some of them will also give you a real headache, if you changed the wrong setting, disabled the wrong service, installed the wrong driver etc.

Therefore just be happy about your nicely running system. And BTW: Why would you need those 5 percent performance improvements? It will not lead to typing your office documents faster or editing your holiday photos in half the time.

And just to be clear: If you are not the average Joe, but a developer/hardcore gamer/... needing any cycle you can get, you are not the target of this comment...

10
  • 81
    Tweaking settings and compiling your own kernel and software is a great way to learn. I think it should be encouraged, as long as people know that when they break things badly, they may need to re-install their OS.
    – Nerdfest
    Aug 21, 2010 at 14:09
  • 24
    Only people that really want to understand how the kernel works should consider compiling your own kernel. For most people, they should even know a "kernel" exists. Stick with a stock kernel and you can take advantage of the regular software updates.
    – Brad Figg
    Aug 22, 2010 at 20:11
  • 1
    @Brad, ah how the times have changed :) When I started with Linux we had to compile our own kernel since it was before dynamic modules were implemented. I don't miss it though! Aug 26, 2010 at 5:42
  • 2
    @Nerdfest That is a good point, my most important teacher in the linux-world have no doubt been the Gentoo manual... I never really got a working GUI, but I did learn a lot about how a basic linux install works! And that is practically the same on all the distro's Aug 26, 2010 at 8:25
  • 3
    I'm playing around with performance tweaks right now precisely for what I'm learning from them. That said there are two cases where I always want to tweak with Windows, and I'm having the same attitude with Ubuntu: 1. A system's so slow that every little helps. 2. A system's so fast that I can't help but wonder what it can be cranked up to! Middling systems I leave alone :) That said, a definite +1
    – Jon Hanna
    Jul 30, 2012 at 16:51
105

Disable automatic startup of any services that are not needed (or even remove the package completely).

A lot of packages start up services automatically. These services then use memory and CPU even they are hardly ever used. It is better in this case, to stop those services, or take them out of autostart, and start them up only if they are needed.

To remove applications from starting up on 10.04,go to System > Preferences > Startup Applications (may be slightly different on other versions)

On 12.04, you can go select the startup applications by clicking on the Dash Icon. Then, type startup and select "startup applications".




alt text

And just unmark the apps you don't need. But be sure about it, don't just remove apps you don't know. If you are not sure about one, leave it that way. A google search or new question here about specific programs will help.

3
  • 4
    Good one! simple and effective. I personally disable bluetooth related stuff, since my notebook doesn't have it.
    – Decio Lira
    Aug 13, 2010 at 17:14
  • 2
    Could you explain / add a link explaining how to view and disable/enable services under Ubuntu.
    – Skizz
    Aug 20, 2010 at 23:16
  • 1
    For Kubuntu/KDE users, the equivalent is: Start Menu Button -> System Settings -> System Administration -> Startup and Shutdown. There are two sections, one for 'Autostart' and one for 'Service Manager' (for long running daemons) and you may both start-stop services as well as making sure they don't start as a part of the standard boot sequence.
    – arielf
    Mar 3, 2013 at 20:37
76

[Disclaimer] Administer the following at your own risk.

Tushar Neupaney gives this advices here:

1. Use lighter applications (Replace your default applications with them)

  • Gedit >> Mousepad
  • Picture viewer (EOG …) >> Gpicview
  • Network Manager >> Wicd
  • Evince >> epdfview

2. Decrease Swappiness

  • sudo vim /etc/sysctl.conf

    Edit: vm.swappiness=10

3. For dual cores (Use Concurrency)

  • sudo vim /etc/init.d/rc

    Edit: CONCURRENCY=shell

    shell option is now obsolete. Default value is makefile and shell is by 2010-05-14 an alias for makefile.

4. Clean up apt cache at /var/cache/apt/archives and unneccessary apt-sources list in /etc/apt/sources.list

  • sudo apt-get autoclean

5. Install BUM (Boot Up manager)

  • sudo apt-get install bum

    Remove unnecessary applications and services from startup

6. Remove some unnecessary TTY’s

  • sudo vim /etc/default/console-setup

    Edit: ACTIVE_CONSOLES=”/dev/tty[1-3]“

    Note: goto /etc/init/ and change the tty’s files that you DO NOT want. Edit them and comment lines starting with “start on runlevel”. So, in this case, you’ll comment the start line in "tty4.conf" to "tty6.conf" files.

7. Install Prelink

  • sudo apt-get install prelink
  • sudo vim /etc/default/prelink

    Edit: PRELINKING=Yes

  • sudo /etc/cron.daily/prelink

    Actually, Prelink is useless since Feisty Fawn (because Ubuntu uses a very effective runtime linker now). In addition, it's intrusive - it directly modifies the executables and ultimately can break them. DO NOT do it.

8. Install Preload

  • sudo apt-get install preload

9. Get rid of kinit if you don’t use hibernate and sleep functions.

  • sudo vim /etc/initramfs-tools/conf.d/resume

    Edit: Comment (Put # in front of) RESUME=XXXX…………………….

9
  • 51
    This provides no information as to why we should follow your advice. Some context and benchmarks please. Oct 15, 2010 at 2:42
  • I've edited to add the asked 'context' ;-)
    – desgua
    Apr 17, 2011 at 1:52
  • 3
    I was trying number 3 and the comments above the line to change listed the valid options and 'shell' was not one of them. Is this answer old? Did the comment not tell me all the options?
    – John
    Jun 6, 2011 at 18:26
  • 1
    I tried number 3 as well despite that "shell" option was not mentioned as valid one. After edit booting took twice longer than when concurrency was set to "none". So I went back to orginal setting.
    – Wojciech
    Sep 1, 2011 at 21:09
  • sed -i -r '1s/(^[^#])/#\1/g' /etc/initramfs-tools/conf.d/resume one line but only add comment if do not exist - good do add in script :) Sep 28, 2011 at 18:40
43

Decrease your boot loader menu timeout

Sounds trivial, but I found the default 10 seconds in Ubuntu is too long for my tastes. Say my screen takes a bit to auto-adjust the res, I see the counter reads 8 seconds at first sight.

I would edit the timeout to 3 seconds, giving me a second to see the boot menu (accounting for the time my screen adjusts to the res). Plenty of time, as pressing the arrow keys to select another item stops the counter.

Grub (before 9.10 Karmic)

sudo -i gedit /boot/grub/menu.lst

Find and edit the "TIMEOUT" line

Grub 2 (new installs of 9.10 Karmic and after)

sudo -i gedit /etc/default/grub

Find and edit the "GRUB_TIMEOUT" line, and run sudo update-grub

35

If you are short of RAM, use zramswap or zram-config from Ubuntu repos. It's virtual swap that compresses unused RAM contents instead of putting them to disk (which usually freezes the system after you hit the RAM barrier). I experience little to no performance loss with it instead of system freezing every time I run out of RAM.

This works only for Natty and up (because you'll need kernel 2.6.37.1 or newer). For older systems you can use compcache, but you'll have to set it up manually.

For those who never hit the RAM limit it gives some speed boost on HDD systems anyway, but you'd better decrease swappiness to achieve the same effect.

SSD users: most likely you won't experience any speed boost, but zramswap can reduce SSD wear quite a lot.

4
  • 3
    Seems like a very useful app to have!
    – Decio Lira
    Oct 19, 2011 at 0:31
  • It's useful for low-ram systems, I wonder why it isn't installed by default for such systems?
    – NoBugs
    Feb 13, 2015 at 4:38
  • @NoBugs because Ubuntu developers are very conservative. But it is enabled by default on Ubuntu Phone.
    – Shnatsel
    Feb 13, 2015 at 15:32
  • @Shnatsel "Google uses zram in Chrome OS and it is also available as an option for Android 4.4 devices" (en.wikipedia.org/wiki/Zram)
    – NoBugs
    Feb 14, 2015 at 2:12
30

I experienced an overall performance boost after I added the "noatime" option to my filesystems (ext4 and reiserfs).

I cannot provide speed tests, but I invite you to try it and see for yourself.

Useful resource at Ubuntu Forum: Saving hard drive with noatime in fstab.

5
  • 4
    isn't relatime already the default in ubuntu? Sep 27, 2010 at 19:16
  • @ImaginaryRobots: "I experienced an overall performance boost after I added the noatime option to my filesystems (ext4 and reiserfs)." -- Do you mean "relatime"? -- Nope, I meant "noatime" :D
    – dag729
    Sep 30, 2010 at 14:37
  • 9
    This might break some email software that rely on this feature and a few backup tools. But for the casual user this should be OK as neither Thunderbird, nor Evolution would be affected. Though on Ubuntu, switching from relatime (default) to noatime won't bring much improvements. See lwn.net/Articles/244829 how relatime works and you will understand that it will already dramatically decreased the number of last access time updates.
    – Huygens
    Mar 28, 2012 at 10:51
  • No source of public access doc or properly guided, no further steps. Jul 25, 2022 at 9:05
  • Another source (from 2020), since the one linked in the answer is not public accessible anymore opensource.com/article/20/6/linux-noatime
    – dag729
    Aug 7, 2022 at 15:57
30

Change your Mechanical Disk for a SSD

Solid State Drives are much faster and seems to be the most bottleneck in almost every computer nowadays.

I, for one, have experienced decrease in boot time from ~15 seconds to ~3 seconds, and great decrease in first start apps (Firefox, for example, from ~5 seconds to less than a second).

Want some benchmark? Here is one.

3
  • 1
    If you computer's old, this may work mechanically (e.g. SSD with IDE connector), but as intended: a speed increase will depend on other bottlenecks of your system (like IDE connectors , for instance :) May 13, 2015 at 12:44
  • 1
    I'm surprised this answer doesn't get more up-votes. Nov 22, 2016 at 1:40
  • NVME network based is too faster the disk, even old laptop with SSD becomes lot more faster. Add 16+ GM RAM and no swap... great faster one Jul 25, 2022 at 9:07
22

I'm not sure if my answer would qualify, because Ubuntu usually means GNOME and Ubuntu variations that use lighther alternatives have slightly different names, like Xubuntu.

Getting rid of GNOME is the first thing that I usually suggest. If you are happy with something lightweight like fluxbox, do it.

4
  • I know that Archlinux is not Ubuntu, but I saw an exaggerated performance boost when I installed Ratpoison on my Archlinux box (yes, way too minimal for someone, but still a nitro boost for your box)
    – dag729
    Aug 22, 2010 at 20:39
  • 3
    Agreed, try XMonad, it's awesome. Oct 12, 2010 at 4:37
  • +1. Or install Ubuntu, but switch to xfce after the install. Dec 16, 2010 at 22:44
  • XFCE is a bit faster indeed, but just a bit and it uses the same amount of resources. Try Enlightenment (e.g. Bodhi Linux is Ubuntu 10.04 with Enlightenment), it's very lightweight and still has some visual effects of Compiz. Or try LXDE or Fluxbox, Linux Mint seems to have them integrated well.
    – Shnatsel
    Mar 31, 2011 at 18:32
21

Set vm.swappiness=10 in /etc/sysctl.conf. I get a noticeable speed improvement when I fill memory. Since I use Eclipse most of the time, physical memory can become a sparse commodity.

EDIT:

From the Ubuntu Swap FAQ:

"The default setting in Ubuntu is swappiness=60. Reducing the default value of swappiness will probably improve overall performance for a typical Ubuntu desktop installation. A value of swappiness=10 is recommended, but feel free to experiment. Note: Ubuntu server installations have different performance requirements to desktop systems, and the default value of 60 is likely more suitable."

The FAQ is pretty complete about explaining what swap is, how it is used and how to change it. Recommended reading for anyone thinking of tinkering with swappiness or the size of swap file on disk.

9
  • 2
    @Erigami: +1 for mentioning something that actually made a difference to you. Aug 13, 2010 at 18:04
  • 2
    @DecioLira: No. It pushes the apps I'm not currently using onto disk, meaning that the one I'm currently in has access to more physical memory.
    – Erigami
    Aug 13, 2010 at 19:40
  • 2
    Do you have any hardcore number that show the difference and in which situation and makes what kind of difference?
    – txwikinger
    Aug 13, 2010 at 20:02
  • 2
    @Erigami: I played around with swappiness for some time. And at the beginning it felt like it was faster, but with time it all seemed the same. Some real measurements would really be interesting.
    – txwikinger
    Aug 13, 2010 at 21:12
  • 2
    Various tests I have done prove that vm.swappiness=100 is better than 10. On a slow machine it will help loads, on a fast one it will make no difference (unless you run multiple GB apps pages into ram). It is win-win. Sep 28, 2010 at 22:30
19

As silly as it sounds, always update your system!

3
  • 6
    Yes. I notice improvements immediately after doing so.
    – ixtmixilix
    Oct 11, 2010 at 0:41
  • But: do so manually and perhaps via the command line. Daily updates via update mgr can freeze old systems (leaving you guessing what's going on). May 13, 2015 at 12:45
  • No way just update, always require optimization and tuning the parameters Jul 25, 2022 at 9:09
18

Put your /tmp directory into a ram disk

https://superuser.com/questions/175861/ramdisk-ubuntu-10-04

4
  • 8
    If you do this, then make sure to check and/or clean your /tmp directory every so often, otherwise you run the risk of running out of RAM just because some app forgets to clean out its temporary files. I read that this was actually a problem on some Solaris boxes at a point, because the OS would mount /tmp on a ramdisk and eventually it would fill up. A good performance booster if you use it right, though.
    – fouric
    Oct 24, 2012 at 21:34
  • Some have ram problem, this is for cpu!
    – Amir Fo
    Feb 4, 2019 at 19:17
  • 1
    generally this is only good advice if you have tons of ram, worth mentioning in the answer that this advice is not good option for PCs.
    – tymik
    Mar 9, 2019 at 14:51
  • I did this. Then I faced shit problems. For example eclipse not opening, system not upgrading etc. Becouse tmp folder is full. tmp dir must be 6 gb at least. Sep 19, 2020 at 8:02
16

On one Ubuntu machine I have, I found that setting desktop effects to none (disabling all the graphical effects) made a huge UI speed improvement.

6
  • 5
    This setting can go both ways. Sometimes allowing the GPU to do the work instead will free up the CPU and RAM and improve overall system performance.
    – ændrük
    Sep 3, 2010 at 20:32
  • 2
    Great -- how do you make that adjustment??
    – ixtmixilix
    Oct 11, 2010 at 0:44
  • @ixtmixilix: Right click on the desktop and select the display option (it's the bottom one IIRC - I'm at work and have to use SomeOtherOS).
    – Skizz
    Oct 15, 2010 at 11:11
  • thanks... your comment may mean I don't switch back to Debian, which was light years faster due to being less flashy... for the record (if other people want to try it) you get there under the 'change desktop background' menu... (?)... sorry but calling it that reminds me a bit of SomeOtherOS
    – ixtmixilix
    Oct 15, 2010 at 21:22
  • 1
    @ændrük How can I find out if which is the case for me? (whether my GPU is helping enough to keep desktop effects or whether I should disable them)
    – Eyal
    Jan 26, 2013 at 21:50
12

Tuning ext4 for maximum smoke

Enable writeback mode. This mode will typically provide the best ext4 performance. Note that it happens at cost of reliability as it disables journaling for writing data. Data may be written into the main filesystem after its metadata has been committed to the journal. As result old data may appear in files after a crash and journal recovery.

tune2fs -o journal_data_writeback /dev/sdXX

# Check fs options
dumpe2fs /dev/sdXX |more

Documentation from kernel.org:

In data=writeback mode, ext4 does not journal data at all. This mode provides a similar level of journaling as that of XFS, JFS, and ReiserFS in its default mode - metadata journaling. A crash+recovery can cause incorrect data to appear in files which were written shortly before the crash. This mode will typically provide the best ext4 performance.

Even more smoke

To squeeze even more performance add fstab options: data=writeback,noatime,nodiratime

i.e., edit your /etc/fstab find the UUID for your drives and add/replace existing options

/dev/sdXX /opt ext4 defaults,data=writeback,noatime,nodiratime 0 0

Ensure you have used tune2fs to turn on writeback mode BEFORE you edit your fstab file and BEFORE you reboot. I say BEFORE because I rebooted after I altered my fstab but before I turned on writeback mode and borked my boot. Nothing lost but I had to use a live CD to gain access and change my fstab. Safer if you enable on a non boot drive to test first.

Massive improvement in speed in both boot and shutdown and day to day use.

You can also turn off Journal mode that will give an added boost, for added safety make sure you have a UPS connected and working because with these features turned off your data isn't as safe, having said that my system doesn't have a UPS and it's power has been interrupted at least three times and I've suffered no data loss, but your mileage may vary.

4
  • may be its good to config these setting on laptop , no power down..... good configs i will try it
    – One Zero
    Mar 26, 2012 at 15:59
  • 3
    nodiratime is not needed here because noatime implies it
    – Shnatsel
    Jul 21, 2012 at 10:35
  • 1
    One could throw in disabling device barriers if you're looking for data-eating tweaks. That can increase performance several times, but in case of power outage your files are screwed.
    – Shnatsel
    Jul 21, 2012 at 10:39
  • Oh the good old days of potentially corrupted file systems after a power cycle. Jan 8, 2019 at 16:38
11

Buy as much memory as you can afford and the machine can hold.

5
  • 5
    ørn, the idea behind this question is learn a little more about the system, and how to tune for people who are interested about it. Just buying a new machine/parts is an obvious answer that don't teach anything.
    – Decio Lira
    Aug 25, 2010 at 22:42
  • 16
    Then mention that in the question. Buying more RAM is probably the simplest and most efficient way to speed the system up at all (since Linux uses the unused memory as disk cache). Aug 26, 2010 at 5:38
  • Also having more RAM than total program use and diskspace is pointless since past the size of all disks, there's nothing to stick in the write cache.
    – nanofarad
    Jul 17, 2012 at 18:33
  • @hexafraction most typical machine configurations have much less RAM than disk space. SSD-disks while fast, are still much slower than memory access. An i7 has a max memory bandwith of 25,6 GB/s. ark.intel.com/products/75121/… Aug 23, 2014 at 12:27
  • 2
    Buying more memory won't help you if you aren't getting near 100% memory usage unless you follow other steps (ramdisk).
    – idbrii
    May 9, 2015 at 13:54
8

The following is for experts only. As the name implies, it can and will eat your data, even if you are careful.

eatmydata is a drop in package that will turn off fsync. Fsync is a system operation that ensures that your data is written to disk before continuing. Generally you want this, as it makes recovering from power outages and failures easier, faster, and less data lossy. It comes at a price though; anything calling fsycn will have to wait it's turn in line, rather than simply delivering data to the kernel to write at some later date. And in some, perhaps even many filesystems, fsync will write out all data, not just the stuff you're interested in protecting.

There are some specific situations where fsync isn't worth the cost. Imagine you have a server that number crunches a bunch of data. Rather than pointing this at a live database, it might be faster to dump into a consistent local database, install eatmydata to turn off fsync, and let that go. This can still crash and lose data, but since it's not the only copy of anything, you can just restart the process from scratch. Or, for example, Ubuntu's build servers, where all we care about is the final package produced. Or, on the desktop side, if a program (like Firefox) is syncing so much it's slowing the entire system down. Just be prepared to lose all data associated with using this, or face dire consequences.

6

Close applications that are not used all the time.

A lot of standard applications use a lot of memory and often also CPU while they are running in the background. Webbrowser, email clients etc are very inefficient in memory usage and the javascripts embedded often use CPU time with no benefit to the user.

Just by only running the applications that are used currently, the system will be a lot faster. Also, stopping applications is the only way of freeing memory lost in memory leaks.

The startup of the application on a fast running system is often less than switching windows on an overloaded and slow system.

5
  • 8
    Yea but that kind of goes without saying. Aug 13, 2010 at 19:41
  • My CPU's fan was turning on a lot when I left Firefox open. I stopped using FF and switched to Chrome. I know that isn't a direct performance improvement, but I presume the CPU is being hogged less so other apps could use it more.
    – Erigami
    Aug 13, 2010 at 19:42
  • 1
    @Dmitriy Likhten: How many people have an e-mail client run in the background? We should give them a lightweight applet instead that notifies of new e-mail, and the e-mail client is only opened when the e-mails are read.
    – txwikinger
    Aug 13, 2010 at 20:04
  • For an e-mail client, I suspect it would be counterproductive. When it's only waiting for new mail, most of its memory can be swapped. And loading back from swap might be faster than loading all the separate file that the mail client is using. OTOH, this tip is highly relevant for a web browser, where as you mention even background tabs/windows are often using a little CPU time and can't be swapped because of some animated pictures or javascript on a timer. Aug 14, 2010 at 8:38
  • 2
    Well.. the problem is that swapping is unfortunately often slower than using no swap but enough memory available to start the application in its entirety. While swapping seems to work well on servers, on desktops its seems to do more damage than helping in my experience (I also have to say that this is one of the deterioration of the Linux kernel in the last 5 or so years. Swapping used to work lots better).
    – txwikinger
    Aug 14, 2010 at 14:25
6
  1. Use JFS filesystem. It's rock solid. It has lowest CPU usage and a very good overall performance.

  2. Set vm.vfs_cache_pressure. This is my /etc/sysctl.d/10-desktop-responsiveness

    [prefix the comment lines with a #, this web interface does not like them...]

    These settings increase responsiveness for a typical desktop workload.

vm.swappiness instructs the linux kernel to favour application code over caches when these two compete for RAM.

vm.vfs_cache_pressure controls inode/dentry (i.e. filesystem) cache vs. other caches, i.e. we want to keep filesystem meta-data in RAM if possible.

From: http://rudd-o.com/linux-and-free-software/tales-from-responsivenessland-why-linux-feels-slow-and-how-to-fix-that

vm.swappiness=15

vm.vfs_cache_pressure=50
1
  • 3
    "JFS filesystem. It's rock solid. It has lowest CPU usage and a very good overall performance" - what about providing some confirmation, beyond "somebody told me this"? Any kind of benchmark? In what situations it is good - for example, would it be also a good idea on a modern computer with SSD? Apr 16, 2016 at 5:58
6

Unity tends to be a bit resource-hungry, though I am surprised to hear that you experienced similarly poor performance even under Unity2D. One possible solution would be to play around with other more lightweight Desktop Environments such as Lubuntu (LXDE) or Xubuntu (XFCE). I think you will see a substantial difference in overall responsiveness and performance.

Additionally, you can try going into the Startup Applications manager and unchecking applications and processes that you don't need Ubuntu to automatically start for you at login (e.g. Bluetooth Manager if you don't have bluetooth, UbuntuOne if you don't use it, programs you simply don't use, etc.) Before doing this, first make hidden startup applications visible in startup manager:

sudo sed -i 's/NoDisplay=true/NoDisplay=false/g' /etc/xdg/autostart/*.desktop
4
  • 2
    Come on, Unity is more than capable of running perfectly on a machine with 4Gb of RAM and a dual-core processor. Suggesting to try LXDE would make sense on a netbook with 1Gb of RAM and an Atom processor. Surely the OP's problem is caused by some misconfiguration or hardware incompatibility, not by the fact that Unity can't run on that hardware.
    – Sergey
    Aug 29, 2012 at 21:23
  • 5
    You may be completely right about the cause of Christian's problems, and you are certainly right in thinking that Unity should (theoretically) be running perfectly smoothly on his machine. However, neither of these facts in any way negate my statement that Unity is resource-hungry (regardless of machine specs) and that using LXDE or XFCE would undoubtedly yield significant performance improvements. It may not be the ideal solution in this situation (hence my designation of the suggestion as "one possible solution"), but my hope was that it might at least improve his experience.
    – mblasco
    Aug 30, 2012 at 3:13
  • @Sergey Please don't forget that there are many of us still using non-upgradeable netbooks limited to 1G just because they've failed to fail us yet. Selecting your toolset with regards to its memory-footprint does not make you or your computer a dinosaur (even of one of you is ;). Nov 14, 2014 at 13:53
  • @Sergey For me Lubuntu (default install) is significantly faster on my laptop than Ubuntu (default install). It is 4GB RAM, dual-core laptop with very poor graphic card. In my case Unity effects cause very significant slowdown. Maybe it is was also caused in part by stupid defaults or hardware incompatibility - but worse defaults and worse hardware support are for me also valid reasons to avoid Unity. Apr 16, 2016 at 6:03
5

Configure Swap

Part 1. Set swappiness. This may be as per degusa's answer, but it could be the opposite, and it'll have more effect when it is.

One scenario that some of us are happy to be in is when we have plenty of RAM. Generally, we've a small percentage of it being directly used by the kernel and applications, some (maybe a large amount if you've used other tweaks to boost performance such as mounting /tmp in memory) used for ramfs and tmpfs, and gigs and gigs being used as a disk cache to make our file-access faster.

In this scenario once the total used memory including cache becomes high, and an application needs more RAM, linux has to decide whether to take some cache from the file system, or swap out to the swap partition/file.

Since we've tonnes of RAM, and quite possibly only bothered with swap at all so we could enable hibernation, we want it to lean toward taking some of that copious cache, and hence want a low swappiness. If we don't care about being able to hibernate, we might even find that such a high-RAM machine doesn't need swap at all.

Another scenario is someone with low RAM who is switching between a few heavy applications and spending a reasonable amount of time on each. Imagine perhaps a web dev who spends some time on their IDE, some on a graphics editor, some on their browser of choice, a bit on some other browsers to check on compatibility issues, and maybe 5 minutes every hour on their mail client. They're also likely hitting the same files repeatedly with reads and writes and hence benefiting appreciably from file caching. This person could probably benefit from linux being more eager to swap out the memory used by whichever of those heavy applications they're currently not active on, so swappiness should probably be higher for them.

Not only is the best setting for them likely to be higher than the most common advice, but they're probably going to notice it more than the person who always has gigs to spare anyway, too.

Part 2. Priority & number of partitions.

Each swap partition has a priority, and linux will use that with the highest first. If not set in /etc/fstab, it'll be treated as negative starting with -1 (explicit settings are between 0 and 32767 and so -1 is lower than any explicitly set) and continuing in order in fstab to -2, -3 and so on.

The best setting depends upon where the partitions physically are. If you've only one, then it doesn't matter (but maybe you should have more than one, so read on).

If you've two or more on the same physical drive, then they should have different priorities so that it doesn't try to use two partitions that require seeking between them (does anyone know if this is automatically avoided?). The defaults are fine. It's probably not a good idea to have two swaps on the same drive anyway, but it can happen if you created one and then decided you needed more swap later (perhaps when adding more RAM).

If you've two or more on two or more physical drives that are of about equal speed, then setting them to the same priority will mean linux will use them both at the same time, which offers better performance for reasons analogous to why RAID or simply ensuring that there are frequently used files on both drives will - the work gets split between them.

If you've two or more physical drives of equal speed but have swap only on one, maybe you should change that, for the above reasons.

If you've two or more physical drives, of very different speeds, then generally you want the fastest drive to have a higher priority than the slower, so it's used first. You may not even want to have any swap on the slower, though it might make sense if you e.g. have a small swap on a fast but small drive for fast swap, and a larger swap on the slower drive so you've enough space to hibernate.

If the faster of the two is an SSD, then there's two alternatives with different pros and cons:

  1. Highest-priority, or perhaps only, swap on the SSD, for speed.
  2. Only swap on the non-SSD, to reduce writes on the SSD and hence increase its lifetime.

Number 2 is probably the one to go for if you only really have swap to allow for hibernation and otherwise your copious RAM means you don't really need it (and if you're spending money on an SSD, you should spend it on RAM too) unless perhaps you're a boot-up speed fanatic who wants to boot from hibernation at a speed that'll show off your fancy high-spec rig! Otherwise, the balance is all about speed vs SSD lifetime.

If you've a drive existing solely for swap so as not to compete with other file I/O, then you presumably are hard-core about performance and already know about this stuff better than me and are only reading this to see if I got anything wrong!

5

If you want to have a look at what services are started after booting on Ubuntu 10.04 run "jobs-admin".

sudo apt-get install jobs-admin
4

If we are talking about getting from BIOS to internet connectivity i can recommend setting up network without using NetworkManager, personally I've done this because i have a very sluggish DHCP server and NetworkManager doesn't start probing for network until i've logged in.

5
  • Boot time is an important performance aspect. how one goes about setting up network without NetworkManager?
    – Decio Lira
    Aug 13, 2010 at 23:11
  • Disable "Connect automaticly" in Networkmanager and take a look at this ubuntu.stackexchange.com/questions/1277/… you can also look at man interfaces Aug 13, 2010 at 23:22
  • I removed NetworkManager and its Gnome friend once and for all...
    – dag729
    Aug 22, 2010 at 20:35
  • Me to, doesnt really need in anyways, you can do all the same things from the terminal any way.. Aug 22, 2010 at 22:09
  • There is an alternative to NetworkManager called Wicd I used to use to get rid of the password on boot and so that it would start the network before the desktop: wicd.sourceforge.net Sep 27, 2010 at 8:18
4

If you use a Unity desktop then try a more lightweight interface like LXDE or Xfce.

4

Use apt-fast instead of apt-get, and put your apt cache on tmpfs.

You'll need aria or axel for apt-get to work so first either:

apt-get install aria2c

or

apt-get install axel

I've used aria. Then you need apt-fast itself.

sudo add-apt-repository ppa:apt-fast/stable && sudo apt-get update && sudo apt-get install apt-fast

Answer the questions, and from then on apt-fast will act like apt-get in just about every regard except that it downloads packages in parallel. It makes no difference if you are going to install a single application, but lots for larger installs.

In combination, with this, my /etc/fstab has:

tmpfs /var/cache/apt/archives tmpfs defaults,noatime,mode=1777 0 0

This has the downside that if the same package is used several times over different boots, it'll have to download it again, but then it may have been updated in the meantime anyway. It has the upsides of faster access of them, automatic clean-up of unused packages on reboot.

Since I've been re-installing a lot over the course of these experiments, it allowed me to do a comparison. After installation of 12.04 one will at the time of writing have about 300 updates including a kernel update available just after installing. I ignored software updater and did the above changes before apt-fast update && apt-fast dist-upgrade and the download part is many times faster (the actual installation takes the same time).

I have an alias of alias apt-get="apt-fast" so I don't even need to change habits (the only differences are different feedback on the download, a confirmation on whether I want to download them, and an implied sudo should I forget it, but the commands to trigger anything is the same).

4

Found what was slowing down my machine: gwibber-service. Maybe because I have an account in twitter that follows a lot of people and when it refreshed the machine went bad.

I was monitoring the machine with top as said @kmassada and when it was really slow noticed the process. Then executing:

sudo sed -i 's/NoDisplay=true/NoDisplay=false/g' /etc/xdg/autostart/*.desktop

as @blasmat indicated to go through Startup Applications I could see that the service started automatically and I disabled it. Now my computer is much faster. I think there are still improvements I can make (I don't feel it at it top conditions), but after 20 hours of testing the performance I can say it really goes well.

4

The ubuntu-tweak utility has a handy "Janitor" tool that allows you to clear caches and orphan packages very easily.

sudo apt-get install ubuntu-tweak

Note that as of 2016-04-16 Ubuntu Tweak is abandoned, with last update over year ago - see https://github.com/tualatrix/ubuntu-tweak (what makes http://blog.ubuntu-tweak.com/2012/10/22/thank-you-ubuntu-tweak-will-continue.html outdated).

Ubuntu Tweak's Janitor

1
  • Bleachbit is also great - and works crossplatform, cleaning some things ubuntu-tweak doesn't (and vice versa).
    – NoBugs
    Feb 13, 2015 at 4:42
3

Another good way to boost performance is to install CompizConfig Settings Manager, and disable animation effects, Fading Windows, and Window Decorations. Desktop wall and Expo are an option, too.

enter image description here

Also, use fast texture filter under OpenGL

enter image description here

3

Try a light-weight community flavour of Ubuntu

Instead of messing with your Ubuntu system: make a fresh installation of a community flavour of Ubuntu, a flavour with the same Ubuntu engine under the hood, but with a lightweight desktop environment, and with lighter application programs.

  • the ultra-light Lubuntu or

  • the medium light Ubuntu MATE or Xubuntu.

Try them live before installing. It is a good idea to keep using LTS releases, and I suggest that you start with 16.04.1 LTS, which is the version with the longest remaining support until End Of Life. See detailed tips at the following links,

The version with longest support time (when this is written)

It is somewhat tricky to find 16.04.1 LTS, the version with the longest support time. The following links work (2017-06-29),

2

RAID for everything!

(I'm experimenting with a lot of tips out there on performance, as the task is teaching me a lot of stuff, and as per the request in the original question, I'll make a separate post for each).

If you've more than one drive, you can set up RAID. The pros and cons of different RAID levels is well documented all over the place, so I won't go into it. Personally I have two drives so I'm really picking between 0 and 1 (though mdadm can do a form of 5 on just two drives, but I haven't tried it). Since there are things that can go wrong with a computer - especially a laptop that has a greater risk of physical mishap - that no RAID level can save you from, and you therefore need a strategy for dealing with risks that doesn't depend on RAID to save your bacon, (it won't save you if you experiment with a performance tweak you read on the internet and it makes things unbootable, for example) I decided to go with RAID 0.

The easiest way to do this for the whole system is to install from the alternate ISO rather than the desktop installer that lets you boot straight off the CD/DVD/USB into Ubuntu.

Select "Manual" paritioning. Divide up your disks so that you've partitions you will use on each disk. E.g. if you've two disks and decided to set aside 100GB for /home then you would set aside 50GB on each if using RAID 0, 100GB on each if using RAID 1.

Select "Configure Software Raid". Select "Create RAID Volume" (or something close to that, I'm not going to boot into the installer to check the wording). Pick those partitions you want in your first RAID volume, the type of RAID, and create it. Repeat until you have all of your volumes set up. (You don't need to put your swap on RAID, just give the two or more swap partitions the same priority in fstab and they'll be used together without RAID).

The assign filesystems and what's mounted where as you would with any installation and away you go.

A lot of stuff out there says you can only have /boot on a RAID 1 or non-RAID partition. I've had it on RAID 0 without any problems, which may be a matter of Ubuntu moves on, linux moves on, or BIOS moves on (and if its the last then your BIOS may not be okay with /boot on RAID 0).

The installer will install grub on all your drives. This gives one the benefit that if something stops booting on your "first" drive stops working, you can go into the boot menu and boot off the second.

hdparm does indeed see things has having been doubled in speed for me, and there's certainly a perceptible increase in speed on a lot of things too. I found in experimenting that the first part of booting (after the grub menu, when you've blank purple) seems to be slower, the second part to be faster (rarely time to show the animation now) and application use is faster - the greatest increase in performance of any of the tips I've tried so far.

2

I would check for what processes are running and which ones are using up the most memory. There might be something you are installing that is a memory hogger. use top command or system monitor.

If you are not into eye candy, I even recommend installing the following packages. I noticed a considerable response time between unity and basic gnome

sudo apt-get install gnome-core gnome-session-fallback

I would also check my startup applications to see what runs at start up and what I don't need to run at start up.

And I would also check responsiveness in specific applications.

last thing I would check graphics settings. Maybe you need to compromise battery life for performance.

1

***Each of the kernel parameters are in a field = value format.

For example, the parameter kernel.threads-max = 16379 sets the maximum number of concurrent processes to 16,379.

This is smaller than the maximum number of unique PIDs (65,536). Lowering the number of PIDs can improve performance on systems with slow CPUs or little RAM since it reduces the number of simultaneous tasks. On high-performance computers with dual processors, this value can be large. As an example, my 350 MHz iMac is set to 2,048, my dual-processor 200 MHz PC is set to 1024, and my 2.8 GHz dual processor PC is set to 16,379.

Tip: The kernel configures the default number of threads based on the available resources. Installing the same Ubuntu version on different hardware may set a different value. If you need an identical system (for testing, critical deployment, or sensitive compatibility), be sure to explicitly set this value.

There are two ways to adjust the kernel parameters.

First, you can do it on the command line. For example, sudo sysctl -w kernel.threads-max=16000. This change takes effect immediately but is not permanent; if you reboot, this change will be lost.

The other way to make a kernel change is to add the parameter to the /etc/sysctl.conf file. Adding the line kernel.threads-max=16000 will make the change take effect on the next reboot.

Usually when tuning, you first use sysctl –w. If you like the change, then you can add it to /etc/sysctl.conf. Using sysctl –w first allows you to test modifications. In the event that everything breaks, you can always reboot to recover before committing the changes to /etc/sysctl.conf.

***I learned that from this extreme tech article.

4
  • 2
    How is lowering the total number of threads supposed to make a difference to performance? It's rarely reached on most systems anyway. It could be useful on a server whose main job is to serve http requests, but what evidence do you have that the default setting is not the best? Aug 13, 2010 at 18:02
  • @gilles I mentioned a tip, I thought might be useful. Regardless if a computer reaches max number of threads, if it is slow it would be beneficial to lower the maximum number of threads. Also no one ever stated that this couldn't be a computer serving http requests.
    – myusuf3
    Aug 13, 2010 at 18:44
  • 9
    There are plenty of people who've found some setting and decided to tweak it, and then posted it to the web with some dodgy explanation of why it would improve performance, without ever checking whether it did make a difference. Sometimes someone bothers to check, and often they discover that the default setting is there for a reason, namely that the original author did test and chose a reasonable default. So my question still stands: can you cite a benchmark that shows that (at least in some circumstances) the default setting is not appropriate? Aug 13, 2010 at 19:33
  • 3
    @gilles default setting are default for a reason appealing to the most people, those who wish not to tweak can go on with their lives. Although If your among the sticklers (and i am sure you are) then your more than welcome to benchmark it. let me know how it goes :)
    – myusuf3
    Aug 14, 2010 at 2:48

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .