K.Mandla's blog of Linux experiences

Speed week, the finale

I’ve finished reconstructing my GX150 again, this time using all the tweaks and adjustments I could find. I’ll give the results before I start explaining the system modifications, since it’s more of a narrative than a list.

/dev/hda4 4.3Gb home – ext3 with dir_index, journal_data_writeback and noatime

Cold boot startup time: 00:00:52.5

Shutdown time: 00:00:11.3

Abiword 2.4.4 startup time: 00:00:01.6

Gimp 2.2.11 startup time: 00:00:05

Swiftfox 1.5.0.6 startup time: 00:00:04.9

Net speed test: See below

I tested these numbers two or three times in each case, making sure I wasn’t getting weird results that I couldn’t reproduce. That’s especially the case for Abiword, which I tried about six or seven times. On the first few attempts, I couldn’t press the button fast enough.

As you can see, there’s a lot here that needs explanation. First and foremost, this installation takes a good deal of time — possibly up to two hours, if you are meticulous and want to get it right. Also, there are probably variations on this procedure that could further tweak or improve it. I just hadn’t heard about them … but I want to.

After blanking the disk again, I partitioned the drive to separate boot, root and home. You can do this by booting an Ubuntu desktop (live) CD (or any live CD, really) and using a terminal window to access the hard drive. In an uncharacteristic move, I put the swap into a logical drive with root. Ordinarily I put swap on its own primary partition, but in this case I wanted to see if there would be a difference. In all honesty, I don’t see one, but if you have more experience with logical drives, perhaps you can tell me what the benefit is.

Second, I built the file systems for root and home as ext3 with dir_index enabled. In my experience, there’s a distinct speed difference on older hardware using straight ext3 and ext3 with dir_index. I’m sure it has to do with processor load caused by the file system, but I lack the technical experience to back up that statement. Try it and see if it does the same for you.

Next, I built a server installation off the Xubuntu 6.06.1 alternate (install) CD. If you follow this example and use the dir_index option, you might see an “error” message after reassigning the partitions. Don’t worry about that. That’s just the partitioner acknowledging the file system that’s there, recognizing that it’s a little quirky, and asking permission to continue. Not a problem.

Once the server installation was in place, I used a sources.list built from ubuntulinux.nl (copied from another machine) to update and dist-upgrade. From there, I have a clean and up-to-date system that’s ready for further tweaking.

The first “tweak” was to grab the 686 kernel. That is the most obvious first choice.

I went ahead at this point and set the journal_data_writeback and noatime flags for the home and root partitions. This is a nice little tweak that has a strong effect, if you ask me. Then I installed preload and prelink, and set up both. There’s a slight delay while prelink does the initial cron.daily job. I also set vm.swappiness to 0, since this machine has an overabundance of memory.

At this point I went ahead and disabled IPv6. It wasn’t necessary yet, but I was already working in the terminal, so I figured I might as well get it done. By the way, I use the “alternative” method of copying bad_list into /etc/modprobe.d/, if you want to know.

Next I removed some of ubuntu-minimal. In my case, I took out ubuntu-minimal, jfsutils, pcmciautils, reiser4progs, reiserfsprogs, vim, wireless-tools, wpasupplicant and xfsprogs. Those items are either irrelevant to my hardware or nothing I particularly like.

Just to be sure I was keeping it clean, I installed deborphan at this point and cleared out two packages (I don’t remember what they were) that were strays.

Now the X system. I only install x-window-system-core, xfce4, xfce4-terminal and thunar. The last two there are vanity really, since you could, conceivably, get away without them by switching to terminal windows or managing your files via command line. To each his own.

Once X was in place, I edited my xorg.conf to knock the color depth down to 16 (again, that’s just to accommodate my ailing hardware), and downloaded Swiftfox via wget. There is an Ubuntu-specific deb package now, which makes this step easier.

Then, just for the sake of reducing eyestrain, I installed the Tango icon theme. It’s just more pleasant than the old XFCE scheme.

Last but not least, with the bulk of the system in place, I used sysv-rc-conf to remove services that were irrelevant. There weren’t many. But strangely enough, I found I had the nvidia kernel service installed. I don’t know why; perhaps it comes with some other package. Either way I disabled it, then cleaned up rc0.d and rc6.d so startup and shutdown times would be a little slicker.

That’s about it. I had to install the Gimp and Abiword from the repositories. But otherwise, the system was ready.

And you can see the results. There’s a distinct difference in almost every category, with only the startup time close to the default installations for either Windows 2000 or Xubuntu. Of course, there’s a slight second or two that slows it down, since I have to log in and give it the startxfce4 command. But otherwise, working without a display manager shaves at least 10 seconds off the start time.

Swiftfox comes up in half the time Firefox does, and that alone is a valid reason to use it. The Gimp is ready in 5 seconds, and Abiword is ready in less than two. Best of all, shutting down is like throwing a switch. Eleven seconds later and the fans have fallen silent. (I should note that I enter the sudo shutdown -h now command from a terminal, rather than the “Shut down” button in XFCE. Otherwise, I have to enter the command when X closes, and give my password again. Pressing the power button is just as fast.)

I neglected to list the net speed test. I don’t think it’s really relevant to the experiment, and on top of that I was getting ungodly access times — like 3.3 megabits per second — on Wednesday morning. I don’t know why it would be so darn high on a Wednesday morning, but I don’t really consider it valid or reliable any more.

But the most gratifying point is … this is a 1Ghz machine. :)

To be honest, I don’t know how much improvement this would be in a faster machine. Once you get into the 2Ghz or even 3Ghz range, I think the delays caused by the OS and hardware are more or less negated by the overall system speed.

In other words, I think the drags on the system that you see in Win2K or Xubuntu wouldn’t be nearly as much on a machine three or even two times faster. In my case, there’s a dramatic improvement because the hardware itself is bogged down by all the demands of the OSes. A faster machine wouldn’t notice.

Be that as it may, you’re welcome to try some of these tweaks and see what you come up with. I would be interested to hear.