Jeff Roberson Begins FreeBSD SMPng VFS Integration
A FreeBSD User writes "Jeff Roberson has announced that he has has begun integrating the Giant-lock free VFS code into the FreeBSD 6.x development tree. These changes will permit the UFS file system to run on multiple CPUs at a time on SMP systems (hyper-threaded, dual-core, or regular SMP), leading to substantially improved efficiency. It will also permit the VFS code to be fully preemptible on uni-processor systems, improving interrupt handling latency. With this change, almost all of the FreeBSD kernel is able to run fully threaded and in parallel on multiple CPUs with much less contention. He anticipates merging this work as an "opt-in" feature to the FreeBSD 5.x branch in the future. He indicates that the testing will be "opt-in", i.e., this change will not be fully enabled by default for the time being, and that it will take a while (a few hours) to complete the merge, so users of the 6-CURRENT branch may want to hold off updating for a few hours while he finishes the merge. The work was sponsored by Isilon Systems."
There's still the giant lock (lock_kernel/unlock_kernel) but it keeps getting pushed farther down. At this point there aren't many performance critical parts that are still protected by it. Most of the huge-SMP work has moved on to other areas these days. There's still some activity though -- just in the last few weeks there were some changes to allow drivers to handle ioctl()'s without the giant lock.
But yeah the core filesystem stuff has been outside the kernel lock for AGES. I'm actually pretty amazed that FreeBSD is that far behind.
It's the difference between -STABLE and -CURRENT. The former only gets bug fixes, and if they've been tested to death, new drivers. As of 5.3, the 5.x branch became -STABLE, so for anything else, you have to use -CURRENT, and be patient and wait for 6.x to become STABLE.
Don't blame me, I didn't vote for either of them!
If you want to give DragonFly another chance, I suggest you use NetBSD's pkgsrc instead of ports. It works perfectly for me.
save the GNUs!