Matt Dillon has made some changes to the xl driver that apparently solves a mysterious bug; I’m quoting from his changelog message below:
“Turn off hardware assisted transmit checksums by default. In buildworld loop tests this has been conclusively shown to corrupt transmit packets about one out of every million packets. The receive will not know the the packet is bad because hardware assist also apples the correct checksum to the corrupted packet. The result are random failures or corruption of network data in certain situations. On DragonFly, for some reason, doing a ‘resident /usr/bin/*’ seems to bring the problem out every few buildworlds with (primarily) mkdep’s cpp complaining about odd errors trying to open non-existant header files (during a header file search), such as EPROTONOSUPPORT. A tcpdump on both NFS client and server showed the client transmitting an access RPC and the server seeing a corrupted access RPC on its end, and then responding with EPROTONOSUPPORT. Other uncaught errors are also almost certainly occuring. mkdep is more likely to catch them because it actually checks the errno of a failed open() and does a huge number of open()’s (and as an NFS client this generates a huge amount of packet traffic).”
nanosleep() presentation is now on the DragonFly website.
Matt Dillon noted that:
are the only options you need when building with debugging options on.
Jeroen Ruigrok commited code to recognize the SiS 645DX motherboard drive controllers (see prior mention as UDMA100 instead of UDMA33.
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:
Thanks to Emiel Kollof (sorry I screwed up attribution!), AC97 support has been synced up with FreeBSD, plus support for the following devices has been added by Jeroen Ruigrok:
Diamond Technology Monster (DT0398)
Intersil (Harris) HMP9701
Integrated Technology Express (ITE) ITE2226E and ITE2646E
Texas Instruments TLC320AD90
Asahi Kasei AK4544A and AK4545
Wolfson WM9711L, WM9712L, and WM9709
Texas Instruments’ TLV320AIC27
Conexant SmartDAA HSD11246
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.
Jeroen Ruigrok committed version 1.12.5 of CVS.
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.
Jean-Marc Zucconi benchmarked FreeBSD 4.9-R, 5.1-R, 5.2-R and DragonFly on a multiprocessor system, and posted the large quantity of data this generated. It’s mashed into a table here:
(updated with better results for 5.2; ACPI was generating so many interrupts it was slowing his system.)
(see end of entry for his notes)
Continue reading “Benches being marked”
Bernhard Valenti found he had to put “
set hw.ata.ata_dma=0” in the boot loader to get his 645DX-based motherboard ATA working. Jeroen Ketema also found that write caching had to be off: “
Because of the GCC2/GCC3 work (which, incidentally, will allow other compilers like TenDRA to be used in system compilation), do a “make upgrade” after your next installworld. This will clean up now-stale compiler files, plus update files in rc.d and so on.
Following up on recent discussion, ibotty listed ICU as another internationalization alternative.
David Rhodus and Matt Dillon are getting GCC2 and GCC3 into the base system today; updating your source during the next 24 hours may bring you an unstable version.
Ryan Dooley brought up The CITRUS Project as a way to assist internationalization in DragonFly.
According to this benchmark, linked to by Xin LI, there’s file descriptor allocation code in FreeBSD 5 that may be worth the effort to port.
This is the 200th post here – neat! I’m averaging just under 1.5 posts per day, which is good: healthy posting, healthy project.
In a discussion about benchmarks, it was noted that
/etc/malloc.conf changes can help benchmarks tremendously. Rahul Siddharthan suggested ‘
/etc/malloc.conf -> H' and Jeremy Messenger suggested '
/etc/malloc.conf -> aj‘
Also, Matt Dillon made a number of suggestions on what to check when benchmarking DragonFly vs. FreeBSD (4 or 5)
Matt Dillon quote follows:
Continue reading “Benchmark setups”