DragonFly’s version of pf (corresponding with OpenBSD’s 4.2 version) is now multiprocessor safe, to match the network stack. pf itself isn’t using multiple processors; it’s just able to work without causing problems in an otherwise MPSAFE environment, thanks again to Jan Lentfer. Note that there’s one minor caveat.
Swapoff has been added to DragonFly. This was a potential Summer of Code project, and also happened to have a bounty offered for it. $300 goes to Ilya Dryomov. If money for code like this interests you, check the Code Bounties page for more projects…
Dear universe: improved interrupt routing, or deduplication in HAMMER would make me happy. I’m not picky.
A little work has snowballed into even more of the network systems in DragonFly being pulled apart in order to get rid of the Giant Lock. It may delay the 2.8 release by a week or two, but it’s already paying dividends, such as NFSv3 now performing at maximum physically possible speeds on gigabit Ethernet.
(I ran out of alliterative words, sorry.) Venkatesh Srinivas has committed his work on memory allocation; his commit message has details. He’s kindly provided a link to the article that inspired the per-thread magazine work. He’s also provided graphs to show comparative performance benefits of his new memory allocator on DragonFly and on FreeBSD.
Jan Lentfer has now updated pf in DragonFly to version 4.2, on top of his earlier work to get to 4.1. This upgrade apparently doubles speed from 4.1, plus he’s brought in some other, later fixes. Thanks for doing a superhuman amount of work, Jan!
A familiar procedure in any open source project: irritation causes improvement. In this case, the Forth-based boot loader irritated Matthew Dillon into writing a new replacement C-based one. (See the commit too, and it may slightly affect the upgrade process for 2.7 users.)
All these recent locking changes seem to be adding up to a much more responsive system, incidentally.
Full buildworlds again, as there’s more commits that make it necessary. If you’re running 2.7, you should probably just plan on using buildworld, and not quickworld for rebuilding.
System data structures have changed again, so make sure your next rebuild is a full buildworld/buildkernel if you’re running 2.7. There’s been a lot of changes to pull more and more out from under the Giant Lock.
Thanks to the efforts of Venkatesh Srinivas, tmpfs file systems on DragonFly can now withstand fsstress testing. Thanks, Venkatesh!
(One of the benefits of posting about people’s work is that the names are fun to type.)
Matthew Dillon posted a summary of recent bugfixes in HAMMER and kqueue, which means if you are running a version of bleeding edge DragonFly build in the last few weeks, you should update.
He also mentions a “significant improvement in performance” in disk encryption. How significant? Over three times as fast.
Matthew Dillon sent an email to the kernel list detailing the performance improvements that he and Alex Hornung have recently made to dm_crypt and opencrypto. The disk encryption work does still come with a warning, however.
Matthew Dillon reports that DragonFly now has a catastrophic recovery tool for HAMMER filesystems, with pertinent details.
Matthew Dillon has provided some details about recent kernel work, along with a release forecast.
DSCHED_FQ was added to GENERIC, making it the default disk scheduling policy for master. You might want to refresh your memory of dsched and the fairq policy with some prior details and benchmarks.
Update: As Venkatesh Srinivas pointed out in the comments, adding DSCHED_FQ to GENERIC does not make it the default, but you no longer have to load the fairq module. Which raises the question, should fairq be the default?
The libevent library has been removed from the repository to ease the maintenance burden. There is some additional rationale in this tracker issue.
Matthew Dillon made a minor change to HAMMER that would help any future deduplication work. There’s also a deduplication code bounty out on the recently-updated Code Bounties page…
I’ve been NAS-shopping, and I’ve found that deduplication ability seems to add an extra zero on the end of a device’s price tag. It would be very nice for HAMMER.
Jan Lentfer has updated pf (and pflogd and ftp-proxy) in DragonFly to match what was in OpenBSD 4.1. Why this intermediate step? pf went through a lot of changes after OpenBSD 4.1, so this was easier than jumping right to the current version – which he plans next.
In any case, this was a huge and difficult job, with somewhere around 10,000 lines of code added, and very useful for DragonFly. Jan also managed to keep the DragonFly-specific features working, where “no state” is the default, along with features like fairq.
Sascha Wildner brought in FreeBSD’s stress2 stress testing suite. It’s an efficient way to crash your system. Look at the README to find out the fastest way there.