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.

More on the Himeno Phoronix benchmark, and memory allocation

If you recall, Phoronix recently ran a bunch of benchmarks on DragonFly.  One spot that didn’t look good was the “Himeno Poisson Pressure Solver”.  I’m no closer to knowing what capability it actually tests other than itself, but Alex Hornung, Matt Dillon, and Venkatesh Srinivas figured out that cache coloring was the missing ingredient.  DragonFly now scores the same as Linux.

Tangentially related, this cache coloring is happening in nmalloc, which is now used on 64-bit DragonFly systems.  The previous one, dmalloc, had problems in long-running programs.

IFQ packet staging mechanism added

I’m not sure what IFQ stands for, but Sepherosa Ziehau’s added it.  It appears to be based on an idea from Luigi Rizzo called ‘netmap‘.  In this case, network packets are grouped together before being placed onto the network interface’s hardware queue.  That means better packet per second performance without a corresponding increase in CPU usage, as Sepherosa Ziehau’s report lists, along with needed sysctls.