DragonFly BSD

release46

DragonFly BSD 4.6

DragonFly version 4.6 brings more updates to accelerated video for both i915 and radeon users, home-grown support for NVMe controllers, preliminary EFI support, improvements in SMP and networking performance under heavy load, and a full range of binary packages. 4.6.1 adds some security fixes and a power management daemon. 4.6.2 was a catchup release containing all 4.6 fixes before the 4.8 release.

The details of all commits between the 4.4 and 4.6 branches are available in the associated commit messages for 4.6RC, 4.6RC2, 4.6.0, 4.6.1, and 4.6.2.

Big-ticket items

Improved graphics support

The i915 driver has been updated to match the version found with the Linux 4.4 kernel. This gives us significantly better stability on newer cpus, Broadwell and Skylake in particular.

The radeon driver has been updated to match Linux 3.18, and controls for the backlight are available through drm.radeon.backlight.

NVMe support

We now have a NVMe driver (PCIe SSDs). It currently must be kldloaded with nvme_load="YES" in /boot/loader.conf. The driver uses all concurrency features offered by the chip and will distribute queues and interrupts across multiple CPUs to maximize performance. It has been tested up to around 1.05M IOPS @4K, and roughly 6.5 GBytes/sec @32K (random read from urandom-filled partition, physio, many threads), with the 2xE5-2620v4 (xeon) test server 78% idle in the IOPS test and 72% idle on the bandwidth test. In other words, we maxed out the three NVMe devices we had plugged in and the system still had plenty of suds left over.

Please note that a machine's ability to boot from an NVMe device depends on the BIOS, and not DragonFly. Most BIOSes cannot boot from NVMe devices and those that can probably only do it through UEFI. Info on device state is available with the new utility nvmectl.

NVMe support is not in the default kernel, yet. Put nvme_load=”YES” in loader.conf to use it.

SMP Performance significantly improved

SMP performance was already very good. As part of the NVMe driver work we revamped the buffer cache subsystem and a number of other I/O related paths, further reducing lock contention and IPI signalling overheads. We also put topology-aware cpu cache localization into the kernel memory allocator (primarily helps multi-socket systems and systems with high core counts).

The network subsystem also continues to receive significant improvement, with modest machine configurations now capable of handling upwards of 580K conns/sec.

Expansion of supported packages

DragonFly now supports over 24000 packages via its dports mechanism. This year a great deal of work went into improving library compatibility and improving the quality of the ports and the dependability of the bulk build system that backs them. Normal users can now do customized bulk builds of their own ports packages through a simplified build interface called "synth", which is itself available via the dports system (if desired, and you have sufficient machine resources and time).

Preliminary EFI support

DragonFly now supports (64-bit) EFI booting, but it has not been integrated into the installer. Following the manual steps of other users is the immediate solution.

Details

Checksums

MD5 (dfly-x86_64-4.6.0_REL.img) = ad06ed86ca67c23a54820ded123203c3
MD5 (dfly-x86_64-4.6.0_REL.iso) = 117b0a23044685067f23be6dd4297963
MD5 (dfly-x86_64-4.6.0_REL.img.bz2) = d544e81e1e24509edf44abcd7b8c562a
MD5 (dfly-x86_64-4.6.0_REL.iso.bz2) = aaaf3212b3922ed694324a6659fd2604

Upgrading

If you have an existing 4.4.x system and are running a generic kernel, the normal upgrade process will work. Change your local /usr/src to 4.6:

cd /usr/src
git fetch origin
git branch DragonFly_RELEASE_4_6 origin/DragonFly_RELEASE_4_6
git checkout DragonFly_RELEASE_4_6
git pull

And then rebuild: (in /usr/src )

make buildworld
make buildkernel
make installkernel
make installworld
make upgrade

Don't forget to upgrade your existing packages. 4.6 packages have already been built and are immediately available.

pkg upgrade

All changes since DragonFly 4.4

Kernel

Graphics

Networking

Other drivers

Userland

Various tools have been upgraded in the base system:

HAMMER improvements

Other improvements

Hammer2 Status

HAMMER2 is still in-progress and will continue to be for some time. It is not ready for prime-time, but significant work has been done on its internals to improve backing-device separation, improve stability, and increase throughput in SMP environments. HAMMER2 now supports export via NFS.

Clang status

A starting framework has been added for using clang as the alternate base compiler in DragonFly, to replace gcc 4.7. It's not yet complete. Clang can of course be added as a package.

A Note on the Removal of 32-bit Support

DragonFlyBSD is now a 64-bit only distribution. It will no longer compile for a 32-bit target and most of the 32-bit support code has been removed over the past year. Some users have noted that this might be little premature, but the reality is that developers not only of DragonFlyBSD, but of other operating systems and more importantly of applications have begun to quickly shift over as well. From a kernel development perspective: