Switch now or pain later

David Rhodus mentioned in his GoBSD journal that DragonFly is a better choice right now than FreeBSD 4.10, highlighting a FreeBSD-4 unfixed bug in his journal. He also let slip that he’s working on a commercial operating system based on DragonFly, with the first release candidate coming very soon.

Improvements in the future

Rahul Siddharthan pointed at this post as evidence of softupdates not working as quickly as it used to, for FreeBSD and by extension DragonFly. Matt Dillon replied that:

“FreeBSD-5 has a lot overhead, especially when it comes to the buffer manipulation that softupdates does. DFly should be nearly the same as 4.x in regards to FS performance.

There isn’t much I can do about softupdates but the (slowly progressing) namecache work will eventually allow us to release the exclusive lock on the directory vnode during directory searches and this will bring up our lots-of-little-file benchmark numbers considerably.

Another issue that slows down filesystem operations is the busy-page lockout that occurs when the system is writing data to disk and some other operation wants to modify the page undergoing I/O. That is ”on the table’ as well.”

Don’t forget about gcc3!

Hiten Pandya noted that, if you are creating a port override in dfports, setting CCVER=gcc3 and testing your override using the different compiler is a good idea. He’s found a few ports where poeple didn’t do that and the build was broken.

Saving crash dumps

Sascha Wildner described in a post to dragonfly.bugs,

dumpdev="/dev/ad0s1b"

placed in /etc/rc.conf will enable your system to save crash dumps in /var/crash, saving the effort of retyping them in a post. (“makeoptions DEBUG=-g” in your kernel config is also needed.)

CPUTYPE considered harmful

Jeroen Ruigrok tried using ‘CPUTYPE=p4’ in make.conf as an option to gcc. The resulting kernel crashed; and several people pointed out that the CPUTYPE optimization does not work – especially with gcc 2.x. Matt Dillon went on further to explain how little it helps:

“Trying to use cpu-specific optimizations in 2.95.x is roughly equivalent to a blind man driving an 18 wheeler down the highway. In other words: “don’t do it, it doesn’t work”. GCC2 is known to produce bad code not only with CPUTYPE, but also with higher optimization levels like -O2. Blame the GCC folks for this.

GCC3 does a better job but even so I would not use CPUTYPE without being prepared to turn it off when something breaks, and at best I might use -O2 or -Os (under GCC3 only, and even then we don’t really officially support it, since differentiating between compiler code generation bugs and DFly bugs is extremely difficult).

Besides, you won’t notice any improvement in kernel performance.”

slip tags explanation

Matt Dillon posted more ideas on how the DragonFly releases were to go. Specifically, different versions would be coded by slip tags instead of the branches that go on with FreeBSD:

releaseX_Y: Specific official release, build and regression tested, including security fixes. A sub-sub version (Z) would be embedded in the uname to differentiate between updates to a release, but not be incorporated into the tag name.

release: Current official release.

developer: Developers who want to be cutting edge but still be ‘reasonably’ stable, with occassional glitches.

HEAD: Absolute latest work, might have build and other issues.

Not being branches, slip tags are limited in scope. It might not be possible to incorporate a security fix into a particular release tag, for example, all we would be able to do is tell people to upgrade to a later release. When we are able to stabilize the system interfaces (about a year and a half from now) this won’t be a big deal.”