https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=271065
Bug ID: 271065
Summary: Kernel FUSE limits read() size by 64k/128k
Product: Base System
Version: 13.2-STABLE
Hardware: Any
OS: Any
Status: New
Severity: Affects Some People
Priority: ---
Component: kern
Assignee: [email protected]
Reporter: [email protected]
I am trying to increase sshfs file read speed from remote mount with RTT ~70+ms
and I need some help with kernel FUSE.
Read speed is limited by RTT and read chunk size, RTT can not be fixed by code
but we can increase read chunk size.
sshfs -o remember=30 -o auto_cache -o cache=yes -o kernel_cache -o
compression=yes -o max_write=67108864 -o max_read=67108864 -o dir_cache=yes -o
noatime root@somehost:/ /mnt/tmp -d -v -o debug --debug
+
dd if='/mnt/tmp/some_big.file' of=/dev/null bs=4m status=progress
produces:
unique: 14130, opcode: READ (15), nodeid: 850, insize: 80, pid: 4468
[01249] READ
[01250] READ
[01247] DATA 131076bytes (95ms)
[01248] DATA 22bytes (95ms)
unique: 14130, success, outsize: 131088
If "sysctl vfs.maxbcachebuf=128k" then "unique: 14130, success, outsize:
131088" -> "unique: 14130, success, outsize: 262144". (sshfs hacked for read
ahead)
This increase read speed ~twice, but not enough to utilize 100m link.
vfs.maxbcachebuf=512k or 1024k is ok for remote mount @ 100m link but if may be
too big for other FS mounted locally.
I found 64k limit in fuse_vfsop_mount(): "mp->mnt_stat.f_iosize =
maxbcachebuf;".
Then I try to change it to "maxphys" - system panics or hang on read() from
sshfs mount. Looks like more changes required due to "fuse_iosize() { return
mp->mnt_stat.f_iosize; }" used in many places, probably some of them expect
only "maxbcachebuf".
IMHO mp->mnt_stat.f_iosize = maxphys or maxphys/2 will be better default.
Also if "max_read" is set and "maxbcachebuf < max_read < maxphys" then it can
be used.
Can some one help with this?
--
You are receiving this mail because:
You are the assignee for the bug.