半路出家的 IT 请教一下服务器读取性能该怎么优化

2021-12-03 12:11:49 +08:00
 lovejunjie1
佬们好,我是一个影视行业的从业工作者。喜欢在家捯饬一些 linux 的东西。
最近公司有钱买了一台华为 2288H ,64G 内存,10 核 CPU ,一张 SR430 阵列卡。装了 unbuntu 18.04
我因为是最熟悉这方面的人,就被临危受命拉过去调试阵列储存什么的事情。

公司内部是万兆网的架构
网络拓扑图大概是这个样子

光猫
|
华硕 AX86U
|
1.一台 24 口千兆 RJ45 ,2SFP+交换机 - 用多模光模块多模线连接到服务器 SFP+1 号光口
2.一台 8 口万兆 RJ45 交换机 - 用 cat7 ,转接成光口连接服务器 SFP+ 2 号光口

硬盘选用的是 16TB 的西数黑盘,做了一个 R0 缓存盘给剪辑用。

客户端是 windows10 ,网卡是 TL-NT521 单口万兆 RJ45 ,M2 硬盘

经过实测,客户端向 M2 传输数据可以跑满 600MB/s 的速度。
但是从 R0 的机械盘读取数据的时候只有 160MB/s 的速度。

我一度以为这是机械盘在 R0 的时候,随机读取性能过差造成的。

但是似乎也太慢了。

所以特地来这里请教一下各位大神,这个情况正常么?
如果可能的话,这个体系还有没有可能优化?
R0 的阵列是缓存盘。里面的数据都无所谓。所以把这个 R0 格掉也是可以的。
我的目标速度是大文件 400MB/s 的读取速度。希望能给同事在服务器上 4K 剪辑的可能性。

再次感谢能进来看帖子的你,十分感谢
2444 次点击
所在节点    服务器
22 条回复
dapang1221
2021-12-03 12:22:26 +08:00
16T 单盘做的 raid0 吗,这还不如不做
dapang1221
2021-12-03 12:24:05 +08:00
raid0 是多块盘来分摊读写速度,建议改直通模式试试速度
ccde8259
2021-12-03 12:33:02 +08:00
先 dd 确认一下速率
有可能是网络协议开销
整存储前考虑过其他方案吗?
硬阵列方案优缺点?
阵列级别带来的容灾能力差异?
软阵列方案优缺点?
阵列校验开销能不能 cover ?
ZFS/GlusterFS/Ceph 方案优缺点?
发生阵列降级以后怎么处理?
磁盘真的是越大越好吗?
lovejunjie1
2021-12-03 12:36:22 +08:00
@dapang1221 是双盘做的 R0 。单盘写上限只有 300MB/S 。目前这个速度可以满足我们向服务器的这个 R0 缓存盘同步写入数据用了。直通模式的事情我咨询一下华为售后看看如何操作。
lovejunjie1
2021-12-03 12:47:03 +08:00
@ccde8259 感谢回复
1.网络协议的开销方向我尝试做一下调查,感谢指导方向
2.考虑过 SSD 直通,因为费用开销的问题可能要延后才能实施了。并且因为钱的问题,没能上支持 SSD 阵列的卡。
3.硬阵列可以节省一些服务器性能的开销。因为服务器上我还跑着几个虚拟机。这是我选择硬阵列的理由之一。
4.这组 R0 阵列的内容是缓存内容。我会监控硬盘健康状态。在发生无法挽回的事情之前会转移数据。即使因为突发情况数据丢失,也可以通过另一组 R1 恢复数据。或者重新生产数据。耽误两三天的时间,是我们可以容忍的。
5.软阵列因为没有接触过。所以对他的了解并不充分。
6.感谢提供了几个方案的研究方向,我会一一搜索的。
7.我这边数据有 4 个备份。工作盘>成果盘>冷备份>个人硬盘备份。充分考虑了容灾措施。
8.是的。影视行业是重数据,一个文件 1G 还是很常见的。10 分钟的解算缓存,按照每 0.5 帧一个缓存文件的共极端情况计算。需要 28,800 帧,每帧平均 800MB ,需要约 20T 左右容量。
lovejunjie1
2021-12-03 12:54:44 +08:00
@ccde8259 测试了一下读取速度,512MB 。这个速度很理想
root@nas:~$ sudo time dd if=/dev/sdb of=/dev/null bs=4k
^C 记录了 2213858+0 的读入
记录了 2213857+0 的写出
9067958272 bytes (9.1 GB, 8.4 GiB) copied, 17.7102 s, 512 MB/s
Command terminated by signal 2
0.42user 5.75system 0:17.71elapsed 34%CPU (0avgtext+0avgdata 2452maxresident)k
17711520inputs+0outputs (1major+88minor)pagefaults 0swaps
ccde8259
2021-12-03 13:01:08 +08:00
@lovejunjie1
大致就是不考虑容灾,只考虑性能对吧。
双 16T 和 4 块 8T 甚至 8 块 4T 构筑 R0 阵列,对于吞吐量问题上会带来什么差异?
读写场景是读多还是写多?
读写场景是顺序读写还是随机读写多?
不妨看下硬阵列卡是否有缓存?是否有缓存配置优化空间?
软硬阵列在缓存层面的差异能带来什么样不同的优劣势?
choury
2021-12-03 13:03:02 +08:00
@lovejunjie1 加 iflag=direct 重测
ccde8259
2021-12-03 13:06:22 +08:00
@lovejunjie1
那现阶段问题基本就是网络协议开销问题,至少本地 dd 性能没出问题。
一方面 iperf3 打一下带宽,是否需要修改 MTU ?
一方面猜你用的 SMB 协议,是否有其他协议可以使用? NFS FTP WebDAV ?
lovejunjie1
2021-12-03 13:16:02 +08:00
@ccde8259 感谢,不愧是神佬。经验丰富。我也是疏忽了忘记告知是 SMB 协议。
我尝试一下 iperf3 。等会吃完午餐把数据发上来。
SMB 协议是我用的比较熟悉的。趁着午饭我也把这三个稍微摸一下。
回 7 楼的疑问:
是的,只考虑性能就可以。
1.目前服务器上 3.5 寸口的 slot 已经基本上告罄,没有硬盘也没有 slot 来测试这个问题了。
2.读写都比较多,我把这块视作一个公共的网络缓存。
3.大概是随机读写会比较多。目前已有的序列帧,单文件 15MB 到 50MB 居多,一次缓存任务,读取 200 到 600 个左右。
4.好的,我去咨询一下。这里或许是有优化的空间的。
5.这个点我还需要继续做一些调查。以我目前的知识储备还需要一些时间才能作答……
lovejunjie1
2021-12-03 13:19:51 +08:00
@choury 额。伪装成 IO 的话,似乎就重现了我之前的问题

