The DragonFly BSD project has recently decided to hold off on the 2.12 release to address a couple of long-standing issues. Some of the disruptive work done to address these issues has also resulted in the MP Token (giant kernel lock) and other major contention points being finally pushed out of the way of all critical paths. The result?
Greatly improved scalability. DragonFly BSD 2.13 is now on par with FreeBSD 10 in the PostgreSQL pgbench test on single-socket multi-core systems. The test setup notes and a plot of results are available.
Francois Tigeot has also done some similar testing on a larger 2-socket Intel machine, which shows DragonFly still trails FreeBSD under these circumstances but is enormously improved with respect to the previous release. There’s a mailing list post about this one (and here’s a direct link to results).
I never thought that DragonFly would rise above an interesting project whose more innovative pieces might make their way into other, more established, OSes
But to offer this level of performance against its big brother on serious hardware is amazing.
Well done, Matt and company!!
Actually there are other things than performance that are awesome about DragonFly.
HAMMER is simply awesome.
The fact that the DragonFly implemented a (complete!) BSD licensed version of TrueCrypt which isn’t even free software in its original implementation is great. Even the Linux folks have an eye on it.
They reimplemented dm-crypt/LUKS including all the required dependencies to have encrypted root etc. This also means that they have an own implementation of libdevicemapper and other stuff. All BSD licensed.
They also have vkernel AND jail and they are usually faster than FreeBSD. For example they fixed the head pull-USB-Stick -> crash problem before them. They implemented stuff like IPv6 and multi-IP before FreeBSD. They had llvm/clang support before them. Does FreeBSD support variant symlinks by now? Oh and they have resident.
Of course that doesn’t mean that it is without weaknesses. FreeBSD has longer support for releases while most DragonFly folks run HEAD versions. They also don’t have commercial support.
But hey, it’s Open Source, everyone is able to copy stuff improve it, sometimes it gets ported, backported and what’s great about BSD (well, besides OpenBSD, which has other strengths) is that people decide what’s good and not what’s getting hyped or fits our ideology.
The entire FreeBSD OS can be compiled by LLVM/Clang, and the resulting OS can be installed and used with only a few niggling issues here and there. You can even use LLVM/Clang to compile a large portion of the ports tree.
You cannot compile DFlyBSD with LLVM/Clang at this time.
When Dragonfly originally forked from FreeBSD, it was mainly about SMP stuff. The Dragonfly faction felt that FreeBSD was choosing the wrong approach towards implementing good SMP support. When it became clear that FreeBSD’s approach may actually have been the “right” one, Dragonfly refocused on doing other things like implementing microkernel-style features, a ZFS-like file system and other fun hacks. That’s its been able to fix its SMP problems while also progressing on these other tasks is really a pleasant surprise.
Not exactly. It wasn’t a thought that the direction FreeBSD took to implement MP scaling wouldn’t work or even work well, as it was in fact essentially a tried and true approach (fine-grained data locking).
Matt’s problem with it was that he thought it would take more people and time and testing to make correct, and in the long run be more work to maintain due to the complexity involved. So From the get-go, DragonFly was reworked to support lockless algorithms and would do as much work on a per-CPU basis as possible. Kind of a `share as little as possible` approach, and ask your neighbours for help as needed.
DragonFly took so long to get to this point of scaling well in MP systems because very early on, Matt decided he wanted his BSD to implement SSI clustering, and being only one person in a small group of developers would then go on to implement the major bits of his dream, each of which was a fair sized project in themselves.
Hammer being an example.
Although MP work has long seemed to be more back-burner work for Dillon, he was always clear that he was more interested in exploring ways to enable multi-processor/multi-core scaling such that mere mortal devs could jump into the code and understand how it all worked and be able to fix it should that be required.
One final interesting thing to note, is that some of the ideas employed by DragonFly to implement MP scaling are also employed in Linux and FreeBSD as a means of further improving their scaling by removing some of their fine-grained locks.
And of course DragonFly itself uses a locking strategy vaguely similar to FreeBSD for its device drivers. Being a small project, this eases porting, and allows the DF devs more time to do more general work on DF itself.
Yesterday I pulled the 2.12 iso image down and burned it to a disc. When I boot my machine with the disc, everything goes fine except that it cannot detect my PS/2 keyboard. I cannot do anything but just push the reboot button.
Anyway, I like BSD. I’ve been using *BSD since 90’s. Before I give it another try, I’d better stick to FreeBSD, which is my favorite.
Edited 2011-11-16 04:16 UTC
If you can be troubled to try again (and maybe plug in a USB keyboard?), the DragonFly project would definitely appreciate a proper bug report.
Yes. I plan to give it another try when I get a USB keyboard. I am very interested in Dragonfly’s Hammer and SMP implementation, which are different from FreeBSD’s counterparts.
Tom, you don’t have the ~A§ on your keyboard, right?
On windows, you can have it with Alt + 231.
1. It’s Thom.
2. No, it’s actually Samuel.
On linux, it’s RALT+c.
If I’m reading this right, they only ran one test per thread. That is not the way you do a benchmark. They should run multiple tests and throw out the outliers.
Also, they disabled witness in FreeBSD, but if 10-CURRENT is like old versions, invariants are still enabled and can slow things down a little. I don’t know if DF 2.13 has anything similar enabled or not.
These benchmarks were not exhaustive or totally scientific, nor were they intended to be. Your issues with the methodology does not invalidate the fact that these benchmarks convey relative performance for this test with reasonable accuracy.
DragonFly has a more invasive INVARIANTS than FreeBSD, we leave it enabled for releases and feel that the FreeBSD policy of disabling it is a mistake. Bugs and crashes happen and when they happen to our users in a production environment using a release not having INVARIANTS limits their ability to properly report a bug as well as our ability to pinpoint and fix the problem. That is the stance of the project and the rationale for that stance, but if someone wanted to test both without INVARIANTS, I am relatively sure DragonFly would see a larger bump.
Is the up to date feature comparison of all the BSDs, maybe even vs current Linux.
I use Linux almost all the time. It always got me wondering what the BSD has to offer.
Tightly-integrated system perhaps? But what that really means..?
This is a little light on info but it’s a start:
http://en.wikipedia.org/wiki/Comparison_of_BSD_operating_systems
BSD is a more tightly integrated system, in fact Linux is not even an OS in the strictest definition. BSD separates the core OS and the user land software which isn’t something that the end user notices but it simplifies administration.
For instance, you can upgrade FreeBSD while not upgrading the user (add-on) software. I think that only Slackware is capable of this in the linux world (correct me if I am wrong). Reversely, you can keep the user software up to date without requiring an OS upgrade.
Anyway there is a ton of information out there on comparing Linux and BSD
But there is a problem with Wikipedia’s feature comparison. They don’t show you how stable stuff it, whether someone maintains the code, how complete a feature is, how well it is integrated, …
So really, you should have a look on what you need/expect and have a look on your own.
It also doesn’t say anything about individual, unique tools/features that can make your life easier, make things like development or setting up a system easier. For example DragonFly and OpenBSD IMHO have great default configurations and lots of stuff that you can use in daily life. These things on the other hand aren’t really useful when you depend a lot on third party stuff, since others are usually not aware of these things or don’t care to use them in their software, because there is only one system supporting it.
Quick question. What is FreeBSD 10 mentioned in this article and where can I get it? I also Tweeted this. https://twitter.com/#!/WretchedWinston/status/136798642211258368
They just branched off 9-STABLE a week or two ago – they’re at 9.0-RC2 now, so expect a release soonish. As a side effect, CURRENT is now on version 10.