如何分析Lustre性能优化方案

40次阅读
没有评论

本篇文章给大家分享的是有关如何分析 Lustre 性能优化方案,丸趣 TV 小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着丸趣 TV 小编一起来看看吧。

谈起 HPC 时,似乎绕不开 Lustre。Lustre 是 HPC 的代名词,它是开源 HPC 并行文件系统市场占有率的文件系统,并得到了如 Intel 和 DDN 等厂商的大力支持。目前,Intel 与 Lustre 相关的业务已经被 DDN 所接手。

1 Lustre 性能优化参考

1.1 网络带宽

网络带宽往往决定着 lustre 文件系统的聚合带宽。Lustre 是通过多个 OSS 同时读取数据来提高系统整体的读写性能,然而,如果网络传输的性能过低,则无法发挥 lustre 文件系统的性能优势。从以下几点考虑网络带宽对性能的影响:

网络类型(TCP/IP 网络及 Infiniband 网络)

网卡类型(千兆网 / 万兆网)

网卡数量及绑定方式(网卡绑定一起)

网卡绑定模式

补充:

通常情况下 Infiniband 网络性能远远高于 TCP/IP 网络,但成本较高

万兆网比千兆网性能高

网卡绑定模式一般为 6。

1.2 Lustre 自身设置

Luster 自身设置主要是条块数 (即 OST 的个数) 及如何条块化,这两方面也是 lustre 实现 I / O 并发的关键。条带化能够使系统达到并发的目的,从而影响了系统的性能。Luster 自身设置对系统性能的影响主要从以下几个方面:

条块大小(stripesize,min=64KB)

条块数(stripecount)

起始块数(start-ost,即条块起始位置)

补充:

通常情况下 start-ost 默认为 -1,不需要进行修改,该设置即不指定初始位置,能够很好达到负载均衡的目的

通常情况下 lustre 条块的大小的增加,聚合带宽总体呈下降趋势,当条块过大时,某一时间内的多个 I / O 发生在同一个 OST 上,造成 I / O 等待,通常设置为 64KB

通常情况下,随着条块数增加,聚合带宽总体呈上升趋势,在一定的环境下,合理的配置 OST 可以良好的发挥 lustre 的系统性能。

1.3 客户端设置

Lustre 文件系统中,客户端生成一个全局存储空间,用户数据通过客户端存入 lustre 文件系统中,所客户端的设置也会影响系统的性能。

主要从以下几点:

单个客户端进程数(连接数)

读写块大小

客户端数量

补充:

随着连接数 (进程数) 的增加,聚合带宽开始呈上升趋势,到一定程度后稳定(此时系统性能尚未达到饱和),随着连接数的增加,带宽开始下降

随着 I / O 读写块的大小增加,聚合带宽开始呈现上升趋势,到一定程度后稳定,随后增加块大小聚合带宽反而下降,当 64KB~64MB 大小时,保持稳定

随着客户端数目的增加,读模式下的聚合带宽明显提高,而写模式下的聚合带宽则变化不明显。

1.4 存储 RAID

Luster 底层存储设备采用通用存储设备,可以是单磁盘,也可以是 RAID,也可以是 LVP,大部分采用 RAID 方式,既能保证聚合存储容量,又能提供数据保护。主要从以下几点说明:

RAID 方式(硬 RAID/ 软 RAID)

RAID 模式(RAID0/1/2/3/4/5/6/10/01)

硬 RAID 卡类型

做 RAID 的磁盘类型(SATA、SAS、SSD)

补充:

通常情况下,lustre 文件系统底层采用硬 RAID 的方式进行底层存储,性能远远大于软 RAID,但成本高

Luster 通常做 RAID6,提高数据保护

OST 磁盘一般采用低成本的 SATA 盘,而 MDS 则一般采用 SSD 盘

2 Lustre 小文件优化

2.1 整体设置

1、通过应用聚合读写提高性能,比如对小文件进行 Tar,或创建大文件或通过 loopback  mount 来存储小文件。小文件系统调用开销和额外的 I / O 开销非常大,应用聚合优化可以显著提高性能。另外,可以使用多节点、多进程 / 多线程尽可能通过聚合来提高 I / O 带宽。

2、应用采用 O_DIRECT 方式进行直接 I /O,读写记录大小设置为 4KB,与文件系统保持一致。对输出文件禁用 locking,避免客户端之间的竞争。

3、应用程序尽量保证写连续数据,顺序读写小文件要明显优于随机小文件 I /O。

4、OST 采用 SSD 或更多的磁盘,提高 IOPS 来改善小文件性能。创建大容量 OST,而非多个小容量 OST,减少日志、连接等负载。

5、OST 采用 RAID 1+ 0 替代 RAID 5/6,避免频繁小文件 I / O 引起的数据校验开销。

2.2 系统设置

1、禁用所有客户端 LNET debug 功能:缺省开启多种调试信息,sysctl -w  lnet.debug=0,减少系统开销,但发生错误时将无 LOG 可询。

2、增加客户端 Dirty Cache 大小:缺省为 32MB,增大缓存将提升 I / O 性能,但数据丢失的风险也随之增大。

如何分析 Lustre 性能优化方案

3、增加 RPC 并行数量:缺省为 8,提升至 32 将提高数据和元数据性能。不利之处是如果服务器压力很大,可能反而会影响性能。

如何分析 Lustre 性能优化方案

4、控制 Lustre striping:lfs setstripe -c 0/1/-1  /path/filename,如果 OST 对象数大于 1,小文件性能会下降,因此将 OST 对象设置为 1。

5、客户端考虑使用本地锁:mount -t lustre -o  localflock,如果确定多个进程从同一个客户端进行写文件,则可用 localflock 代替 flock,减少发送到 MDS 的 RPC 数量。

6、使用 loopback  mount 文件:创建大 Lustre 文件,与 loop 设备关联并创建文件系统,然后将其作为文件系统进行 mount。小文件作用其上,则原先大量的 MDS 元数据操作将转换为 OSS 读写操作,消除了元数据瓶颈,可以显著提高小文件性能。

这种方法应用于 scratch 空间可行,但对于生产数据应该谨慎使用,因为 Lustre 目前工作在这种模式下还存在问题,操作方法如下:

如何分析 Lustre 性能优化方案

以上就是如何分析 Lustre 性能优化方案,丸趣 TV 小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注丸趣 TV 行业资讯频道。