Since you still are in the thinking stage, there are some neat tricks that you might be able to do in this space ;-)

One thing that I think might be very interesting is to export some of the transaction like semantics explicitely to applications to allow a type of bulk async fsync. For example, I am untarring a 10,000 file set into a directory - you want a hard promise that it is all on disk, but you really don't need that promise until the end of the application. If the application could flag the start of this kind of batch and then wait or kick off a group fsync at the end, you could really boost your performance.

The benchmark has some kludgy support for testing this kind of sync performance through the "-S X" flag. When X==0, you don't sync, when it is 1 you do the file at a time fsync, and then it does some other combinations that work well on reiserfs. By simply delaying the fsync() stage into a separate iteration over the file set, you can approach the non-fsynced behavior ;-)

ric


Hans Reiser wrote:

reiser4 will suck at fsync performance, I guarantee it.  fsync is
completely unoptimized. It works reliably, but it will be slow.
The suckage is all eminently fixable,  but not before vanilla inclusion
is resolved will we address it.

Reply via email to