FUSE Patch Allows Non-Extending, Parallel Direct Writes For Better Performance
For those making use of FUSE user-space file-system capabilities, developer Dharmendra Singh has posted a patch to allow for non-extending parallel direct writes. In turn for threaded write scenarios this can mean a huge boost to performance.
Dharmendra Singh explained with today's FUSE patch, "It is observed that currently in Fuse, for direct writes, we hold inode lock for the full duration of the request. As a result, only one direct write request can proceed on the same file. This, I think is due to various reasons such as serialization needed by USER space fuse implementations/file size issues/write failures. This patch allows parallel writes to proceed on the same file by by holding shared lock on the non-extending writes and exclusive lock on extending writes."
Benchmarking with FIO is showing very promising results for threaded write tests.
At 32 threads, the performance was as much as a 630% improvement or even at four threads was a 42% improvement.
Dharmendra Singh explained with today's FUSE patch, "It is observed that currently in Fuse, for direct writes, we hold inode lock for the full duration of the request. As a result, only one direct write request can proceed on the same file. This, I think is due to various reasons such as serialization needed by USER space fuse implementations/file size issues/write failures. This patch allows parallel writes to proceed on the same file by by holding shared lock on the non-extending writes and exclusive lock on extending writes."
Benchmarking with FIO is showing very promising results for threaded write tests.
At 32 threads, the performance was as much as a 630% improvement or even at four threads was a 42% improvement.
9 Comments