Rough network queues added

Sepherosa Ziehau has added a sort of queuing to altq, where TCP ACKs get higher priority.  You may have seen this in any number of pf configurations, where returning data is given its own queue to keep high-volume transfers from slowing themselves down because the acknowledgements can’t get back to the sender.  His commit has statistics on the performance improvement.  He also added a ‘netrate‘ tool for calculating results from using netperf.

Symbol versioning coming in, also buildworld

If you’re using DragonFly 3.5, your next update should be a full buildworld.  That’s because John Marino is adding the framework for symbol versioning.  This means that individual library (.so) files will internally keep track of newer and older symbols.  The current behavior is to name the files differently, which can cause problems if an expected, linked file is missing – even if the needed symbols are present.  The basic framework is being added now, and will be turned on all at once, to minimize the number of times that full buildworld is needed.

Old amd64 removed and extra upgrade step added

The ‘amd64’ specific parts of kernel architecture have been removed, since x86_64 covers all that.  As a side effect of other changes, John Marino warns that upgrading DragonFly from a version older than 3.4, to a version newer than 3.4, will require an intermediate step of going to 3.4 first.  e.g. If your machine is a DragonFly 3.0 system, you will need to upgrade to 3.4 before moving to, say, 3.6 once it is out.  This won’t matter for some months, since the next release is months off.

Another sh(1) update

Peter Avalos has committed another batch of updates to sh(1), from FreeBSD.  I was going to comment on how strange it was to see software getting updated so many years later; you’d think everything there was to update for /bin/sh had been done at this point.  Digging casually, the oldest bit on sh that I can find is from 1991 – 22 years old.   The man page mentions a rewrite in 1989 based on System V Release 4 UNIX, and there were versions of sh all the way back to version 1.

Here’s a trivia question – what’s the oldest Unix utility, and what’s the oldest code still in use?  I don’t know the answer.

3 very different commits

Here’s 3 recent and different commits to DragonFly that I’m commenting on all at once:

  1. Peter Avalos upgraded libarchive in DragonFly to 3.1.2, with a note of the changes.  An ordinary and appreciated update.
  2. Sascha Wildner updated the ISO639 file to include the newest update: “Standard Moroccan Tamazight”.  There’s no particular utility to that; I just like saying “Standard Moroccan Tamazight” out loud.
  3. Work on poudriere, the utility for bulk-building DPorts packages, has caused some nice speedups for DragonFly in extremely stressful situations.  See one of Matthew Dillon’s recent commits.

I really wish the other BSD projects would include commit lines in the mail message subjects, so it was easier to catch things like these.

Read shortcut, buffer cache improvements

The new vm.read_shortcut option has been turned on by default by Matthew Dillon, which should lead to some performance improvements.  That improvement has been measured for tmpfs, at least.  There’s also some buffer cache improvments that help on x86_64 systems, too.

Update: As Venkatesh Srinivas pointed out, tmpfs also no longer uses the mplock, so it’ll take better advantage of multiple processors.

Updates: OpenSSL, libdialog, tzsetup, locale

I know OpenSSL in DragonFly was just updated, but Peter Avalos has done it again, bringing it to version 1.01e.  I assume this new version is to fix some recently-exposed problems.   He also has updated libdialog, which was previously not located in contrib/, as sime third-party software needed a more modern version.  As a side effect from that, tzsetup in DragonFly now matches the version in FreeBSD and NetBSD.  And, Sascha Wildner has updated the locale files on DragonFly, also to match FreeBSD and NetBSD.

Network fairness changes and what they mean

Sepherosa Ziehau makes commits almost daily to DragonFly’s network infrastructure, but I have a hard time quantifying it into Digest posts in part because it’s often very technical.  His most recent commits come with an explanation, however.  He has done plenty of work to improve overall transmission speeds in DragonFly, and now he’s working on ‘fairness’.  Fair, in this case, means ensuring that packet transmitting and receiving happen without either one monopolizing the connection.  In real world terms, this translates to much more constant speeds.  His recent commit details what he’s doing and some numbers to prove it.

Remember I said he’s improved speeds?  Note that in his example, he’s reaching stable peaks of 981 Mbps.  This is on a line that I assume theoretically maxes out at 1000.