优化o2iblnd性能

来自Lustre文件系统
跳转至: 导航搜索

内核模块文件除了用来定义网络接口之外,还可以为Lustre使用的其他内核模块提供参数。这些参数通常用于优化网络驱动程序,最大限度地提高网络接口的性能。在Lustre 2 . 8 . 0及以上版本的/etc/modprobe.d/ko2blnd.conf文件中可以看到这种优化的一个例子,包括以下内容:

alias ko2iblnd-opa ko2iblnd
options ko2iblnd-opa peer_credits=128 peer_credits_hiw=64 credits=1024 concurrent_sends=256 ntx=2048 map_on_demand=32 fmr_pool_size=2048 fmr_flush_trigger=512 fmr_cache=1 conns_per_peer=4

install ko2iblnd /usr/sbin/ko2iblnd-probe

如果安装了英特尔® Omni-Path接口,LNet内核模块会自动应用上例中的配置,但如果安装了其他的网络接口,则不会应用该配置。请注意,当一台主机连接到共享同一个Lustre网络驱动程序的多种结构时,modprobe设置的选项将应用于使用这个驱动程序的所有接口。如果要设置各个设备的优化参数,请使用动态LNet配置工具lnetctl来配置接口。

下面一组选项是用来优化英特尔® Omni-Path架构性能的。详细的选项说明不在本小节的范围内,这里仅提供以下概述:

  • peer_credits = 128 — 并发发送给单个peer的数量
  • peer_credits_hiw=64 — 处于等待中的数量(hold in wait,hiw),用于需要尽快返回时
  • credits=1024 — 并发发送的数量(发送给所有peer)
  • concurrent_sends=256 — 发送队列的大小
  • ntx=2048 — 当ko2iblnd模块加载到内核中时,预先分配的消息描述符的数量
  • map_on_demand=32 — 需要映射到虚拟连续区域的非连续存储区域的数量
  • fmr_pool_size=2048 — 快速注册内存( Fast Memory Registration , FMR )池的大小(必须>= ntx/4)
  • fmr_flush_trigger=512 — 脏FMR池刷新触发器
  • fmr_cache=1 — 启用FMR缓存
  • conns_per_peer=4 — 为每个peer创建多个队列对,以允许来自单个客户端的更高吞吐量。这个参数与OPA hfi1内核驱动程序的krcvqs参数一起使用时,最有利于OPA接口的性能。还必须设置hfi1驱动程序的选项krcvqs,建议设置为krcvqs=4。在某些情况下,设置为krcvqs=8将提高IO性能,但这可能会影响其他工作负载,尤其会影响客户端。如果队列对使用过多内存,可以将ko2iblnd conns_per_peer值降低到2krcvqs的值也降为2

如果未给出参数,Lustre使用以下默认值:

  • peer_credits=8
  • peer_credits_hiw=8
  • concurrent_sends=8
  • credits=64

在检测到英特尔®高性能网络接口时,会自动应用优化配置。一些参数(如FMR )与其他设备(如使用MLX5驱动程序的Mellanox InfiniBand产品)不兼容。可以通过设置map_on_demand=0(默认值)来禁用优化配置。如果要满足安装时的特定要求,也可以修改或删除配置文件。

一般来说,在Mellanox InfiniBand HCAs中使用默认的ko2iblnd设置就很好地运行,该设置通常不需要调整。由于英特尔®和Mellanox之间有架构差异,所以很难设置通用的默认值。与历来更强调吞吐量大的工作负载的Mellanox架构相比,英特尔® OPA和True Scale Fabric的架构更倾向于轻量级的高频消息传递通信。因为Mellanox InfiniBand一直以来是突出速度的架构,所以在过去,在支持工作负载(如存储)的接口辅助下,LNet驱动程序的开发自然倾向于速度这一特点。上述设置可以优化英特尔® 架构上用于通信的LNet驱动程序(如果存在该驱动的话)。

注意:如果有支持TCP/IP流的上层协议(例如InfiniBand结构的iPod驱动程序),则可以在RDMA结构中使用socklnd驱动程序,但不建议在InfiniBand、RoCE和英特尔OPA结构的网络上使用socklnd,因为与基于RDMA的o2iblnd相比,它会影响网络的性能,并影响最终网络连接的稳定性。所以在这些结构的网络上,强烈建议尽可能地使用o2iblnd,它能用最低的开销提供最高的性能。

英特尔® Omni-Path的进一步优化

英特尔对OPA hfi1驱动程序选项提供以下选项,供Lustre使用:

options hfi1 krcvqs=4 piothreshold=0 sge_copy_mode=2 wss_threshold=70

想要达到Lustre IO性能与其他负载之间的最佳平衡,可能还需要对krcvqs参数进行一些实验。将以krcvqs参数的值提高到8,Lustre服务器可以获得更佳的性能。对于Lustre客户端,较高的值可以提高Lustre性能,但可能会影响应用程序的性能。

更多信息参见:

irqbalance

irqbalance软件的目的是在多处理器系统的处理器之间发送硬件中断以提高性能。根据英特尔Omni-Path调优指南(下载pdf包),将irqbalance提示策略设置为exact可能有利于驱动程序中的hfi1接收和发送DMA中断算法。

要安装irqbalance软件包,请运行以下命令:

yum -y install irqbalance

安装完成后,编辑/etc/sysconfig/irqbalance文件,并添加以下内容:


IRQBALANCE_ARGS=--hintpolicy=exact

启用irqbalance服务并重新加载配置(确保首先加载HFI1驱动程序) :

systemctl restart irqbalance.service