DragonFly BSD

release40

DragonFly BSD 4.0

Version 4 of DragonFly brings Haswell graphics support, 3D acceleration, and improved performance in extremely high-traffic networks. DragonFly now supports up to 256 CPUs, Haswell graphics (i915), concurrent pf operation, and a variety of other devices.

The details of all commits between the 3.8 and 4.0 branches are available in the associated commit messages for 4.0RC1, 4.0RC2, 4.0RC3, 4.0.1 release, 4.0.2 release, 4.0.3 release, 4.0.4 release, 4.0.5 release, and 4.0.6 release.

Big-ticket items

Improved graphics support

DragonFly 4.0 now supports GPUs from the Haswell family, and OpenGL acceleration is now available out of the box.

32-bit i386 architecture no longer supported

As announced during the 3.8 release, DragonFly BSD is 64-bit only. No 32-bit installation images have been generated, and no compatibility work is being done for 32-bit systems.

Changes since DragonFly 3.8

Kernel

New device files /dev/upmap and /dev/kpmap have been added.

These memory mappable drivers allow for a per process or common to the kernel shared memory space. The objective is to allow kernel-provided information to be directly read from memory, without having to pay the cost of a traditional system call. This a bit similar to the VDSO mechanism in Linux.

System calls using this new functionality :

When more than 10 calls are made to these functions, the upmap/kpmap mechanism is enabled and information is read directly from memory, reducing considerably the overhead of these system calls. gettimeofday(2) is still implemented as a traditional system call in order to provide more precise temporal values. Performance-wise, it is thus important to use clock_gettime(2) instead of gettimeofday(2).

The usb4bsd stack has been marked MPSAFE.

CPU limit increased

DragonFly 4.0 now supports systems with up to 256 CPUs, up from 63 in DragonFly 3.8.

Graphics

The drm/i915 driver is now mostly based on the Linux 3.8.13 implementation and is no longer similar to the FreeBSD driver. Many Linux APIs and data structures have been implemented in the DragonFly kernel in order to reuse as many parts as possible of the Linux drm/i915 code without modifications. The most notable improvements are added support for the Haswell GPU generation and increased stability.

The drm(4) driver has been slightly improved in order to support the i915 changes and is now marked MPSAFE.

Many bugfixes have been applied to the drm/radeon driver and its drm/ttm memory manager. The kernel radeon driver is now used by default, the last user-mode setting xf86-video-ati driver still being available if desired.

Hardware accelerated OpenGL support is now available out of the box on supported i915 and radeon GPUs. Software rendering is also improved and makes use of recent CPU vector instructions such as AVX when available.

The mach64, mga, r128, savage, sis and tdfx drm drivers have been removed. They were used to provide OpenGL acceleration with old GPUs from the 1990s to early 2000s.
The Mesa 3D library having already dropped support for them in 2011, these drivers were no longer useful.

Networking

More parts of the UDP stack are now handled in parallel on multiple CPUs, leading to performance increases. For example, on an Intel Core i3-3770 system with a 10Gb Intel 82599ES network adapter, UDP transaction rate with 18 byte packets has been improved by 19%, going from 1.12 to 1.34 million of transactions per second.

ARP, IP, IGMP, TCP and routing performance has also been improved.

The urndis driver has been imported from FreeBSD, allowing USB tethering. Devices providing shared USB connections such as smartphones, can now be used as a network card.

The if_lagg(4) driver has been ported from FreeBSD. It allows many network interfaces to be aggregated in a single virtual one. The various physical interfaces can be load-balanced together or function in a master/backup way, with backup interfaces being automatically used if the master one encounters problems. This driver also contains an implementation of the IEEE 802.3ad protocol, which allows the previous mechanisms to be used with remote interfaces present in a network switch for example.

The igb(4) driver now uses MSI-X interrupts on i354 hardware

The iwn(4) driver has been synchronized to FreeBSD.

ath(4) has been updated from FreeBSD.

The re(4) driver now uses MPSAFE callouts.

Packet Filter (pf)

The pf firewall is now able to work in a concurrent manner on many CPUs.

Storage drivers

A mrsas(4) driver has been added by Sascha Wildner. It provides support for LSI Thunderbolt and more recent (Invader and Fury) RAID adapters.

The ciss(4), isp(4), mfi(4), mpt(4), mrsas(4) and twa(4) have been marked as MPSAFE.

Crypto

Alex Hornung has added the ChaCha algorithm, an improved variant of Salsa20, used among other things by BLAKE, one of the five finalist of the NIST competition to determine the SHA-3 algorithm. Chacha has been added in order to be used for the new pseudo-random number generater (CSPRNG) based on Fortuna.

A new sysctl entry has been added in order to choose the generator used for /dev/random. 3 modes are possible:

Mobile devices

An atmel_mxt driver has been added for the touchscreen driver of the Acer C720P notebook.

Userland

Various tools have been upgraded in the base system:

Other improvements

Some work has also been done by John Marino in order to make the base system buildable by clang.

rcreload

Zachary Crownover has provided a new rcreload functionality to rcrun(8).