This two-part article focuses on the strengths and advantages that make Samba unique. While part one took a look at some of the organizational, technical, and conceptual issues that are often discussed, this second part discusses technical milestones and improvements on the horizon, highlighting key Samba contributions still being worked on by the SerNet Samba Team members Volker Lendecke, Stefan Metzmacher and Ralph Böhme.
Robust and scalable – Multichannel Support for high performance
Sometimes Samba is criticised for "low concurrent connections / low concurrent opens". Because of the multiprocess model, which is more robust than a single-process multithreaded server model, Samba has higher RAM requirements than possibly other solutions. This is more relevant for the embedded SOHO router market than for enterprise storage solutions and to help the former the next Samba version will ship with a rewritten RPC-Server written by Volker Lendecke which results in a much smaller memory footprint.
SMB3 Multichannel support in Samba has been available since version 4.15 released in September 2021. The SerNet Samba team can provide stable backports to 4.12, 4.13 and 4.14 as we already have (and use) them in SAMBA+ 4.14 and custom packages.
Improving IO performance
Samba's IO performance is limited by the frequent data buffer copies done in the kernel for servicing Samba user space IO requests, resulting in high CPU usage and a CPU bound performance limit. This is an architectural limitation deeply rooted in the UNIX design. Two years ago a modern Linux API called “io_uring” has been added to Linux that allows user space applications like Samba to achieve zero-copy zero-syscall IO for the full IO path from disk to network.
Recently, research on Samba performance improvements had been sponsored, and a Samba prototype was developed leveraging “io_uring”. We were able to improve IO performance drastically from 4 GBytes/s on a given hardware to 10 GB/s, the line speed of the 100 GBit/s adapter, with a significantly reduced CPU load of only 25%. Further testing using the loopback interface saw the throughput max out at up to 30 GB/s, the bottleneck being the clients used in testing (smbclient), not the server.
For more details see the discussion on the Samba list or the SDC 2021 presentation "Samba Multi-Channel/io_uring Status Update" from Stefan Metzmacher.
It would only take a few weeks of work to integrate the prototype into mainline Samba. Companies interested in this feature, please contact us to possibly join the list of companies sponsoring Samba development!
Samba supports Enterprise features
When it comes to clustering, you will get an "enterprise ready" SMB cluster from Samba. It supports scale-out active/active clustering and has been used for many years along with industry-leading clustered enterprise file systems like GPFS. Samba has plans to support “SMB Transparent Failover” and Ralph Böhme gave a talk at the SNIA SDC in 2018 on Persistent Handles in Samba. Again, companies interested in this feature, please contact us to possibly join the list of companies sponsoring Samba development!
ksmbd
Starting with Linux kernel 5.15, Linux will ship an in-kernel SMB server called “ksmbd”. ksmbd and Samba plan to work closely together in the future, and the main developer of ksmbd is as of recently also a member of the international Samba Team. Both projects will work hand in hand to combine ksmbd’s in-kernel SMB engine with Samba's user space daemons and tools. For a brief introduction, see the presentation from sambaXP 2019 (Slides) or the status update from sambaXP 2021(Slides).
Do you still have questions? Or would you like to talk to us about using Samba / SAMBA+? Then please feel free to contact us.