For once, I’m not working on Saturday, so even though this is last minute, at least I’m not in a race with the clock.
There’s been multiple reports of pulseaudio causing problems for DragonFly users. It would get pulled in as a dependency, and audio would suddenly stop working. Uninstall, and audio is fine. John Marino has removed it from dports, to prevent that exact problem.
There’s been a number of commits lately around higher optimization levels for your DragonFly kernel. It looks you can even set it systemwide. Boot code remains at -O; any higher level will make it explode. Is this safe? I have no idea!
If you are on DragonFly-current, AKA DragonFly 4.7, make sure to perform a full buildworld on your next upgrade. Tomohiro Kusumi changed a Hammer ioctl, and the buildworld is needed to keep everything in sync.
The last bits of Linux emulation have been removed from DragonFly. It’s 32-bit, so it’s been unsupported since DragonFly went to 64-bit only with the 4.0 release. Also, some other 32-bit only items are gone, including the cs, ep, ex, fe, and vx network drivers. It’s almost impossible that anyone was using it, but it’s notable because that’s some… 15-20k lines of code gone? Removal of unused code is also positive.
Alex Merritt noticed that one of the new characteristics of DragonFly 4.6 was “improved IPI signalling”. He asked about benchmarks, Sepherosa Ziehau pointed at tools, and Matthew Dillon provided some results.
Because this always happens just after I create a DragonFly release, there’s a new version of OpenSSL. However, this is for version 1.0.2. 1.0.1 is what’s in the release, and it’s supported through the end of the year.
OpenSSH has a major version bump in DragonFly, to 7.3p1. This means some features – specifically patches for High Performance Networking – are no longer there, and you’ll get an error if your config file requires them. Either remove the options from your config, or install OpenSSH from dports.
Did you know that ACPICA has its own internal ‘coding language’, called AML? I did not, but it’s in DragonFly now in any case. Every program eventually grows big enough to read email, and every specification eventually includes its own programming segment.
If you’re one of the people who can easily read ‘systat -vm’ output, the data presented there has been modified. If you’re not one of those people, it’s a good way to monitor system health.
Here is some coverage of the DragonFly 4.6 release, which may be interesting to read because of the comments: Hacker News, Hacker News again, and lobste.rs.
A reaction to the initial creation of DragonFly I never saw before, and Matthew Dillon’s followup. (via)
I like the summary in the very first comment of this story on DragonFly removing page-zeroing.
Thanks to a reminder from IRC user ‘cgag’, I’ve put an uncompressed ISO image of DragonFly 4.6 up on the main site. It’s linked on the download page, and should be available within 24 hours on the mirrors. If you are buying service from a virtual host provider, and can install an operating system directly from a downloadable URL, this is for you.
After some testing of different ways to pre-zero out memory pages, Matthew Dillon came to the conclusion: page zeroing doesn’t matter any more. The idea dates all the way back to CSRG, and he’s removed it from DragonFly.
DragonFly 4.6 is officially released! Download from your nearest mirror, or update your source files and build – my users@ email describes the steps.
I did all of this in a hour, because I had so many tabs saved from during the week. Don’t get overwhelmed!
Bonus DragonFly items, sent by Rolinh on IRC:
I’m a bit late on this, but: If you are using DragonFly-current, you will need to rebuild world. If you are on 4.4, this won’t matter until you go to 4.6, and you’d be rebuilding world and kernel for that anyway.
(4.6 will probably be tagged this weekend.)
DragonFly 4.6 release candidate 2 has been tagged. You can pull it directly from the master site in img or iso form (check your local mirror instead if possible), or shift to the new tag.
“Where is RC1?” you may ask? I tagged the first release candidate some days ago, and this bug was immediately found right after. It was easier to go right to RC2 once a fix was found.
This candidate will probably lead directly to a release version, so if you want to run the release version exactly, wait a few days.
Matthew Dillon added NVMe support recently, and he also made some changes to DragonFly’s I/O system. His test system was able to reach over a million IOPS. That’s bananas!
the i915 support in DragonFly now matches the Linux 4.4 kernel, which is good news if you have a Broxton, Skylake, or Cherryview processor, plus it adds a variety of fixes.
If you want to check battery life, ‘sysctl hw.acpi.battery.life’ may help, as Sepherosa Ziehau points out. I’ve always used ‘acpiconf -i 0‘, myself.
I like finding “This is how I did it” stories from people, as they are often really useful for anyone else trying to do the same “it”. Here’s Dave MacFarlane’s UEFI install story. (Note he’s still needing touchpad support.)
A useful tip: if your DragonFly machine isn’t usually on 24/7 (e.g. a laptop, not a server), you should move your Hammer cleanup from 3 AM to sometime when the computer is normally on.
karu.pruun shares a story of manually installing DragonFly on a UEFI-booting machine. In this case, it’s a Macbook, though there’s other non-fruit UEFI machines out there?
That’s one tip per subject, really. If you need to set up a ‘video’ group for xorg, here’s the one-liner to do so. If PulseAudio annoys you, which is not uncommon, ‘chmod -x /usr/local/bin/pulseaudio’ and it’ll go away.
It’s exactly what the title is: ipfw3 now does NAT in-kernel, without locking. I have no benchmarks to point at, unfortunately. The commit has usage examples.
This is a specialized use case, but Mono 4.x has some issues on DragonFly. Some minor testing has been done, but if you are already using it, please contribute.
The system I had for running a go builder died. I am running out of extra hardware. Is there someone who is using Go and DragonFly and is willing to commit to running a semi-dedicated builder?
There’s a new digital library in Kisumu, Kenya – and it’s running DragonFly for file storage.
Hammer2 now has inode indexing, which Matthew Dillon was avoiding while trying to create more efficient hardlink support. The result is now with that problem solved, more updates can come in: NFS support, mtime updates, output changes, code removal, and lots of other changes, not all of which I’m even linking.
If you have a NVMe chipset under DragonFly, you now can use a special utility to retrieve status information: nvmectl. Right now, only ‘info’ is implemented.
If you are running DragonFly 4.5 (i.e. bleeding edge), Sepherosa Ziehau made an ifnet change that will require a full buildkernel/world if you want things like netstat to keep working.
This is limited to some users of specific Intel video chipsets, but: if you get odd screen artifacts in X, the ‘vesa’ driver may work just fine for you. Or turn acceleration off. Or set ‘drm.i915.enable_execlists=0’ according to zrj on #dragonflybsd.
(Updated to reflect all the answers in the thread and elsewhere.)
If you didn’t already know about it, you will find this useful: DragonFly has a tuning(7) man page, about getting the best performance from your system. Matthew Dillon recently updated the man page with some tips about SSD setup.
Tomohiro Kasumi wrote a lengthy explanation of what “@@” means, in the context of the Hammer file system. It acts as a sort of signifier for each actual Hammer pseudo-file-system, since it’s possible to null-mount these anywhere in DragonFly, under all sorts of names. Don’t trust my summary, though – read his.
Sepherosa Ziehau needs to run DragonFly under Hyper-V at work, so he’s making improvements .
There are USB devices out there that are sort of like a mouse, as in they work as a pointing device, but they don’t show up as a mouse device. For example, the PowerMate USB Multimedia Controller. It’s possible to pipe the events from this or similar ‘weird’ devices to sysmouse, and use it the way you’d expect, with this fix from user tautology.
As part of his NVMe work, Matthew Dillon found I/O speed so fast that CRC checking actually got in the way of disk activity. He’s brought in a new CRC algorithm called xxHash. He also brought in Mark Adler’s hardware iscsi_crc32 implementation, but did not add it to Hammer2. There’s some work on read-ahead operations too, to deal with the NVMe throughput.
Remember how DragonFly now has autofs? That obsoletes amd, amq, and so on, in the am-utils suite. Now, am-utils has been removed. This may affect nobody, as am-utils wasn’t working well.
Did you know there’s a rescue image, created with crunchgen, in DragonFly? If your system can boot to single-user mode, you can use it to at least manipulate data on disk – it includes mined as a simple small editor. (Since vi assumes /usr is mountable.) This rescue image now includes undo, so you can back out changes on a Hammer volume.
If you have iwm(4) network hardware, that driver now supports some more chipsets, plus it’s had some other updates, courtesy of Imre Vadasz.
(I think I spelled Imre’s name right for once!)
Matthew Dillon has been testing on more NVMe hardware, or at least what is supposed to be NVMe hardware, and he has a writeup of the results that may be useful for anyone planning a shopping trip soon.
Remember Sepherosa Ziehau’s nginx tests on DragonFly? He’s using the same configuration to test performance of the accept(2) and close(2) calls. The result? Over 8000 concurrent connections, for 580,000 connections per second. That’s on one DragonFly machine.
Matthew Dillon has written a new, from scratch, driver for NMVe in DragonFly. If you haven’t encountered it yet, that’s SSD access over PCIe, which gives better throughput than ATA. He’s posted a summary of his work, and it’s possible to load it now as a module. It supports MSI-X, and there’s test results from using dd on supported NVMe hardware.
Tomohiro Kusumi has finished his port of autofs to DragonFly; you can now have a filesystem automatically mount when accessed, rather than requiring it at boot.
If you are running DragonFly in a virtual environment, there’s been some improvements to virtio(4). Update and try if you’ve had problems in the past.
Sepherosa Ziehau has been working on network performance, including making more network calls asynchronous. His test case using nginx shows that a single DragonFly machine can now take enough traffic to max out 2 10Gb links. That’s with 16Kb requests, and 30,000 of them at the same time.
If you have a ral(4) wireless card that didn’t function as expected, it may suddenly work for you now on DragonFly 4.5 due to the large wifi update. The ral(4) driver covers a lot of hardware, so check the man page for all the commercial names.
Matthew Dillon and Adrian Chadd have updated the wifi setup in DragonFly, incorporating Adrian’s FreeBSD changes (and merging back some of Matt’s from DragonFly). This affects the ath, rum, iwm, iwn, run, bwn, urtwn, wi, ral, iwi, ndis, and wpi drivers. The ‘an’ driver has been removed, too. I’m not going to even try to link to all the commits.
If you’re on DragonFly master and are using one of these devices, now is the time to update and try. Note that this removes the separate network interface that’s specific to the device and creates only a wlanX device.
Update: Matt reminded me that at least half the work came from Imre Vadasz; I missed it because I was only looking at the commit email names – mea culpa.
Read this email thread for how to mount devices (e.g. USB drives) in DragonFly when you aren’t root.
karu.pruun managed to get xwayland working on DragonFly, and also took notes while doing it. That means you can try it out, too.
If you get “libGL error: failed to open drm device: Permission denied” when using direct rendering, make sure to add your user id to the ‘video’ group.
DragonFly versions of TeX have been available for some time now. However, Nelson Beebe, who is part of the TeX project, is having trouble building some related binaries – asymptote and clisp. He could use help from anyone interested, to match up with this summer’s release of TeX 2016.
Some DragonFly links are sneaking in here just to get them cleared out.
- May 17th: Ike Levy speaks at SemiBUG. Go if you are anywhere near; Ike’s a good speaker and passionate about BSD.
- Speaking of scheduling: BSDCan 2016 is less than a month away.
- Why OpenBSD Is Important to Me. (via)
- BSD Unix: Power to the people, from the code. (via)
- FreeBSD PowerPC 32bit pkg repository (unofficial). ~19,500 packages, more to come. (via)
- As a Linux user, where should I start with experimenting with BSD?
- DragonFly i915 driver updated to Linux 4.3. (via)
- DiscoverBSD for 2016/05/09.
- Cons of staying on an old -RELEASE version ?
- More p2k16: ajacoutot@ on Gnome, rc and rcctl improvements, krw@ on pdisk, softraid and more.
- SROP mitigation committed. (OpenBSD)
- The 50th Quarterly pkgsrc Release, pkgsrc-2016Q1. Also, stats.
- Thomas Levine’s notes from the recent NYCBUG presentation on Urchin.
- NetBSD on the Sega Dreamcast, presented on a Dreamcast.
- How BSD was built, and how it lost the lead to Linux.
- Running Tor in a NetBSD rump unikernel. (via)
- Running FreeBSD / OpenBSD / NetBSD as a virtualised guest on Online.net.
- Meet Joe Maloney – Lead System Architect for PC-BSD. I like the transition from volunteer to employee.
- LinuxFest Northwest 2016: The Devil in the Details: Switching to BSD from Linux. Apparently one of the most popular videos.
I usually link to new features, additions, and so on. That’s fine, but there’s often necessary work that goes on which doesn’t correlate to a new function – just better code. Rimvydas Jasinskas just did one of those cleanups, and I’m mentioning it to give credit where’s it’s due.
If you are on the Skylake series of processors, and also running xorg on DragonFly, pick ‘uxa’ video acceleration. Andrew Slaughter found this made a significant different in visual quality.
Sepherosa Ziehau posted an extended description of his work with nginx on DragonFly, and the kind of performance he was able to wring out of it. Of special note: he posts all his sysctl changes, which might be useful to anyone else in high-traffic environments, and notes that he was able to saturate a 10Gb link with one DragonFly machine.
Also: a followup comparing interrupt vs. polling performance.
The drm/i915 driver has been updated by Francois Tigeot to match what’s in Linux kernel 4.3. His commit post has the general detail; you will especially want this if on DragonFly-current and running on Skylake architecture.
Tomohiro Kusumi has been working on a port of autofs to DragonFly. If you aren’t familiar with it, autofs is an automatic file system mounter, so when you access a network file system at its local mount point, autofs kicks in and makes sure the remote file system is automatically mounted. He has an initial report on his progress, and expects it to be in DragonFly master in the next month.
If you’ve ever wondered how having multiple swap devices can work, here’s your DragonFly-specific answer.
If you happen to be testing kernel modules, DragonFly can now load them from a modules.local directory. This keeps modules that aren’t part of the base system, separate. This is probably of most use to developers. It’s controlled by local_modules being set in /boot/loader.conf, and defaults to on.
(Updated for correct file location – thanks, swildner)
If you’re on DragonFly, or maybe even if you aren’t, and you are using NFS, here’s some tips on how to wring the best performance out of it.
Not older people that use DragonFly, but people of any age using an older release of DragonFly: Bezitopo is Pierre Abbat’s topographical program, and he needs testers on versions 4.4 of DragonFly or before. Please give his open-source program a run if you are on the appropriate versions. Trying other BSDs, even though not requested, can’t hurt.
If you’re using qemu and DragonFly, the latest update of ACPICA to version 20160422 may fix some issues introduced in a previous update. (I don’t have a specific bug report to point you at; sorry!)
The DragonFly 4.4.3 point release is out. There’s a commit page listing the changes between 4.4.2 and 4.4.3. Nobody will be surprised that there’s an OpenSSL update in there.
If you want a complete image, it’s available for download at your nearest mirror. If you want to upgrade an existing install:
cd /usr; make src-update
(or src-create-shallow if you don't already have source)
make buildworld && make buildkernel
make installkernel && make installworld
This is one of those weeks where a bunch of release all tumble together by chance.
Tomohiro Kusumi would like to port Hammer (1) to FreeBSD, as noted in this bug discussion. It’s not even begun to happen, but if you can contribute, please do.
Tomohiro Kusumi has been creating a near-constant stream of bugfixes and cleanups to Hammer for quite some time. I don’t often link to it, because they are incremental improvements and hard to linkblog, so to speak. In an effort to make up for this deficit, I do want to draw attention to his two recent commits: “Make hammer commands print root volume path“, and “Print volume list after volume-add|del“. Small changes, but this is what makes complex systems usable.
If you remember this Baytrail problem, Daniel Bilik has gone and found a fix, as this appears to be a cross-platform bug, and he has patches for DragonFly. If it’s affecting you, you don’t have to wait for the patches to be added in; he’s made them available directly.
Update: it’s committed to DragonFly now.
I keep posting about Sepherosa Ziehau’s work on sustaining extremely high traffic loads in DragonFly. Now I’m posting about a tool to create that load: kq_sendrecv. It creates tens of thousands of TCP connections, without creating a process for each, and uses kqueue, as you might guess from the name. This may be useful if you really want to tax another system.
Do you have a Cherry Trail SoC? For example, a HP x2 210? Imre Vadasz’s recent commit may be useful for you, if you are running DragonFly on this detachable … thing?
Tim Darby is looking for motherboard recommendations. Specifically, mini-ITX with 4 SATA ports and at least one decent network link. Who’s got hardware to recommend? There’s already one set of suggestions.
By the time you read this, I will have already been at my second job for 5 hours.
If you have a Radeon video card in your DragonFly system, and are running bleeding-edge, there’s an update for you. This is a partial sync with Radeon code for Linux 3.18, with no additional notes in the commit but you can always check elsewhere.
unzip has been added to DragonFly, making it present in every BSD but I think OpenBSD.
Imre Vadasz has added the ability to create a UEFI bootloader in DragonFly. Can you use it? I don’t know; I haven’t tried it yet and I can’t tell from the commit.
John Marino has added the starting framework to use clang as the alternate base compiler in DragonFly. Note that it’s not hooked into the build yet. This is the first non-GCC compiler added into DragonFly, so there’s some work yet before you can have an all-clang system. This should replace GCC 4.7, which is the current alternate compiler. GCC 5.0 is the default, if you didn’t know.
Note that clang is present in dports, so it’s already been available for general use, for some time. This framework is for building DragonFly itself.
If you somehow have a device with multiple SD/MMC card slots, you can now access all of them under DragonFly. (Apparently done to make a tablet run DragonFly better, going by IRC conversation)
If you are running bleeding-edge DragonFly, Sepherosa Ziehau has made some networking changes that both reduce CPU usage in high-traffic situations and change some underlying network structures. This means a full buildworld is needed on your next update.
If you’re using DragonFly 4.4.x or older, you are unaffected.
If you find yourself using gpt and disklabel64 for a new disk, and aren’t quite sure what order to type everything in to create a disk slice, why not crib from Tim Darby’s notes? (note that the archive has added some line breaks to it.)