我的 SMB 传输速度为什么这么慢?

204 天前
 sadfQED2

环境:

服务器:黑群辉 SMB

客户端:Win11

Copy 一个 10G 的 ZIP 文件,前 10 多秒能有 150M/s ,但是很快就会掉到 50M/s 的样子。拷贝过程中群辉 CPU 占用 20%左右。

fio 硬盘 4K 随机读测试:

Run status group 0 (all jobs):
   READ: bw=413MiB/s (433MB/s), 413MiB/s-413MiB/s (433MB/s-433MB/s), io=8110MiB (8504MB), run=19626-19626msec

Disk stats (read/write):
  sda: ios=2075891/0, merge=0/0, ticks=927646/0, in_queue=927646, util=99.45%

iperf3 网络测试:

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.80 GBytes  1.54 Gbits/sec    0             sender
[  5]   0.00-10.00  sec  1.80 GBytes  1.54 Gbits/sec                  receiver

我不太懂 SMB 协议相关的优化,这是 SMB 协议的问题?

3619 次点击
所在节点    宽带症候群
32 条回复
IDAEngine
204 天前
TCP_NODELAY 开了吗?没开的话打文件会比较慢一点
lamls
204 天前
@IDAEngine 请教兄台,这个怎么开?在 mac os 和 ios 下
yazoox
204 天前
OP
请教一下,你自己跑的这两个测试,怎么跑的? fio & iperf3 ?能分享一下步骤和经验嘛? 谢谢!
hertzry
204 天前
可能 Win11 写缓存满了。
sadfQED2
204 天前
@hertzry 我三星 970pro 的 ssd ,就算写缓存满了也不可能掉到 50m/s 的速度。哪怕机械硬盘也不止这速度呀
sadfQED2
204 天前
@yazoox 啊?这不是满地都是吗?随便一搜就一堆教程呀,照着敲命令就行
lonely701
204 天前
我个人体验是 webdav 更稳定,内网外网都能跑满带宽。smb 没用过,感觉是上个时代的东西了。
yousabuk
204 天前
如果是路由器的话,注意路由器散热。
sadfQED2
204 天前
@IDAEngine 我看/etc/samba/smb.conf 这个配置文件中默认是没有这个配置的。我照着网上找到给他加了一行

[global]
printcap name=cups
winbind enum groups=yes
include=/var/tmp/nginx/smb.netbios.aliases.conf
min protocol=SMB2_10
socket options=TCP_NODELAY SO_RCVBUF=131072 SO_SNDBUF=131072 SO_KEEPALIVE IPTOS_THROUGHPUT
security=user
local master=no
realm=*
passdb backend=smbpasswd
printing=cups
max protocol=SMB3
winbind enum users=yes
load printers=yes
workgroup=WORKGROUP

重启 smb 服务后性能依然没变化
sadfQED2
204 天前
@yousabuk 跟网络没关系吧,我 iperf3 测速都没问题,iperf3 跑几十 G 流量都没变化
yousabuk
204 天前
iperf 调大测试时间,排除网络传输问题,比如进行 10 分钟连续测试?

从 NAS 硬盘读取数据 CPU 不应该飙到 20% 那么高。刚从 Nas 拷贝 20G 的一个文件,全程稳定在 105MB/s ,群晖 DS720+ CPU 稳定 9%。

而且你还是黑群晖,CPU 肯定强于 intel J4125 很多倍吧。

你 NAS 硬盘是什么硬盘?叠瓦盘?垂直盘?
yousabuk
204 天前
路由器的 NAT 加速,禁用路由器的 IPv6 试试。

都尝试下
cubecube
204 天前
黑裙啥 CPU ,20%是不是 4 核心占用满了一个核心?
sadfQED2
204 天前
@yousabuk #11 垂直盘,企业级的氮气盘,我硬件肯定没问题的。iperf 跑了 10 多分钟也没问题,fio 跑了 10 多分钟也没问题。

我内网走的交换机,没走路由器,交换机是 TPLink 的 2.5G 交换机
sadfQED2
204 天前
@cubecube

%Cpu0 : 2.0 us, 15.6 sy, 0.0 ni, 31.3 id, 31.3 wa, 0.0 hi, 19.7 si, 0.0 st
%Cpu1 : 0.7 us, 8.9 sy, 0.0 ni, 63.7 id, 24.0 wa, 0.0 hi, 2.7 si, 0.0 st
%Cpu2 : 4.6 us, 7.9 sy, 0.0 ni, 44.1 id, 42.1 wa, 0.0 hi, 1.3 si, 0.0 st
%Cpu3 : 2.6 us, 7.9 sy, 0.0 ni, 80.1 id, 9.3 wa, 0.0 hi, 0.0 si, 0.0 st

拷文件过程中 cpu 是这样的
ashong
204 天前
我的 smb.conf 设置:
server min protocol = SMB2_02
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072 SO_KEEPALIVE
min receivefile size = 16384
aio read size = 16384
aio write size = 16384
max xmit = 65535
aru
204 天前
我觉得是硬盘问题
pcslide
204 天前
既然用的机械硬盘,掉到 50M 难道不就是合理的吗?你自己看 cpu 都花在 WA ( wait on io )上
sadfQED2
204 天前
@aru
@hertzry 重新做了 2 个测试,证明不是我 Win11 固态写缓存导致的
1:在 win11 的磁盘上拿 fio 随机写 100G 、顺序写 100G ,速度都远高于 50M/s
2: 在 win11 上拿 ramDisk 将 20G 内存映射成磁盘执行拷贝,拷贝一段时间后依然掉速,跟写 SSD 掉速没区别
IDAEngine
204 天前
@sadfQED2 SMB 协议的性能应该是问题不大的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/983981

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX