Network performance comparison

In what can be described as perfect timing, Sepherosa Ziehau has produced a document comparing FreeBSD, several different Linux kernels, and DragonFly, for networking.  He’s presenting it in the afternoon track of Day 3 for AsiaBSDCon 2017, starting later this week.

He’s published a snippet as a PDF (via), which includes some graphs.    The one place Linux outperforms DragonFly seems to be linked to the Linux version of the network card driver being able to access more hardware – so DragonFly should be comparable or better there too, once the powers-of-2 problem is solved.  (This already came up in comments to a post last week.)

Those graphs are available standalone, too, which means it’s easier to see the fantastic performance for latency – see the thin blue line – that seems exclusive to DragonFly.   That, if anything, is the real takeaway; that DragonFly’s model has benefits not just to plain speed but to the system’s responsiveness under load.  “My CPU is maxed out cause I’m doing a lot of work but I hardly notice” is a common comment over the past few years – and now we can see that for network performance, too.

Kernel modules in rc.conf, not loader.conf

The longstanding practice is to load kernel modules in loader.conf, as early as possible.  That’s good, for anything that needs them.

However, that also can be bad.  Your machine can be unbootable if there’s a problem with a module or loader.conf is messed up, since that file is read long before the startup process finishes.  Enter the new alternative: modules can be loaded in rc.conf, and the only loader.conf modules needed are those required by / to mount.

DIY RSS feed reads

Here’s one of the reasons to have your own permanent server: The New York Times has a daily feature called, not surprisingly, “The Daily“.  It’s a short 15-20 minute news segment, ready by 6 AM.  It’s available through Google Play Music or iTunes, but I leave for work by 6:15, and I don’t want to use up cell data downloading something that should arrive on my phone just before I leave the house.  Of course, there’s no obvious way to tell Google Play, “I know it’s there; go get it right now”.  I don’t know the iPhone experience, but I imagine it’s the same.  I want to download on my time, not on Google or Apple’s schedule.

Luckily, there’s an RSS feed for this podcast.  That, plus this simple script on my DragonFly system, means I can pull it down whenever I’m ready:

fetch -o – http://feeds.podtrac.com/zKq6WZZLTlbM | grep enclosure | cut -d ‘”‘ -f2 | xargs fetch -m

So, it’s a matter of running that script, and syncing off my own local storage, on my own schedule.  FolderSync Lite will happily sync back to my phone using sftp.

 

Near-term dports work

Rimvydas Jasinskas posted an extended description of what’s happening with dports.  There’s a significant xorg reformatting coming in ports, which is going to be absorbed into dports, but it may take some time.  There’s also an odd loss of commit rights for John Marino, who commits (frequently!) to both DragonFly and FreeBSD.  (His followup)  This all translates to some upcoming transition time for dports to accommodate these changes.

Note that if you are using dports binaries, especially on DragonFly 4.6 release, this won’t really affect you; the way dports is set up, binary sets always work.  It is interesting to hear about future work, in any case.

Significant memory handling changes in DragonFly

If you are on DragonFly -master, now is a good time to update.  Matthew Dillon has been changing how DragonFly handles locking and memory use, with differences in the vmstat structure and page coloring, some memory settings, and many other locking changes.  I am only linking to a few examples.  If you don’t want to dig through those links for performance numbers, he summarized his changes and their effects in a post to users@.