个人使用Nas黑群晖的历史4:速度!速度!还是速度!
从初用手机分享文件只有7MB/s,到100mbps网络的11MB/s,后来升级到了1000mbps的115MB/s,随着数据量增大,当更换到10G网络时,速度的提升变得不那么容易了,颇费了一番周折,我想记录下,这个过程,也许有人看到会有帮助。
如何提升速度?使用场景:
Nas有很多使用场景,每个人的用法也不尽相同,如果是为了观影,千兆网络足够,甚至绝大多数情况百兆也行,蓝光原盘的码率也只有6-8M,但是随着数据量的增加,每次移动数据,整理或者访问时千兆网络就显得捉襟见肘了。比如在一个Nas上有100T的数据,当我想要检索访问时,100MB的速度,要完读一次,需要十多天,这是完全无法接受的。升级网络变成了必须。我的访问场景是用PC的windows系统,通过SMB挂在映射磁盘。这应该是比较典型的场景。本文都以次展开,主要讨论如果遇到了速度不达标,应该如何排查,以及在Nas选配时,如何能与自己的目标访问速度匹配。
哪些地方会成为速度的瓶颈?
如果想从应用级别达到满意的速度,应该系统性考虑速度的瓶颈在哪里,这就需要对系统中每个传输环节来注意考量。不言自明的一个前提是,应用的最低速度受限于系统中的最低速度。在千兆以前,速度似乎不是什么难题,比较常见都能跑到110MB,这就是千兆网络的理论速度了,但是如果升级了万兆故事就来了,下文分别从硬件到软件来聊聊系统的速度瓶颈。
硬件:
根据通常的数据流向,当一次访问发起时,数据时这样传输的:
硬盘- 》南桥/Sata转PCI或pcie-》CPU-》内存-》CPU-》南桥/pcie-》网卡—网线—网卡-》南桥/pcie-》CPU-》内存-》CPU-》硬盘。
这个传输路径是典型的路径,并非所有都是这样,而这个路径中的每一个步骤,都有可能是让你整体访问速度降低的瓶颈。
1.硬盘-》南桥:10年之后的机械硬盘普遍使用sata3,6gbps,半双工,出去协议开销,接口极限速度大概550MB,sata2 3gbps,接口极限速度大概260MB。
2.南桥-》CPU intel这边叫做DMI,AMD直接用pcie,版本一一对应,DMI1.0/PCIE1.0*4 1GB(2004),DMI2.0/PCIE2.0*4 2GB(2011), DMI3.0 PCIE3*4 4GB(2015),DMI4.0 PCIE3*8 8GB(2021)
CPU-内存 或者 内存-CPU 与DDR的频率和通道数相关,消费类最多2通道,DDR 400:3.2GB;DDR2 800:6.4GB;DDR3 1600:12.8GB;DDR4 3200:25.6GB;DDR5 6400:51.2GB,双通道翻倍,在万兆网卡的环境中,内存访问速度不会是瓶颈,如果上40G网卡,多通道内存会对访问速度有影响。
南桥/pcie-》网卡,这里的速度要看pcie的版本和通道数,千兆网卡pcie随便一个单通道就可以,但是对于2.5G/5G/10G,对pcie速度要求超过网卡的速度,10G网卡如果是pcie4.0单通道即可。pcie3.0 需要至少2通道才能跑满,如果是pcie2.0 需要4通道。双10G网口的网卡,会给出pcie 2.0 *8通道。常见的二手服务器卡x540都是这个规格。如果10G网卡插在南桥的pcie上,则会占用南桥到CPU的带宽,对于10G网卡是不推荐的。增加延迟,且会噪声南桥数据量过大。
这里做个总结,CPU和内存之间的带宽,在1GB的速度是不用关心的,如果使用40G网卡,就要关注了,双通道的内存对4G读写是有帮助的。
最容易忽视的两个问题:
1.没关注DMI总线带宽,如果使用较老的硬件,或者奔腾赛扬CPU,DMI版本较低,DMI2.0理论速度2GB, 实际还要打个折扣,实测只有1.5G。DMI是全双工接口,不用考虑双向交互的限制。
2.高速网卡插在了南桥引出的PCIE上,这里的PCIE因为共享DMI总线的带宽,无论如何都不能超过DMI总线的带宽。
硬盘速度
上述是传输链路的速度,再看下硬盘的速度。
机械硬盘以HC550为例,速度曲线如下,外圈最高250MB,内圈最高120MB

