[linux-cifs-client] question about cifs performance (and asynchronous read)

Paul Ionescu i_p_a_u_l at yahoo.com
Thu Mar 31 21:10:26 GMT 2005


Hi all,

I have 2 computers, one with WinXP one with Linux.
Both have 100Mb network.
I did some measurements, transferring one file of 500 MB from the  WinXP side
to the Linux side, and I got the following numbers:

The transfer speed via CIFS is about 2.5 to 3.5 MB/sec.
The transfer speed via SMBFS is about 2.5 to 3.5 MB/sec.
The transfer speed via FTP is about 30 to 11 MB/sec.
The transfer speed via SCP (DES encrypted) is about 11 MB/sec.

So, there is obvious that transfer via CIFS is slower than either FTP or
SCP and maybe others, even if I have plenty of resources left on both
server and client.

After searching on the net, I think I found one possible reason:
CIFS/SMBFS is not doing asynchronous IO and therefore it depends on round
trip delay of the network, meaning that for each packet sent, it waits for
an acknowledge before sending the next packet, which gives this poor
performance.
The FTP and SCP rely only on TCP which has a sliding window mechanism for
sending a hole window before acknowledging.
I mounted the cifs share with -o rsize=8192 and other values,
hoping to change the default read window, but no change.

Is there any solution to increase the speed transfer via CIFS or SMBFS ?
Like implementing asynchronous IO ?
I read somewhere that there was a patch for cifs client by James Roper to do
"asynchronous read" which would boost the read performance to 80-90% of wire speed,
but I cound not find the patch anywhere.

Any hints, links to patches, or other options ?
Thanks,
Paul



More information about the linux-cifs-client mailing list