当前位置: 首页 > 科技观察

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

时间:2023-03-21 11:26:00 科技观察

说到HPC,似乎就绕不开Lustre。Lustre是HPC的同义词。是开源HPC并行文件系统中市场份额最大的文件系统,得到了Intel、DDN等厂商的大力支持。目前Intel和Lustre相关的业务已经被DDN接手。鉴于Lustre在HPC界的流行度和认可度,今天,我想与读者分享一篇关于Lustre调优的文章,旨在为Lustre学习者和爱好者提供一些学习参考。1Lustre性能优化参考1.1网络带宽网络带宽往往决定了Lustre文件系统的聚合带宽。Lustre通过同时读取多个OSS的数据,提升了系统的整体读写性能。但是如果网络传输性能太低,Lustre文件系统的性能优势就发挥不出来了。从以下几点考虑网络带宽对性能的影响:网络类型(TCP/IP网络和Infiniband网络)网卡类型(千兆/百兆网络)网卡数量和绑定方式(网卡绑定在一起)网卡绑定模式补充:通常情况下,Infiniband网络的性能远高于TCP/IP网络,但成本较高。10G网络的性能高于千兆网络。网卡绑定方式一般为6。1.2Lustre自身的设置Lustre自身的设置主要是block的数量(也就是OST的数量)和如何block,这两方面也是实现I/O并发的关键在光彩中。条带化可以使系统达到并发的目的,影响系统的性能。Lustre自身设置对系统性能的影响主要来自以下几个方面:条带大小(stripesize,min=64KB)条带计数(stripecount)起始块号(start-ost,即条带起始位置)补充:通常正常情况下,start-ost默认为-1,不需要修改。这个设置不指定初始位置,可以很好的达到负载均衡的目的。通常,总带宽随着光块大小的增加而减小。当block过大时,一定时间内在同一个OST上发生多次I/O,导致I/O等待,通常设置为64KB正常情况下,随着block数量的增加,整体聚合带宽趋于增加,在一定的环境下,合理配置OST可以充分发挥Lustre的系统性能。1.3客户端设置在Lustre文件系统中,客户端生成一个全局存储空间,用户数据通过客户端存储在Lustre文件系统中,因此客户端的设置也会影响系统的性能。主要来自以下几点:单个客户端进程数(连接数)读写块大小客户端数补充:随着连接数(进程数)的增加,聚合带宽开始上升,达到一定后趋于稳定level(此时系统性能还没有达到饱和),随着连接数的增加,带宽开始下降。随着I/O读写块大小的增加,聚合带宽开始呈现上升趋势。达到一定水平后,它稳定下来,然后增加块大小。聚合带宽反而减少,当大小为64KB~64MB时,保持稳定。随着客户端数量的增加,读模式下的聚合带宽显着增加,而写模式下的聚合带宽变化不大。1.4存储RAIDLustre的底层存储设备采用通用存储设备,可以是单盘、RAID或LVP。大多采用RAID,既能保证聚合存储容量,又能提供数据保护。主要从以下几点来解释:RAID模式(硬RAID/软RAID)RAID模式(RAID0/1/2/3/4/5/6/10/01)硬RAID卡类型RAID磁盘类型(SATA、SAS、SSD)补充:通常lustre文件系统底层采用硬RAID做底层存储,其性能远大于软RAID,但成本较高。Lustre通常使用RAID6来提高数据保护。OST磁盘一般使用低成本的SATA磁盘。MDS一般使用SSD盘2.Lustre小文件优化2.1总体设置1.通过应用聚合读写来提高性能,比如对小文件进行taring,或者通过loopbackmount创建大文件或存储小文件。小的文件系统调用开销和额外的I/O开销可能很大,应用聚合优化可以显着提高性能。另外,可以采用多节点、多进程/多线程的方式,尽可能通过聚合来提高I/O带宽。2、应用程序使用O_DIRECT方式进行直接I/O,读写记录大小设置为4KB,与文件系统一致。禁用对输出文件的锁定以避免客户端之间的竞争。3.应用尽量保证写入连续的数据,顺序读写小文件明显优于随机小文件I/O。4.OST使用SSD或更多磁盘来增加IOPS以提高小文件的性能。创建一个大的OST而不是多个小的OST,减少日志、连接等的负载。5.OST使用RAID1+0而不是RAID5/6来避免频繁的小文件I/O带来的数据验证开销。2.2系统设置1.关闭所有客户端LNET调试功能:默认开启各种调试信息,sysctl-wlnet.debug=0,减少系统开销,但出错时不会有LOG查询。2.增加客户端DirtyCache大小:默认为32MB。增加缓存会提高I/O性能,但数据丢失的风险也会增加。3.增加并行RPC的数量:默认为8,增加到32将提高数据和元数据性能。缺点是如果服务器承受很大压力,实际上可能会影响性能。4、控制Lustre条带化:lfssetstripe-c0/1/-1/path/filename,如果OST对象个数大于1,小文件性能会下降,所以设置OST对象为1。5.客户端考虑使用本地锁:mount-tlustre-olocalflock。如果确定多个进程从同一个客户端写文件,可以使用localflock代替flock来减少发送给MDS的RPC次数。6.使用loopback挂载文件:创建一个大的Lustre文件,将其与loop设备相关联并创建一个文件系统,然后将其挂载为一个文件系统。当小文件作用于它时,大量的MDS元数据操作会转化为OSS的读写操作,消除了元数据瓶颈,可以显着提升小文件的性能。这种方式对于scratch空间是可行的,但是对于生产数据要谨慎使用,因为目前Lustre在这种模式下的工作还存在问题。,张晓)基于软RAID2008影响Lustre性能的因素简析(张丹丹,姚继峰)LustreI/O性能***Lustre文件系统I/O性能的实践分析与改进(林松涛,周恩强,廖祥科)