环境:
服务器:黑群辉 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 协议的问题?
1
IDAEngine 2023-10-21 09:46:01 +08:00
TCP_NODELAY 开了吗?没开的话打文件会比较慢一点
|
3
yazoox 2023-10-21 10:21:24 +08:00
OP
请教一下,你自己跑的这两个测试,怎么跑的? fio & iperf3 ?能分享一下步骤和经验嘛? 谢谢! |
4
hertzry 2023-10-21 11:05:13 +08:00
可能 Win11 写缓存满了。
|
5
sadfQED2 OP @hertzry 我三星 970pro 的 ssd ,就算写缓存满了也不可能掉到 50m/s 的速度。哪怕机械硬盘也不止这速度呀
|
7
lonely701 2023-10-21 12:24:19 +08:00 via iPhone
我个人体验是 webdav 更稳定,内网外网都能跑满带宽。smb 没用过,感觉是上个时代的东西了。
|
8
yousabuk 2023-10-21 12:30:51 +08:00 via iPhone
如果是路由器的话,注意路由器散热。
|
9
sadfQED2 OP @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 服务后性能依然没变化 |
11
yousabuk 2023-10-21 12:46:31 +08:00 via iPhone
iperf 调大测试时间,排除网络传输问题,比如进行 10 分钟连续测试?
从 NAS 硬盘读取数据 CPU 不应该飙到 20% 那么高。刚从 Nas 拷贝 20G 的一个文件,全程稳定在 105MB/s ,群晖 DS720+ CPU 稳定 9%。 而且你还是黑群晖,CPU 肯定强于 intel J4125 很多倍吧。 你 NAS 硬盘是什么硬盘?叠瓦盘?垂直盘? |
12
yousabuk 2023-10-21 12:50:15 +08:00 via iPhone
路由器的 NAT 加速,禁用路由器的 IPv6 试试。
都尝试下 |
13
cubecube 2023-10-21 12:55:42 +08:00
黑裙啥 CPU ,20%是不是 4 核心占用满了一个核心?
|
14
sadfQED2 OP @yousabuk #11 垂直盘,企业级的氮气盘,我硬件肯定没问题的。iperf 跑了 10 多分钟也没问题,fio 跑了 10 多分钟也没问题。
我内网走的交换机,没走路由器,交换机是 TPLink 的 2.5G 交换机 |
15
sadfQED2 OP @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 是这样的 |
16
ashong 2023-10-21 13:03:20 +08:00
我的 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 |
17
aru 2023-10-21 13:44:51 +08:00
我觉得是硬盘问题
|
18
pcslide 2023-10-21 14:34:06 +08:00
既然用的机械硬盘,掉到 50M 难道不就是合理的吗?你自己看 cpu 都花在 WA ( wait on io )上
|
19
sadfQED2 OP |
21
hefish 2023-10-21 15:47:56 +08:00
我觉着是 nas 硬盘的问题。io 跟不上
|
22
sadfQED2 OP @hefish
@aru 我好像找到问题了,我第一次测 Nas 磁盘的时候用的 ext4 文件系统,后面我重装的时候换成 Btrfs ,我现在重新测了一遍 FIO ,现在 4K 随机读: Run status group 0 (all jobs): READ: bw=1146KiB/s (1174kB/s), 1146KiB/s-1146KiB/s (1174kB/s-1174kB/s), io=123MiB (129MB), run=110167-110167msec 4K 顺序读: Run status group 0 (all jobs): READ: bw=34.9MiB/s (36.6MB/s), 34.9MiB/s-34.9MiB/s (36.6MB/s-36.6MB/s), io=751MiB (788MB), run=21521-21521msec 我真是人麻了,害我查了一整天,这两文件系统性能整整差了 10 倍 |
25
weak 2023-10-21 19:32:32 +08:00 via iPhone
有 IP 地址连接例如群晖 例如 //192.168.10.24/data
我的用 //diskstation 连接只有 30 兆,用//192.168.110.24/data 跑满 130 兆 |
26
hefish 2023-10-21 20:46:09 +08:00
btrfs 的读不应该这么差吧。是不是开了压缩之类的。是单盘吗?
|
27
sadfQED2 OP @hefish #26 我感觉也是开启了压缩。但是我现在去哪查看我的文件系统是否开启压缩呢。我看了/etc/fstab 文件的挂载配置,里面似乎没有压缩
/dev/mapper/cachedev_0 /volume1 btrfs auto_reclaim_space,ssd,synoacl,relatime,nodev 0 0 |
29
aureole999 2023-10-21 23:34:49 +08:00
你机械硬盘之前 ext 的 4k 随机读能有 400 多 MB ?不可能吧,你 22 楼测的估计才是正确的。
|
30
aureole999 2023-10-21 23:43:07 +08:00
而且 MiB 约等于 MB ,*8 才是 Mb 。机械硬盘正常 4k 随机读写就是 1MB/s 左右。
|
31
PandaChan 2023-10-23 11:37:54 +08:00
之前黑群晖跑 SMB 基本在 200-100 之间徘徊,(两块企业级机械 R0 ),后面换 TrueNAS ,就 350-450 兆了
|