Commit aa1cd52e authored by Han-Wen Nienhuys's avatar Han-Wen Nienhuys

Document benchmark results.

parent c0a73064
...@@ -4,11 +4,11 @@ GO-FUSE: native bindings for the FUSE kernel module. ...@@ -4,11 +4,11 @@ GO-FUSE: native bindings for the FUSE kernel module.
HIGHLIGHTS HIGHLIGHTS
* High speed: within a factor 1.5 of C/C++ based filesystems on * High speed: less than 25% slower than libfuse, using the gc
filesystem benchmarks, using the gc compiler. For many real world compiler. For almost all real world applications, the difference will
applications, the difference will be negligible. be negligible.
* Supports in-process mounting of different PathFileSystems onto * Supports in-process mounting of different FileSystems onto
subdirectories of the FUSE mount. subdirectories of the FUSE mount.
* Includes two fleshed out examples, zipfs and unionfs. * Includes two fleshed out examples, zipfs and unionfs.
...@@ -25,6 +25,14 @@ EXAMPLES ...@@ -25,6 +25,14 @@ EXAMPLES
ls /tmp/mountpoint ls /tmp/mountpoint
fusermount -u /tmp/mountpoint fusermount -u /tmp/mountpoint
* Zipfs is also used for benchmarking: a script to measures threaded
stat performance is in example/benchmark.sh. A libfuse baseline is
given by running the same test against archivemount
(http://www.cybernoia.de/software/archivemount/).
Currently, zipfs/Go-FUSE is about 20% slower than
archivemount/libfuse..
* examplelib/multizipfs.go shows how to use in-process mounts to * examplelib/multizipfs.go shows how to use in-process mounts to
combine multiple Go-FUSE filesystems into a larger filesystem. combine multiple Go-FUSE filesystems into a larger filesystem.
...@@ -58,7 +66,6 @@ Tested on: ...@@ -58,7 +66,6 @@ Tested on:
- x86 64bits (Ubuntu Lucid). - x86 64bits (Ubuntu Lucid).
CREDITS CREDITS
* Inspired by Taru Karttunen's package, https://bitbucket.org/taruti/go-extra. * Inspired by Taru Karttunen's package, https://bitbucket.org/taruti/go-extra.
...@@ -75,9 +82,9 @@ KNOWN PROBLEMS ...@@ -75,9 +82,9 @@ KNOWN PROBLEMS
Grep source code for TODO. Major topics: Grep source code for TODO. Major topics:
* Missing support for file locking: FUSE_GETLK, FUSE_SETLK, FUSE_SETLKW, STATFS * Missing support for file locking: FUSE_GETLK, FUSE_SETLK, FUSE_SETLKW
* Missing support for FUSE_INTERRUPT, FUSE_NOTIFY, CUSE, BMAP, POLL, IOCTL * Missing support for FUSE_INTERRUPT, FUSE_NOTIFY, CUSE, BMAP, POLL, IOCTL, STATFS
LICENSE LICENSE
......
...@@ -4,6 +4,12 @@ ...@@ -4,6 +4,12 @@
# so let's time that. We use zipfs which runs from memory to minimize # so let's time that. We use zipfs which runs from memory to minimize
# noise due to the filesystem itself. # noise due to the filesystem itself.
if [ "$1" == "" ] ; then
echo "Usage: benchmark.sh ZIPFILE"
echo "The zipfile should be large (> 10000 files)."
exit 2
fi
set -eux set -eux
ZIPFILE=$1 ZIPFILE=$1
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment