Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

vmlocking2 branch merged


The vmlocking2 branch was merged into -current earlier today. The global
kernel_lock is now mostly confined to the network stacks, device drivers and
a few file systems like LFS. For many paths in the kernel, it's no longer
taken. When using an machine with multiple CPUs, the system should perform
better on many workoads.

There are some known bugs which I am working on, and without doubt more
will be discovered:

- Write activity to an LFS file system can cause the system to deadlock.
- Unmounting a busy tmpfs can cause a kernel assertion to fail.

For those interested in numbers I did a quick test. The same user install,
machine, source tree etc. were used for all three runs. Note that it's not
an ideal test, the sampling is inaccurate, etc. Also note that with 4 CPUs,
user + system time is close to 4x real time for a fully loaded machine:

make -j16 cleandir:
95.13s real   147.05s user   262.35s system   NetBSD 4.0 
90.38s real   134.65s user   210.30s system   NetBSD 4.99.47
63.94s real   135.64s user   103.73s system   NetBSD 4.99.48

So on this system, the kernel part of make -j16 cleandir is now about 2.5
times quicker than NetBSD 4.

Note that a large part of this work was funded by donations to The NetBSD
Foundation - thank you to everyone who has donated. Also, thank you to
everyone who spent time to code for / test the branch, especially YAMAMOTO
Takashi who put a huge amount of time and effort into it.


Home | Main Index | Thread Index | Old Index