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