Jeroen Ruigrok posted an interesting link about moving machine state between machine.
News reporting from me has been slow for the past few days and will still be slow; my house has an ice dam built up and my kitchen and basement are flooding every time the sun comes out. Argh!
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.”
If you’re curious about variant symlinks, Chris Pressey submitted (and Matt Dillon committed) additional documentation to the ln
man page that talks about variant symlinks in some detail.
Joerg Sonnenberger has added AMD 8111 support in the ata driver.
Robert Garrett has removed all the FreeBSD/NetBSD references in the DragonFly boot code; cd /usr/src; make upgrade
to upgrade to these newer versions.
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.
I’m using Movable Type for this page; I’ve updated it to version 2.661. This should have little visible effect for readers.
Joerg Sonnenberger committed Chris Pressey’s patches to replace some remaining K&R-style declarations with ANSI ones, in libkern.
Joerg Sonnenberger has added gcc 3.3 to the base system. You can set ‘CCVER=gcc3’ to use it, even to do a buildworld/buildkernel, though that is “not recommended”. Andreas Hauser already reported a successful build and boot doing it, though.
Eirik Nygaard made a initial port of Valgrind to DragonFly, based on Doug Rabson’s FreeBSD work.
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).”
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.
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:
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 |
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
Winbond W83971D
Asahi Kasei AK4544A and AK4545
Realtek ALC850
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.