Warning:: if you are using non-open source NVIDIA or ATI drivers, these may not automatically re-install properly. It's probably worth disabling these first in Administration -> Additional Hardware and re-enable them when you're finished ...Ok, I can confirm firstly that both Ubuntu 10.04 and 10.10 have the same kernel based performance problem that shows abnormally high load averages when the machine is relatively idle. It sounds like this is caused by changes to the kernel that create "too" many interrupts which has a very negative impact on system performance. I've not seen any explanation as to "why" this kernel has been allowed out into the wild other than "it doesn't effect everybody", but then it affects every machine I've tried it on to some extent.
Anyway, the fix for 10.04 and 10.10 is simply to revert to an earlier kernel, typically the Karmic kernel seems to work ok on these systems and is not subject to the issue.
So, if you want to have or already have 10.xx on your machine and are feeling a little brave, and want to get your performance back, here’s how. Visit the following URL;
http://kernel.ubuntu.com/~kernel-ppa/mainline/v2.6.31/For 64 bit systems download;
linux-headers-2.6.31-020631-generic_2.6.31-020631_amd64.deb linux-headers-2.6.31-020631_2.6.31-020631_all.deb linux-image-2.6.31-020631-generic_2.6.31-020631_amd64.debFor 32 bit systems download;
linux-headers-2.6.31-020631-generic_2.6.31-020631_i386.deb linux-headers-2.6.31-020631_2.6.31-020631_all.deb linux-image-2.6.31-020631-generic_2.6.31-020631_i386.deb
Then using your file manager, goto your “Downloads” folder, create a new folder called “tmp” and move these three files into it. Then start a terminal session and type the following commands;
cd ~/Downloads/tmp dpkg -i *
This should install the old kernel, if it doesn’t or gives you an error, please ask before going any further.
Now you need to tell the system to boot this kernel in preference to other kernels on your system. Take a look and see what you have using;
ls -la /boot/vmlinuz*For example;
ls -la /boot/vmlinuz*
-rw-r–r-- 1 root root 3883072 2009-09-10 23:32 /boot/vmlinuz-2.6.31-020631-generic
-rw-r–r-- 1 root root 4333968 2010-08-29 08:25 /boot/vmlinuz-2.6.35-19-generic
-rw-r–r-- 1 root root 4334672 2010-09-03 20:25 /boot/vmlinuz-2.6.35-20-generic
Looking in order (of kernel version!), the kernel I want to boot (2.6.31) is third in the list, so I do the following calculation;
n * 2 - nSo in my case n=3, so 3*2-2 = 4.
Now edit /etc/default/grub and change the GRUB_DEFAULT number to the result of your calculation. (it was 4 for me)
Then run “update-grub” to tell the system you’ve edited the file.
Then reboot.
NOTES - Please read!
-
In /etc/default/grub you might want to set GRUB_HIDDEN_TIMEOUT to “10” and GRUB_HIDDEN_TIMEOUT_QUIET to “false” , which will give you the chance to press ESC at the beginning of the boot phase and select an alternative version of Linux, handy if you get your calculation wrong (!)
-
Make sure you have a bootable CD handy before you start - just in case.
WARNING
If you don’t really know what you are doing / you make a mistake, this procedure “could” cause your machine to fail to boot, requiring a manual recovery from the installation CD.