Frank van der Linden has committed UFS2 code (based on FreeBSD’s UFS2 by Marshall Kirk McKusick) to NetBSD. UFS2 is an extension to FFS. It adds 64 bit block pointers (breaking the 1T barrier) and support for extended file storage. On other BSD news, OpenBSD got a port of XFree86 4.3.0, while Kerneltrap features an article about the new 1:1 threading implementation that has been merged into FreeBSD -current.
UFS2 Ported to NetBSD
2003-04-03 NetBSD 4 Comments
My my, this is an interesting development. Until now, most work in FreeBSD has been based on the M:N threading model, used by Solaris, among others. FYI, here is the main difference between the two:
1:1 – One kernel thread = one user thread. Everytime a user thread is created, a kernel call is made and a kernel thread is created to support it. This model is very simple and clean, but sometimes can’t scale to tens of thousands of threads.
M:N – Many kernel threads = many (larger number) user threads. In this model, you can have 1000 user threads, but only 10 kernel threads supporting them. If more physical threads are required (for example a lot of user threads just woke up) then the userspace scheduler calls into the kernel to increase M. When the kernel needs to notify the user level scheduler of events, it does an upcall (scheduler activation) This model scales well to applications like Java, which can use thousands of threads in a single system.
On Linux, NPTL (1:1) seems to have one out over NGPT (M:N), because tests showed that a 1:1 model could be competitive, even with a hundred thousand threads, without all the complexity of the two-level model. It should be interesting how this pans out for FreeBSD.
Does this mean that UFS2 will be the efault filesystem for NetBSD in the future ?
Until now, most work in FreeBSD has been based on the M:N threading model, used by Solaris, among others
Actually, with Solaris 9, Sun switched from a MxN implementation to a 1:1 implementation. The 1:1 implementation has proven not only to be a better performer, but also a lot easier to debug.
4. The scheduling parameters lie.
They are not undefined; they explicitly lie.