me@nas:~$ sudo time dd if=/dev/sdb of=/dev/null bs=4k iflag=direct
[sudo] huawei 的密码:
^C 记录了 1353482+0 的读入
记录了 1353481+0 的写出
5543858176 bytes (5.5 GB, 5.2 GiB) copied, 37.218 s, 149 MB/s
Command terminated by signal 2
0.34user 4.82system 0:37.23elapsed 13%CPU (0avgtext+0avgdata 2344maxresident)k
10827880inputs+0outputs (1major+86minor)pagefaults 0swaps
gam2046
2021-12-03 13:29:29 +08:00
我也使用了 RH2288 V2 ,LSI 2288 的 RAID 卡,如果是单盘的话,RAID 配置时,可以选择读写操作都通过缓存,也许有所提升。

至于协议层看应用场景,如果需要经常读取某个大文件中的一部分,而不是全部,建议通过 iSCSI 共享。
如果是大量小文件的读取,iSCSI 和 NFS 都可以考虑。
如果是读写体积完整文件,则各种共享方式差距不明显(都在可接受范围内)。
CallMeReznov
2021-12-03 13:30:14 +08:00
阵列卡的缓存策略是什么?
snuglove
2021-12-03 15:40:18 +08:00
可以尝试关 swap.只用内存.
内网主要还是看磁盘性能和网络传输情况.
lovejunjie1
2021-12-03 15:56:50 +08:00
@gam2046 中午调查服务器 bios 和设备管理器的时候。看到了我这边有 iSCSI 的字样。这个似乎是一个硬件的 iSCSI 设备?看来可以尝试一下这个了。
@CallMeReznov 目前 read cache policy 是 read ahead, dirver cache 是 unchanged.中午把 IO 项从直连 direct 改成缓存 cached 了。目前还在试
lovejunjie1
2021-12-03 15:59:39 +08:00
喜报。打开缓存之后,并把 MTU 设置为 9000 后,有了 10%的性能提升
^C 记录了 301749+0 的读入
记录了 301748+0 的写出
1235959808 bytes (1.2 GB, 1.2 GiB) copied, 7.61762 s, 162 MB/s
Command terminated by signal 2
0.05user 1.06system 0:07.61elapsed 14%CPU (0avgtext+0avgdata 2384maxresident)k
2414144inputs+0outputs (1major+87minor)pagefaults 0swaps
lovejunjie1
2021-12-03 16:04:28 +08:00
@ccde8259 我现在十分怀疑是我的网络配置出现了问题,dd 模拟 IO 的情况下和我实际使用中的情况是一直的。

iperf3 相关的数据目前没有条件做,我这边可以让我拿来测试的只有一台 linux 服务器,另一台万兆 win10 机器时不时会有人使用。

其他协议我中午也摸过了一圈。NFS 或者 iSCSI 可能会纳入选择。但是因为用户的习惯,现在 SMB 依然是首选。
gam2046
2021-12-03 16:10:20 +08:00
@lovejunjie1 #15 iSCSI 并不需要硬件支持,纯软件方案,而且 iSCSI 挂载后访问与本地磁盘一致,由于是挂载的块设备,因此兼容性上远比其他文件挂载( NFS/SMB/WebDAV/etc...)的好,如果文件比较打,可以适当调高 MTU 。

同时 Linux 、Windows 作为访问的客户端都支持的比较完备。如果 macos 的话...我猜应该也还不错吧,主要是自己没有 macos 设备
neilyoone
2021-12-03 18:04:38 +08:00
R0 没理解错 应该是 Raid0

弄块 SSD 给 两块西数黑盘 Raid0 做 SSD cache 加速吧,

Ubuntu 下的软件有 bcache, 对随机 IO 读写提升会很有帮助.
kokutou
2021-12-03 19:29:28 +08:00
如果没看错的话,现在问题就是

单盘读速有 300m/s
双盘组了 r0
但是本机上 dd 读取 r0 只有 160m/s

那不就是查阵列卡吗。。。
找售后呗啊。

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

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

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

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

© 2021 V2EX