Status and demo of SMB3 Multi-Channel in Samba

Linda A. Walsh samba at tlinx.org
Wed Oct 29 19:20:12 MDT 2014


Michael Adam wrote:
> Hi,
>
> we are working on implementing SMB3 Multi-Channel in Samba.
> The wiki page https://wiki.samba.org/index.php/Samba3/SMB3
> contains details about our plans for the various items
> of SMB3, and multi-channel in particular. I have
> created a screencast of a demo.  It can be downloaded here:
> http://www.samba.org/~obnox/videos/samba-smb3-multi-channel-demo-20141021-1.mkv
---
Right now, it appears all of the multi-channel data connections are handled
by 1 smb process.  Note, I try to use b=bits, B=bytes,
[m,g]=1000-based & [M,G]=1024 based units.

Initially, I tried using 2-bonded 10gb[s connections for xfer.  Note:
10gbps only has 80% efficiency, so max theoretical rate would
be would be 16gbps or 2000mBps; the 20% perf hit doesn't apply
to most 1Gb adapters.

For a remote target, I used "nul" and "zero" in a remote
directory that were connected to the actual /dev/nul and /dev/zero
devices on the target system (via "dd").  The local client was
running 'dd' using "cygwin's" version's of each -- so on both
sides was focusing on "smb-throughput" separate from
any fs-io.

I couldn't reliably get >500  (1/4th capacity), so dropped to using
1 connection.  Still get 300-600mBps with the limiting factor
depending on the dd 'block size' the CPU on either the client
OR the server.  I.e. larger BS, put more load on the remote server,
and smaller BS, put more cpu load on the local client.

Because of SMB's 1 connection/user, in both cases, the sending and
receiving processes only used 1 core (out of 6 on client and 12 on
server).  Note, I did try using affinities on the drivers of both
ends as well as the smb process on the linux end.  From cpu graphs,
it appeared that the client side process already defaulted to
1 core for the i/o process (putting device interrupts on same or
separate didn't *improve* throughput).

Does the multi-channel protocol allow for using more than one server
(smb) process -- as that seems to be the only way I might achieve
close to full throughput or make use of channel bonding with 2 or
more ethernet adapters. 

FWIW -- I can easily close to theoretical with 1Gb adaptors. w/
119mBps client reads from smb server and 125mBps.

To get more optimal performance would need multiple send and rcv
processes on client and server, as peak xfer rate (balancing cpu
use between client and server) is using a 16-32MB blocking factor),
which is too large for most interactive processes (like a remote
display) -- that and might need (it appears), a Win8 client (or
network stack, at least!)...



More information about the samba-technical mailing list