Abstract
Samba has a long tradition as a single-threaded, one process per client SMB server. Within the SMB1 protocol this has served us very well. Clients typically were single-threaded as well, although the SMB1 protocol would have allowed multiple simultaneous requests on a single SMB connection.
With SMB2 this changed significantly. The clients now regularly do multiple requests simultaneously. Jeremy Allison has a separate talk about how Samba embraced threading for asynchronous I/O.
The Samba testing infrastructure is single-threaded as well. To test the async multi-issue behaviour of our server we have developed a C API to support event-driven client programs that fill a SMB transport with multiple simultaneous requests.
For a quick performance test at a customer site a C API is not flexible enough. Samba 4.0 will ship the start of a Python extension that allows multiple independent python threads to asynchronously drive a single SMB connection.
This talk will present the architecture of the new extension and how to use it in custom Python scripts to test specific workloads.