A few weeks ago I posted about NetBSD’s new journaling technology WAPBL. I received a lot of questions concerning the benchmark results that I published. People were especially interested in a comparison with FFS using soft dependences. I hadn’t used this mode in my original benchmark because my personal experiences with soft dependences weren’t very positive.
I decided nevertheless to repeat the benchmark using the default mode (no mount options), asynchronous mode (-o async), soft dependences (-o softdep) and WAPBL (-o log). I also changed the benchmark itself:
- Before each benchmark run the file system is initialized using a block size of 16KB and a fragment size of 2KB. As no space is reserved at the end of partition WAPBL has to use an in file system journal.
- During the tar phase the benchmark extracts the NetBSD 4.0 source tar archives ten times into seperate directories. The file set is now considerably larger than the main memory of the test machine. The source tar archives were fetched from a memory file system before this phase to make sure that the buffer cache is pre-populated.
- During the rm phase the benchmark removes the 10 directories it has created previously.
- Both phases are finished by running the sync command and unmounting the file system to make sure that all buffers have been written to disk.
- The times quoted in the table below include the time it took to unmount the file system. The values were calculated by taking the average of four runs of the benchmark. All values are denoted in minutes:seconds.
Benchmark | synchronous | soft deps | WAPBL | asynchronous |
tar | 155:56 | 39:06 | 35:52 | 34:07 |
rm | 59:55 | 9:11 | 4:36 | 4:18 |
Let’s have a look at the results:
- The synchronous mode (synchronous metadata writes) provides the worst performance, the asynchronous mode the best. Anything else would have been a big suprise.
- Soft dependences provide much better performance than the synchronous mode. But they can be considerably slower than the asynchronous mode depending on the work load.
- WAPBL is slower than the asynchronous mode but not by much. It is always faster than soft dependences.
Considering these benchmark results and the fact that only WAPBL can recover from a system crash without an expensive file system check it is the clear winner, at least in my humble opinion.
Sun also benchmarked logging versus softdeps much more extensively: there conclusion was based on more information and was basically that softdeps wins in some cases, logging in others but overall performance was similar. If loggin had an advantage, it was slight. The paper is publically available although I don’t have a link to post here (google?).
I would agree logging allows fast restarts, but that is the main advantage, not really performance.
Just wondering … “soft dependencies” are the same thing the other BSDs call “soft updates”?
Yes, “soft dependences” are apparently called “Soft updates” under FreeBSD.
So this the last nail in the coffin of all that FUD about how softupdates are better than journalling. Actually they are worse of course, as everybody else already knew.
I’ve had some kernel panics using log mounts of late (NetBSD 5.0 RC2 & RC3).
I’ve removed log from my squid’s cache partition and returned to soft updates. I think …. WAPBL is long overdue and good to have – but it needs some real world solid workloads to ripen.
I didn’t have any problems with WAPBL since the mega patch which went into the branch before 5.0_RC3. My system uses log on most partitions now including the Squid cache partition.
Wapbl is really great. I love NetBSD too much and my great wish is to popularize NetBSD both on server and desktop. But a lot is need to be done.
Its my Dream.