Thursday, December 31, 2009

64bit Linux vs. 32bit Linux

Recently, Phoronix featured a comparison between the same linux version installed with support for 32 bits with or without PAE and 64 bits. While their original intent was to find out the differences between the 32 bits kernel and the 32 bits kernel with PAE, the results they obtained are quite amazing.


The first graphic shows all three version running at par. This is no wonder, since the main work is done by an external device (and the drivers pushing data towards that device), but after this graphs just take an amazing turn. The most spectacular improvement is the apache server that serves 1689% more static pages. Yes. 1689% more. The rest of the results are pretty impressive too - with improvements in database benchmarks, processor intensive tasks like raytracing and encryption, but with most amazing results in the disk-dependent tasks (like the apache server that gives out static pages).

How is this possible and what does it mean? First of all, there is definitely something wrong with the disk drivers in the 32 bits kernels or with the testing conditions. Since the people from Phoronix know their own stuff, we can safely assume that this really points out to huge problems in the 32 bits drivers. Second of all, maybe the best thing that could be done is to repeat the tests, and somebody show the results to Linus Torvalds, so that he can kick the corresponding asses. If, however, this is not a bug, then it shows out pretty much what we normally call the creeping bugs problem.

Back in the days when I used to build kernel by hands and had lots of fun with things like LFS, and you couldn't deliver a i686 kernel because it was not so fun for the whole bunch of i586 systems out there, the problem was obvious. Building a kernel that would work on all the machines meant including a lot of patches and kernel options that would slow down the system. Not only the kernel was built like that, but the standard C library as well (glibc); since the glibc was committed to support a huge range of kernels, and a lot changed with each year. If you tried to support all the kernels ever released, you'd have to support a lot of mistakes done throughout the years, a lot of different methods of doing the same thing, or slightly different.

Probably something similar happens with the current kernel - and the current drivers, and possibly the C library. The 64bit one has a lot less mistakes to support. Kludges that are quite costy, it seems, from the phoronix test results.

It was one of the reasons why I always used or tried to use first the 64bit versions of the OSes at hand - they may be less than perfect (no flash in browser, some apps not working/not compiling), but let's get serious, which OS is?

I must confess tho' that I don't really see the difference between the two on my machine. It feels indeed a lot snappier than the 32 bits version, but I am not sure, since I cannot really compare in a scientific maner. But the 64bit linux is now a complete and viable solution just like 32 bits versions are - so if you have a choice, go for the 64bit version :)

Probably this was the last post of the year, so let's say goodbye together to the 00s , and let us see each other next year :)

2 comments:

  1. Thanks for the link! :) Didn't know about the recommendation, and with the phoronix benchmark, it seems they are right.

    ReplyDelete