Robert Garrett <rg70@sbcglobal.net> is working on the aforementioned OSL Beaver Challenge; if you are interested in participating for “Team DragonFly”, contact him
KDE 3.2 is out. It should be possible to compile at least the base parts on DragonFly thanks to Dave Leimbach.
Wouter Clarie posted about the OSU Beaver Lab Challenge, where the OSU Lab wants to benchmark a number of operating systems (Linux and BSD flavors) against each other, with teams for each operating system to tweak as needed. There’s no DragonFly team at this point, though it may not be useful to ‘compete’ before an inital release.
Matt Dillon is doing what he did with binutils-214 – He’s bringing in a prerelease version of gcc 3.3.3 to replace the FreeBSD 5 specific version of gcc 3.2 currently used. This version of gcc (and binutils) are straight from the vendor, which should mean staying in sync with new releases will be much easier.
Note: using gcc3 may/will lead to breakage right now…
As part of the discussion about CVS and similar products, Garance A Drosihn pointed out that he was working on a C++ version of cvsup
, meaning that it wouldn’t require Modula-3 installed to build as it does now. He stopped work because these is apparently a C version in the works, which he hopes would be out by the time of FreeBSD 5.3’s release, somewhere in the next year. That’s good news for DragonFly, too, as cvsup
is the method for code updates for the foreseeable future.
There was discussion some time ago of using rsync
for updates, which is certainly possible… Binary updates would be nice, too.
Pedro F. Giffuni brought up the idea of using subversion instead of cvs for storing DragonFly source. Bakul Shah pointed out that subversion was not yet mature enough for a switch from cvs in his experience, and Matt said we are continuing with cvs.
Thanks to Jeroen Ruigrok, the version of autoconf now in CVS knows what a ‘DragonFly’ system is.
Jeroen Ruigrok posted an interesting link about moving machine state between machine.
Matt Dillon’s planning to work on AMD64 support for February. He listed these steps:
“* build support and cross compilation work
* kernel build
* boot 64-bit kernel almost to single user
* 32 bit userland support
* boot kernel to single user
* basic device driver and filesystem testing
* boot kernel to multi user (fully working system at this point)
* everyone w/ 64 bit boxes start banging on it, fixing additional
device drivers, get 64 bit buildworlds working, and so forth.”
Matt Dillon’s been working on this patch, described as so:
“These are dyamic[sic] interrupt-driven timers. They replace the old fixed periodic ‘hardclock’ interrupt that exists now and allow per-cpu multiple periodic or one-shot timer interrupts to be registered with the system. Systimers operate outside the MP lock, so any code developed to use it has to be MP safe. Systimers are intended to be able to make use of per-cpu timers (e.g. LAPIC), when available, and will eventually be augmented to use them.”
It also has the added bonus of making nanosleep()
very accurate.
‘esmith’ reported successfully building OpenOffice 1.1 using the base version of GCC 3.3 now in.
Eirik Nygaard made a initial port of Valgrind to DragonFly, based on Doug Rabson’s FreeBSD work.
Paul Herman’s nanosleep()
presentation is now on the DragonFly website.
Matt Dillon noted that:
makeoptions DEBUG=-g
options DDB
options INVARIANTS
options INVARIANT_SUPPORT
are the only options you need when building with debugging options on.
Skip Ford ported Tim Robbins’ FreeBSD port of Niels Provos’ NetBSD file descriptor allocation code. Normally I don’t post about code until it gets committed, but he posted some numbers on how well it improves things, as benchmarked by Niels Provos’ test program that opens/closes files repeatedly. The numbers seem to indicate a 50% speedup:
File Descriptors | Unpatched | Patched |
1 | 0.765650 | 0.781279 |
2001 | 1.148484 | 0.789092 |
4001 | 1.546935 | 0.765657 |
6001 | 2.062582 | 0.781276 |
8001 | 2.515725 | 0.796906 |
10001 | 3.086061 | 0.796904 |
12001 | 3.632955 | 0.765654 |
14001 | 4.086098 | 0.757841 |
16001 | 4.515805 | 0.820343 |
18001 | 4.976759 | 0.812530 |
20001 | 5.429916 | 0.796905 |
22001 | 5.898652 | 0.773467 |
24001 | 6.336188 | 0.773455 |
26001 | 6.750268 | 0.804718 |
28001 | 7.179972 | 0.789091 |
30001 | 7.633110 | 0.781281 |
32001 | 8.070632 | 0.789091 |
34001 | 8.523771 | 0.796906 |
36001 | 8.953479 | 0.789092 |
38001 | 9.375370 | 0.765656 |
40001 | 10.117587 | 0.789090 |
42001 | 10.758238 | 0.789091 |
44001 | 11.367636 | 0.804718 |
46001 | 11.820781 | 0.812531 |
48001 | 12.453618 | 0.812530 |
Matt Dillon is bringing in resident executable support. This speeds loading of dynamically linked programs by saving a copy of their vmspace with vmspace_fork() in the kernel, and using that when executed instead of going through the regular, slower startup. This will replace prebinding.
Matt Dillon posted these preliminary numbers running a test program with Perl:
dynamic: | 2.860u 2.668s 0:05.61 98.3% | 87+231k 0+0io 0pf+0w |
prebinding: | 1.821u 2.095s 0:03.90 100.2% | 34+202k 0+0io 1pf+0w |
resident: | 1.239u 1.846s 0:03.08 99.6% | 137+280k 0+0io 0pf+0w |
statically linked: | 0.418u 0.867s 0:01.28 99.2% | 808+616k 0+0io 0pf+0w |
It is planned to make dynamic loading as fast as static. For those of you not familiar with the output of time
, the first column is total time taken, the second is time taken to run the tested program, and the third is time consumed by system overhead. Yes, there are more columns than that. No, I don’t know what they mean.
Discussion continues on journaling, soft updates, and background fsck. Jeroen van Gelderen linked to “Design Evolution of the EROS Single-Level Store” while talking about journaling meta-data, and Matt Dillon mentioned that he and David Rhodus are putting together a kernel API for journaling, so that some ambitious person can build it. Matt Dillon also pointed out he favors journaling because softupdates is a complex beast, and modern IDE drives are somewhat undependable when it comes to the way they lay down data. As an added bonus, Diego Calleja GarcĂa linked to a description of reiser4 which talks about journaling, along with some freaky illustrations.
Joerg Sonnenberger wrote up a proposal for background fsck, which he posted to the kernel discussion group. I”m pasting it wholesale.
(Matt Dillon has indicated he would prefer a journaling filesystem.)
Continue reading “Background fsck vs. journaling”
Matt Dillon noticed in a thread on the freebsd-hackers mailing list (see here for original post, and look for articles following that have [CHECKER] in the subject) that the M_NOWAIT command is being used incorrectly in a number of places, both in DragonFly and in FreeBSD.
I’m just pasting the rest of his post, as it’s not something that boils down easily:
Continue reading “M_NOWAIT NOGOOD”
As part of a discussion about internationalization, Matt Dillon mentioned he plans to finish IPC this weekend as it would be a useful implementation method. He also mentioned offhand that the first release of DragonFly could be in June/July.