V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sadfQED2
V2EX  ›  宽带症候群

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

  •  
  •   sadfQED2 · 2023-10-21 09:33:13 +08:00 · 4671 次点击
    这是一个创建于 433 天前的主题,其中的信息可能已经有所发展或是发生改变。

    环境:

    服务器:黑群辉 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 条附言  ·  2023-10-21 16:24:28 +08:00
    目前找到的原因,Nas 上的磁盘读取速度太慢,但是我就纳闷了,我 2 块企业级 10T 氮气盘,组的 RAID1 ,在 ext4 下面测试,顺序读 800Mb/s 左右,随机读 300-400Mb/s ,为嘛换成 btrfs 性能就直接差了 10 倍呀?我这是哪里设置不对吗?
    32 条回复    2023-10-23 12:08:17 +08:00
    IDAEngine
        1
    IDAEngine  
       2023-10-21 09:46:01 +08:00
    TCP_NODELAY 开了吗?没开的话打文件会比较慢一点
    lamls
        2
    lamls  
       2023-10-21 10:05:52 +08:00
    @IDAEngine 请教兄台,这个怎么开?在 mac os 和 ios 下
    yazoox
        3
    yazoox  
       2023-10-21 10:21:24 +08:00
    OP
    请教一下,你自己跑的这两个测试,怎么跑的? fio & iperf3 ?能分享一下步骤和经验嘛? 谢谢!
    hertzry
        4
    hertzry  
       2023-10-21 11:05:13 +08:00
    可能 Win11 写缓存满了。
    sadfQED2
        5
    sadfQED2  
    OP
       2023-10-21 12:21:10 +08:00
    @hertzry 我三星 970pro 的 ssd ,就算写缓存满了也不可能掉到 50m/s 的速度。哪怕机械硬盘也不止这速度呀
    sadfQED2
        6
    sadfQED2  
    OP
       2023-10-21 12:22:33 +08:00
    @yazoox 啊?这不是满地都是吗?随便一搜就一堆教程呀,照着敲命令就行
    lonely701
        7
    lonely701  
       2023-10-21 12:24:19 +08:00 via iPhone
    我个人体验是 webdav 更稳定,内网外网都能跑满带宽。smb 没用过,感觉是上个时代的东西了。
    yousabuk
        8
    yousabuk  
       2023-10-21 12:30:51 +08:00 via iPhone
    如果是路由器的话,注意路由器散热。
    sadfQED2
        9
    sadfQED2  
    OP
       2023-10-21 12:40:54 +08:00
    @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
        10
    sadfQED2  
    OP
       2023-10-21 12:41:52 +08:00
    @yousabuk 跟网络没关系吧,我 iperf3 测速都没问题,iperf3 跑几十 G 流量都没变化
    yousabuk
        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 硬盘是什么硬盘?叠瓦盘?垂直盘?
    yousabuk
        12
    yousabuk  
       2023-10-21 12:50:15 +08:00 via iPhone
    路由器的 NAT 加速,禁用路由器的 IPv6 试试。

    都尝试下
    cubecube
        13
    cubecube  
       2023-10-21 12:55:42 +08:00
    黑裙啥 CPU ,20%是不是 4 核心占用满了一个核心?
    sadfQED2
        14
    sadfQED2  
    OP
       2023-10-21 12:55:59 +08:00
    @yousabuk #11 垂直盘,企业级的氮气盘,我硬件肯定没问题的。iperf 跑了 10 多分钟也没问题,fio 跑了 10 多分钟也没问题。

    我内网走的交换机,没走路由器,交换机是 TPLink 的 2.5G 交换机
    sadfQED2
        15
    sadfQED2  
    OP
       2023-10-21 12:58:26 +08:00
    @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
        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
    aru
        17
    aru  
       2023-10-21 13:44:51 +08:00
    我觉得是硬盘问题
    pcslide
        18
    pcslide  
       2023-10-21 14:34:06 +08:00
    既然用的机械硬盘,掉到 50M 难道不就是合理的吗?你自己看 cpu 都花在 WA ( wait on io )上
    sadfQED2
        19
    sadfQED2  
    OP
       2023-10-21 15:13:11 +08:00
    @aru
    @hertzry 重新做了 2 个测试,证明不是我 Win11 固态写缓存导致的
    1:在 win11 的磁盘上拿 fio 随机写 100G 、顺序写 100G ,速度都远高于 50M/s
    2: 在 win11 上拿 ramDisk 将 20G 内存映射成磁盘执行拷贝,拷贝一段时间后依然掉速,跟写 SSD 掉速没区别
    IDAEngine
        20
    IDAEngine  
       2023-10-21 15:47:46 +08:00
    @sadfQED2 SMB 协议的性能应该是问题不大的
    hefish
        21
    hefish  
       2023-10-21 15:47:56 +08:00
    我觉着是 nas 硬盘的问题。io 跟不上
    sadfQED2
        22
    sadfQED2  
    OP
       2023-10-21 16:17:44 +08:00
    @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 倍
    aru
        23
    aru  
       2023-10-21 18:18:53 +08:00
    @sadfQED2
    感觉 4k 不能差这么多
    而且你不是大文件么?直接测大文件读取速度对比下
    sadfQED2
        24
    sadfQED2  
    OP
       2023-10-21 18:28:40 +08:00
    @aru #23 对,大文件,rar 的分卷压缩数据
    weak
        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 兆
    hefish
        26
    hefish  
       2023-10-21 20:46:09 +08:00
    btrfs 的读不应该这么差吧。是不是开了压缩之类的。是单盘吗?
    sadfQED2
        27
    sadfQED2  
    OP
       2023-10-21 21:11:19 +08:00
    @hefish #26 我感觉也是开启了压缩。但是我现在去哪查看我的文件系统是否开启压缩呢。我看了/etc/fstab 文件的挂载配置,里面似乎没有压缩

    /dev/mapper/cachedev_0 /volume1 btrfs auto_reclaim_space,ssd,synoacl,relatime,nodev 0 0
    bclerdx
        28
    bclerdx  
       2023-10-21 21:37:46 +08:00 via Android
    @sadfQED2 不交换机和走路由器有什么区别吗?
    aureole999
        29
    aureole999  
       2023-10-21 23:34:49 +08:00
    你机械硬盘之前 ext 的 4k 随机读能有 400 多 MB ?不可能吧,你 22 楼测的估计才是正确的。
    aureole999
        30
    aureole999  
       2023-10-21 23:43:07 +08:00
    而且 MiB 约等于 MB ,*8 才是 Mb 。机械硬盘正常 4k 随机读写就是 1MB/s 左右。
    PandaChan
        31
    PandaChan  
       2023-10-23 11:37:54 +08:00
    之前黑群晖跑 SMB 基本在 200-100 之间徘徊,(两块企业级机械 R0 ),后面换 TrueNAS ,就 350-450 兆了
    sadfQED2
        32
    sadfQED2  
    OP
       2023-10-23 12:08:17 +08:00 via Android
    @PandaChan 我也是两块企业级机械,但是我组的 raid1 ,我正准备装个 ubuntu 测试
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   970 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 240ms · UTC 22:51 · PVG 06:51 · LAX 14:51 · JFK 17:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.