diff --git a/hosts/skydick/datapool.nix b/hosts/skydick/datapool.nix index c66abb4..08a56e8 100644 --- a/hosts/skydick/datapool.nix +++ b/hosts/skydick/datapool.nix @@ -474,10 +474,29 @@ "hosts allow" = "10.0. 127. 10.253."; "hosts deny" = "ALL"; - # Keep Samba on Linux defaults for socket buffers and multichannel. - # The 2×40 GbE bond40g (ConnectX-3) already exposes RSS queues; manual - # `interfaces capability` tagging or fixed SO_RCVBUF/SO_SNDBUF tuning - # would add complexity without a measured benefit. + # SMB Multichannel advertising. `server multi channel support` + # below tells smbd to honour multichannel requests; the + # `interfaces` directive advertises CAPABILITIES to the client + # so it knows to open multiple TCP streams. The capability tag + # format is: + # ;capability=,speed= + # Flags: + # RSS — NIC has receive-side scaling (multi-queue), so + # multiple client→server streams will spread across + # cores on the server. macOS Sequoia uses this hint + # to open up to 32 channels per session. + # DYNAMIC — loopback only; client should not use for traffic. + # speed= is informational, advertised back to the client so it + # can prefer fast paths if multiple are offered. 80 Gbps = bond + # aggregate of 2× 40 GbE LACP slaves. + # + # Even though bond40g is a single LACP-managed device, the LACP + # layer3+4 xmit hash distributes the multichannel TCP streams + # across both slaves transparently. Net effect ≈ 2-4× SMB + # throughput vs a single channel, no client-side config needed. + "interfaces" = "lo;capability=DYNAMIC,speed=1 10.0.1.1;capability=RSS,speed=80000000000"; + "bind interfaces only" = "yes"; + "server multi channel support" = "yes"; "map to guest" = "never"; "server min protocol" = "SMB2_10";