It's a long weekend at MIT so I finally had some free time to screw around. And this time, it was FreeBSD testing day! I've been excited about the FreeBSD 7 release but not had a chance to give it a spin yet.
I set up a quick and dirty VirtualBox VM with 10GB disk space and 48MB RAM to give FreeBSD an extreme test on the server side. That's not a typo... I'm going for the extreme low-resource setup, and plus I had very little RAM to spare thanks to our good friend fglrx and its gracious RAM usage...
The install was pretty uneventful, unchanged from earlier releases -- I'm fairly familiar with sysinstall and found it generally usable, though of course it's not all that user friendly and benefits greatly from familiarity or a manual read beforehands.
Post-install, I tried the freebsd-update tool for managing system updates -- it worked just fine. Since the release there has only been an update to like 3 system files, which fetched and applied without any issue.
I noticed portsnap (for managing the ports tree securely without the need for configuring a supfile either) was in the default system, which is quite nice.
I then bit the bullet and updated the base system to RELENG_7, which is the FreeBSD 7.x development branch. This upgrade also went smoothly without any hitches, and while I was at it I recompiled the kernel with SCHED_ULE, the new scheduler.
I then set up a quick proof-of-concept test of a real-world task: setting up a mailserver. My goal was simply a IMAPS server via dovecot that mirrors my primary (2GB) maildir. I tested Hardy Heron and FreeBSD7 both inside identical-specs virtual machines.
Setup time was strongly in favor of Ubuntu -- I got the server up and running in 1/4th of the time that it took me to get dovecot out of ports and configured to run on bootup, with SSL, etc. However, 1 hour or 4 hours really isn't that big of a deal for me.
Performance was subjectively in favor of FreeBSD. I tested using mutt on both VMs connecting via localhost to IMAP. On 48MiB RAM, both systems suffered greatly in terms of swapping on large tasks such as opening up huge servers. As a measure of interactivity, during the middle of opening a folder with 48,000 messages, I used a 2nd SSH shell that was open to execute "find
~/Mail -name new". FreeBSD won by a definitive margin, while Ubuntu took a long time to respond interactively to the new command, even the sshd lagged while I was typing. It's clear that FreeBSD handled a mixed CPU+IO+swapping load better. In general, as a subjective note (I have no numbers to back this up), I found FreeBSD's performance to be extremely predictable. While it wasn't on top for everything, it did fare very consistently with no obvious weak spots. I don't think I can say the same about Linux 2.6.x though. While it is unbeatable
in some aspects of performance, at times you can really find a workload that brings Linux to its knees unexpectedly.
So overall in terms of FreeBSD 7:
(1) freebsd-update and portsnap in the default setup. Makes it simpler to apply security updates and manage ports.
(2) Astounding performance and interactivity on severely limited hardware. In this aspect I found it really surpassed Linux.
(3) BSD "coreutils" felt faster. Everything from ls to top felt like they responded faster for some reason.
(1) Very barebones base install. I'm not a csh fan and I would've liked bash either by default or available. I also found it disappointing portupgrade wasn't a part of the base system. Managing ports via the makefiles in /usr/ports is pretty cumbersome.
(2) Requires a good deal of configuration out-of-the-box to get it up and running intuitively... I feel ubuntu is closer to what I need out of the box.
(3) Ports and /usr/src in general seemed like it required more maintenance than Ubuntu/Debian APT. There's no clear separation in the Ports tree between stable/security updates and new releases of stuff, and even during my brief time in the OS I did experience a config file migration necessary after a Port upgrade.
(4) Hardware support is lackluster at best. Out of the box both of my laptops' "real" hardware handled FreeBSD very poorly, neither networked (even wired!) out of the box, and one I was able to get networking after a RELENG_7 update bootstrapped by USB drive. This is definitely a work-in-progress area for this OS. With that said, if there's a driver, it generally is rock solid, unlike Linux where there's many in-tree drivers that IMO are alpha quality at best.
Overall, I think FreeBSD is a great, solid OS that has its merits, but I don't think I'll be seriously using it for personal tastes. I'm really familiar with Ubuntu/Debian and feel competent administering it, but I feel like a complete idiot when it comes to the BSDs. Of course, I would use a FreeBSD box administered by someone else without hesitation! I have the utmost respect for this hardcore UNIX.