Testing Async SMB Samba

webinar

Author(s)/Presenter(s):

Volker Lendecke

Library Content Type

Presentation

Library Release Date

Focus Areas

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.