Linux 6.0 SMB3 Client Code Brings Multi-Channel Performance Improvement
![LINUX STORAGE](/assets/categories/linuxstorage.webp)
The SMB 3.0 protocol in modern versions of Windows and Linux supports multi-channel operation to increase network performance and reliability. SMB Multi-channel operation allows file servers to use multiple network connections simultaneously to aggregate bandwidth and enhance fault tolerance. Linux has already supported multi-channel but with Linux 6.0 the CIFS/SMB3 client code brings a performance improvement to this mode of operation.
Microsoft documentation showing the general performance benefits to SMB3 multi-channel within Azure and Windows. Linux's SMB3 multi-channel client performance should be in better shape with the v6.0 kernel.
The CIFS kernel code has been updated to avoid global locks around high contention data. While Microsoft engineers were analyzing the SMB3 multi-channel performance, they noticed two locks that were shared between multiple data structures and causing a lot of contention. With Linux 6.0 there are new, more granular level locks to address the high contention.
Microsoft engineer Shyam Prasad N authored this change for avoiding the locking contention in multi-channel mode, but didn't comment on any particulars around quantifying the performance improvement. CIFS maintainer Steve French of Microsoft simply summed it up as a "multichannel perf improvement" in the pull request that was merged on Sunday.
The other SMB3/CIFS client changes are mostly fixes, including addressing a memory leak. There is also a change so more SMB1 code is not compiled in when disabling the SMB legacy support.