这个结果已经是机械硬盘中比较优秀的,如果是5400转,或者是2.5寸机械硬盘,那么速度还会严重下降,可能会低至60MB。
固态硬盘速度很好,即使sata接口的老古董,也轻松跑上300MB,空盘上500MB很轻松。M2接口的NVME盘 轻松上GB,对已用容量敏感。通常不是速度的瓶颈。
软件:
这里涉及到了windows 系统,smb协议,Nas 黑群晖系统。
请注意,smb的协议以及windows 资源管理器,对速度也是有限制的。smb 1.0 10MB;smb2.0 200MB,smb 3.0 >2GB, windows资源管理器限制2GB。
smb如果开启签名或者加密会消耗大量cpu算力,打开smb压缩,对部分内容传输速度有提升。
群晖系统的限制不容易给出具体的结论,从官网得知,很多机型可以访问速度到6-7GB,因此群晖的瓶颈很高,对于10G网络还是很轻松。
如何得到更快的访问速度?
上述讨论了软件和硬件的限制,那么如何带着这些限制,来提高速度?显而易见的方法是提升瓶颈,NAS当前大多使用机械硬盘,机械硬盘的速度很低。
1. 最容易的就是组raid,这里以raid5为例,理论速度可以提升到单盘的(n-1)倍。
2.全换固态成本又太高,那么可以增加SSD作为读写缓存,对提高速度很有帮助,尤其对小文件。
坑和Tips
说了不少理论上的东西,再说说我在折腾过程中使用的小技巧以及遇到的坑:
PCI千兆网卡速度达跑不满,曾经尝试了PCI网卡,不是PCIE网卡,速度只能60-70MB, 更神奇的是,在组SMB多通道时,加入了PCI网卡,速度只降到25MB,原因至今不清楚。
SMB多通道对于不想升级10网卡的情况,很好用,速度叠加,成本不高,功耗也低。
USB千兆网卡基本能跑满,前提是单个,如果超过了3个,而且主机只有一个USB host,那么有可能无法同时跑满,这是应为USB3.0 的限制,而且USB的千兆网卡会消耗CPU算力,无法像PCIE千兆网卡一样,使用DMA传输,这是由于USB协议和驱动两者共同决定的。USB网卡同时使用最好不要超过三个。
X540这种老的万兆网卡功耗很高,由此引出的问题是,需要很好的散热,曾用过4*4小风扇散热,在使用过程中,夏天会掉驱动,表现就是在设备管理器中,这个网卡有个叹号,无法连接。重新启用后就好用了。但是不过很久,又开始出现了叹号,并且,如果使用了双网口,发热更厉害。后来换了5*5的暴力扇解决了,稳定使用了。虽然这个东西便宜,但是功耗真大,单网口10W,双网口17W,如果是在NAS中上期开机使用,耗电成本很高,不如买新的10G电口网卡,只有300+,功耗1W多。
10G网卡如果插在南桥上,会损失速度,我在老平台上测试的。
PCIE3.0 X1跑不满10G网口,至少x2.
速度排查顺序和步骤
网速不达标时,先查看协商速率,如果协商速率不够,大概率是网线的问题。
当协商速率明确后,就可以跑测速了,iperf这种,或者nas上有些hometools小工具,10G网口如果能测试到9Gbps就算合格了,不用太折腾了,这个和千兆网口不一样,如果测速上不去,需要看下MTU,改到9014这种大包。
当测速够了之后,建立SMB访问,可以先从NVME的固态开始测,读写两地都是NVME,硬盘不会是速度的瓶颈,如果不达标,那么就要看下SMB的版本问题,保证是SMB3. 同时因为SMB在高速下对CPU要求高,所以,也需要注意CPU占用,如果满了就是CPU性能不行了。
对于机械盘,必须建立raid存储才能跑满10G,8盘的raid5读写可以满足1GB的样子。如果此时跑不满,就要看看硬盘的占用率了。机械盘总有波动也属于正常,如果NAS套件不放在阵列里还好,但是没办法避免群晖的系统占用。
如果硬盘占用没有满,但是速度还是上不去,还是要排除硬盘的问题。我曾遇到过硬盘显示占用不满 ,但是速度上去不,发现部分硬盘是不从南桥的sata接出来的,而是用了pcie转sata的转接卡,这个转接卡在多块硬盘同时读写时,速度很低,阵列中任意一块硬盘速度受限,那么整个整列速度就被限制了。一个比较容易的验证方法是,在NAS内部拷贝到SSD中,查看读写速度。
这里需要注意的是,内存大小也会影响访问速度,需要查看内存的占用率,至少保证又2G以上空闲内存。
两个10G网口组SMB多通道性能损失严重,并且不稳定,实测只能到1.5GB左右,我的硬件是DMI2,只有2G,怀疑是DMI的瓶颈,没有继续排查。
写不动了,下一篇继续。
三个千兆网口组SMB多通道截图

校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案