Hi,
I ported exfat fuse module to FreeBSD (PR 164473) and found that it
works much slower then on Linux. I found 2 reasons for this:
1) FreeBSD kernel do not allow to have nonalignment access to device
with standard read/write commands. mmap to the entire disk (/dev/da0s1)
doesn`t work also (EINVAL).
When its not a big deal for read requests, for write it becomes a real
issue - to write non-aligned data i need to read beginning and end of
the block. So in fact for one write request i can get 2 reads.
2) It seems that there is a very simple read caching on such devices
without write caching at all. It makes write performance enormously
slow. I found geom_cache module, but it provides only read optimization.
I decided to compare speed on Linux and FreeBSD and below are my
results. I used old USB flash drive to do the tests.
Read Speed of 100Mb:
Linux 3.0.0: 22.7 Mb/sec
FreeBSD: 10.22 Mb/sec
FreeBSD + gcache: 18.75 Mb/sec (!)
Write speed of 100Mb file:
Linux: 90Mb/sec (cache, much higher then device speed)
FreeBSD: 0.52 Mb/sec (!)
FreeBSD + gcache: 0.52 Mb/sec
As you could see write performance is enormously slow. May be we need to
create some geom provider for such caching or i am missing something? I
think, that other fuse modules like ntfs-3g and fuse-ext4 having same
issue. Also i found that fuse4bsd itself is non stable and may crash the
system without any visible reasons.
_______________________________________________
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "freebsd-stable-unsubscr...@freebsd.org"