高性能计算Lustre性能优化方案

栏目: 服务器 · 发布时间: 5年前

内容简介:谈起HPC时,似乎绕不开Lustre。Lustre是HPC的代名词,它是开源HPC并行文件系统市场占有率最高的文件系统,并得到了如Intel和DDN等厂商的大力支持。目前,Intel与Lustre相关的业务已经被DDN所接手。鉴于Lustre在HPC行业的知名度和认可度,今天,给读者分享一篇关于Lustre调优的文章,目的是给Lustre学习者和爱好者提供些学习参考。

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

鉴于Lustre在HPC行业的知名度和认可度,今天,给读者分享一篇关于Lustre调优的文章,目的是给Lustre学习者和爱好者提供些学习参考。

高性能计算Lustre性能优化方案

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性能优化方案

3 文档说明

  • Lustre文件系统的性能优化研究2011(王博,李先国,张晓)
  • 基于软RAID的lustre性能影响要素简析2008(张丹丹,姚继峰)
  • Luster I/O性能最佳实践
  • Luster文件系统I/O性能的分析和改进(林松涛,周恩强,廖湘科)

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python神经网络编程

Python神经网络编程

[英]塔里克·拉希德(Tariq Rashid) / 林赐 / 人民邮电出版社 / 2018-4 / 69.00元

神经网络是一种模拟人脑的神经网络,以期能够实现类人工智能的机器学习 技术。 本书揭示神经网络背后的概念,并介绍如何通过Python实现神经网络。全书 分为3章和两个附录。第1章介绍了神经网络中所用到的数学思想。第2章介绍使 用Python实现神经网络,识别手写数字,并测试神经网络的性能。第3章带领读 者进一步了解简单的神经网络,观察已受训练的神经网络内部,尝试进一步改......一起来看看 《Python神经网络编程》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具