[linux-cifs-client] Re: Samba 3.11pre not handling ReadX of exactly
64K when ReadX wct=12 rather than 10
Steve French
smfrench at austin.rr.com
Wed Dec 22 03:25:29 GMT 2004
The change to handle 64K or more on read is now in the cifs bk tree -
thank you jra - cifs now happily sends 127K read requests to Samba if
CIFSMaxBufSize is set to at least that and Samba 3 happily returns 127K
read responses (note that it also will be in mm tree soon since Andrew
Morton syncs with the cifs bk tree regularly) but will probably miss
2.6.10 unless there is some compelling crisis - since performance
already is pretty good on cifs reads and writes with directio mounts and
using 32K - 63K CIFSMaxBufSize, and performance is adequate but non
optimal on cached (nondirectio mounts) reads. I am now getting curious
about trying varius network test on 100Mb and 1Gb and 10Gb tests to get
more realistic comparisons on MTU, jumboframes and optimal CIFS setting
for CIFSMaxBufSize and Samba max xmit. I wanted to try some experiments
with Samba 4 (not just Samba 3.11pre) but I can crash Samba 4 server
pretty easily it did not stay up long enough to do any real testing on
(I may have to start running gdb against Samba 4 and see what is going
on - it was building without ldap so it may be hitting less used paths
on the server).
But getting directio (not going through client page cache) is much
easier than fixing the cached (cifs_readpages, cifs_readpage and
cifs_writepage) more common cases. I have worked though at least one
feasible approach to fix cifs_readpages (on the client) to make it
perform fine without to mount directio (and thus bypassing the client
page cache) but the write path is -- much -- much -- harder .
generic_writepages path is a mess in Linux - very hard to do a sane
writepages implementation - and zero filesystems - not even nfs - do
real work in writepages (only in writepage invoked from
generic_writepages and the mpage.c equilvalent). I should be able to
bump up performance measurntly on the write path by getting rid of a
copy (gather send on the socket of the dirty page) - but to get this
where I want (ie better than nfs for the cached case on writes) is is
going to be hard. I think the read case I can get to by mid January
though (ie very good perf without mounting directio).
More information about the linux-cifs-client
mailing list