lustre lnet

lustre  lnet

http://translate.sogoucdn.com/fulltranslation?url=http%3A%2F%2Fwiki.lustre.org%2FLNet_Router_Config_Guide&query=lustre\x20\x20lnet&tfr=wap&domainType=sogou&mcv=26&pcl=52,524&sed=0&ml=20&sct=61

 

LNet支持不同的网络类型,如以太网、InfiniBand、Intel Omni - Path和其他专有网络技术,如Cray Gemini。它使用LNet路由在不同的LNet网络之间路由LNet消息。LNet的路由能力提供了一种有效的协议,能够在不同类型的网络之间进行桥接。LNet是Linux内核空间的一部分,当底层网络支持时,它允许完整的RDMA吞吐量和零拷贝通信。lustre可以使用单个远程过程调用( RPC )启动多主机读取或写入,这允许客户端以接近峰值带宽速率使用RDMA访问数据。借助Lustre 2 . 10 . x中实现的多轨( MR )功能,它允许在同一LNet下将节点上相同类型的多个接口分组在一起(例如TCP 0、O2 B0等)。) .然后,这些接口可以同时用于承载LNet流量。MR还能够利用在不同网络上配置的多个接口。例如,OPA和MLX接口可以被分组到它们各自的LNet下,然后可以与MR特征一起使用,以同时承载LNet业务。

网络配置示例

LNet路由器是一个专门的Lustre客户端,Lustre文件系统没有装载,只有LNet在运行。单个LNet路由器可以服务于不同的文件系统。

对于以上示例:

  • 服务器位于基于Mellanox的InfiniBand网络LAN1上–10 . 10 . 0 . 0 / 24
  • 客户是英特尔OPA网络LAN2–10 . 20 . 0 . 0 / 24
  • LAN 1和LAN 2上的路由器分别位于10 . 10 . 0 . 20、10 . 10 . 0 . 21和10 . 20 . 0 . 29、10 . 20 . 0 . 30

节点上的网络配置可以通过在lustre . conf中添加模块参数来完成/ etc / modprobe . d /光泽. conf或者通过使用命令实用程序。此外,当前配置可以导出到YAML格式文件,然后可以根据需要随时导入该YAML文件来设置配置。

通过在lustre . conf中添加模块参数进行网络配置

Servers:

options lnet networks="o2ib1(ib0)" routes="o2ib2 10.10.0.20@o2ib1"

 

Routers:

options lnet networks="o2ib1(ib0),o2ib2(ib1)" "forwarding=enabled"

 

Clients:

options lnet networks="o2ib2(ib0)" routes="o2ib1 10.20.0.29@o2ib2"

注意:重新启动LNet是应用新配置所必需的。为此,需要取消配置LNet网络并重新配置。卸载模块前,确保Lustre网络和Lustre文件系统已停止。

// To unload and load LNet module

modprobe -r lnet

modprobe lnet

  

// To unconfigure and reconfigure LNet

lnetctl lnet unconfigure

lnetctl lnet configure

动态网络配置使用命令

Servers:

lnetctl net add --net o2ib1 --if ib0

lnetctl route add --net o2ib2 --gateway 10.10.0.20@o2ib1

lnetctl peer add --nid 10.10.0.20@o2ib1

 

Routers:

lnetctl net add --net o2ib1 --if ib0

lnetctl net add --net o2ib2 --if ib1

lnetctl peer add --nid 10.10.0.1@o2ib1

lnetctl peer add --nid 10.20.0.1@o2ib2

lnetctl set routing 1

   

Clients:

lnetctl net add --net o2ib2 --if ib0

lnetctl route add --net o2ib1 --gateway 10.20.0.29@o2ib2

lnetctl peer add --nid 10.20.0.29@o2ib2

使用YAML文件格式导入/导出配置

// To export the current configuration to a YAML file

lnetctl export FILE.yaml

lnetctl export > FILE.yaml

  

  

// To import the configuration from a YAML file

lnetctl import FILE.yaml

lnetctl import < FILE.yaml


有一个缺省文件安装在/ etc / net . conf其具有YAML格式的示例配置。YAML文件中配置的另一个示例是:

net:

    - net type: o2ib1

      local NI(s):

        - nid: 10.10.0.1@o2ib1

          status: up

          interfaces:

              0: ib0

          tunables:

              peer_timeout: 180

              peer_credits: 8

              peer_buffer_credits: 0

              credits: 256

          lnd tunables:

              peercredits_hiw: 64

              map_on_demand: 32

              concurrent_sends: 256

              fmr_pool_size: 2048

              fmr_flush_trigger: 512

              fmr_cache: 1

          tcp bonding: 0

          dev cpt: -1

          CPT: "[0]"

route:

    - net: o2ib2

      gateway: 10.10.0.20@o2ib1

      hop: 1

      priority: 0

      state: up

peer:

    - primary nid: 10.10.0.20@o2ib1

      Multi-Rail: False

      peer ni:

        - nid: 10.10.0.20@o2ib1

          state: up

          max_ni_tx_credits: 8

          available_tx_credits: 8

          min_tx_credits: 7

          tx_q_num_of_buf: 0

          available_rtr_credits: 8

          min_rtr_credits: 8

          refcount: 4

global:

    numa_range: 0

    max_intf: 200

    discovery: 1


LNet提供了一种机制来监控每个路由条目。lnt以定期的、可配置的间隔( live _ router _ check _ interval )对路由条目中标识的每个网关进行查验,以确保其处于活动状态。如果通过特定路由发送失败,或者路由器Pinger确定网关关闭,则该路由被标记为关闭,不被使用。它随后以规则的、可配置的间隔( dead _ router _ check _ interval )被ping,以确定它何时重新激活。

多轨网配置实例

如果路由器启用了MR,我们可以将路由器作为具有多个接口的对等体添加到客户端和服务器,MR算法将确保在向路由器发送流量时使用路由器的两个接口。但是,单个接口故障仍将导致整个路由器停机。通过上面图1中的网络拓扑示例,可以如下配置LNet MR :

Servers:

lnetctl net add --net o2ib1 --if ib0,ib1

lnetctl route add --net o2ib2 --gateway 10.10.0.20@o2ib1

lnetctl peer add --nid 10.10.0.20@o2ib1,10.10.0.21@o2ib1

 

Routers:

lnetctl net add --net o2ib1 --if ib0,ib1

lnetctl net add --net o2ib2 --if ib2,ib3

lnetctl peer add --nid 10.10.0.1@o2ib1,10.10.0.2@o2ib1

lnetctl peer add --nid 10.20.0.1@o2ib2,10.20.0.2@o2ib2

lnetctl set routing 1

   

Clients:

lnetctl net add --net o2ib2 --if ib0,ib1

lnetctl route add --net o2ib1 --gateway 10.20.0.29@o2ib2

lnetctl peer add --nid 10.20.0.29@o2ib2,10.20.0.30@o2ib2

细粒度路由

路由参数通过识别Lustre配置中的LNet路由器,用于告诉节点在转发流量时使用哪条路由。它指定路由器定义的分号分隔列表。

routes=dest_lnet [hop] [priority] router_NID@src_lnet; \ dest_lnet [hop] [priority] router_NID@src_lnet

另一种语法由冒号分隔的路由器定义列表组成:

routes=dest_lnet: [hop] [priority] router_NID@src_lnet \ [hop] [priority] router_NID@src_lnet

当有两台或两台以上的LNet路由器时,可以使用优先级参数给每台路由器赋予加权优先级。以下是使用此参数的一些可能原因:

  • 其中一台路由器比另一台更有能力。
  • 一台路由器是主路由器,另一台是备份路由器。
  • 一台路由器用于一部分客户端,另一台路由器用于另一部分。

每台路由器都将流量移动到不同的物理位置。优先级参数是可选的,如果不存在优先级,则无需指定。hop参数指定到目的地的跳数。当节点转发流量时,使用跳数最少的路由。如果到同一目的网络的多个路由具有相同的跳数,则流量在这些路由之间以循环方式分布。要到达/传输到LNet dest _ LNet,给定节点的下一跳是LNet路由器,其NID路由器_ NID位于LNet src _ LNet中。给定一个结构足够完善的系统,可以将流程映射到每个客户端或服务器,也可以映射来自每个客户端或服务器的流程。这种路由也称为细粒度路由。

高级路由参数

在Lustre配置中,不同类型的LNet网络通过路由器连接,可以设置多个核心模块参数来监控和提高路由性能。这些参数在中设置/ etc / modprobe . d /光泽. conf文件。路由相关参数为:

  • 自动停机-启用/禁用( 1 / 0 )路由器状态的自动标记为up或down。默认值为1。要禁用路由器标记,请设置:

options lnet auto_down=0

  • 避免路由器故障-指定如果路由器的一个接口由于某种原因出现故障,整个路由器都会被标记为故障。这一点很重要,因为如果节点没有意识到一侧的接口出现故障,他们仍会继续将数据推送到另一侧,假设路由器运行正常,而实际情况并非如此。要打开它:

options lnet avoid_asym_router_failure=1

  • 实时路由器检查间隔-指定路由器检查器ping实时路由器的时间间隔(以秒为单位)。默认值为60。要将该值设置为50,请使用:

options lnet live_router_check_interval=50

  • 死路由器检查间隔-指定路由器检查器检查死机的时间间隔(以秒为单位)。默认值为60。要将该值设置为50 :

options lnet dead_router_check_interval=50

  • 路由器_ ping _超时-指定路由器检查器检查活动路由器或死机时的超时时间。路由器检查器每隔一个dead _ router _ check _ interval或live _ router _ check _ interval分别向每个dead或live路由器发送一次ping消息。默认值为50。要将该值设置为60 :

options lnet router_ping_timeout=60

  • 使用前检查路由器-指定路由器在使用前要检查。默认设置为关闭。如果此参数设置为on,则dead _ router _ check _ interval参数必须为正整数。

options lnet check_routers_before_use=1


路由器检验器从每台路由器获取以下信息:

  • 路由器被禁用的时间
  • 经过禁用时间

如果router _ checker在router _ ping _超时秒内没有收到来自路由器的回复消息,则认为路由器已关闭。如果标记为“up”的路由器响应ping,超时将被重置。如果通过路由器成功发送了100个数据包,则该路由器的发送数据包计数器的值将为100。LNet路由器的统计数据可从以下位置找到/ proc /系统/网络/统计。如果未指定间隔,则仅采样并打印一次统计信息。否则,将按指定间隔(秒)对统计信息进行采样和打印。这些统计信息可以使用显示实用程序以及如下所示:

# lnetctl stats show

statistics:

    msgs_alloc: 0

    msgs_max: 2

    errors: 0

    send_count: 887

    recv_count: 887

    route_count: 0

    drop_count: 0

    send_length: 656

    recv_length: 70048

    route_length: 0

    drop_length: 0

ping响应还提供正在ping的节点的NIDs的状态。这样,ping节点知道是否继续使用该节点作为下一跳。如果路由器的一个NIDs发生故障避免路由器故障设置后,路由器将不再使用。

动态配置

可以使用lnetctl实用程序动态配置LNet。lnetctl实用程序可用于初始化LNet,而无需启动任何网络接口。这为用户在加载LNet后添加接口提供了灵活性。一般情况下,lnetctl格式如下: lnetctl cmd submd [选项]以下配置项由工具管理:

  • 配置/取消配置网络
  • 添加/删除/显示网络
  • 添加/删除/显示对等项
  • 添加/删除/显示路由
  • 启用/禁用路由
  • 配置路由器缓冲池

配置/取消配置网络

在通过modprobe (模式探测网),则l实用程序可用于配置LNet,而无需调出模块参数中指定的网络。它还可以通过提供- all选项来配置模块参数中指定的网络接口。

// To configure LNet

lnetctl lnet configure [--all]

  

// To unconfigure LNet

lnectl lnet unconfigure

添加/删除/显示网络

现在,LNet已准备好配置要添加的网络。要在ib0和ib1接口上添加O2 B1 LNet网络,请执行以下操作:

lnetctl net add --net o2ib1 --if ib0,ib1

使用show子命令,可以查看配置:

lnetctl net show -v

net:

    - net type: lo

      local NI(s):

        - nid: 0@lo

          status: up

          statistics:

              send_count: 0

              recv_count: 0

              drop_count: 0

          tunables:

              peer_timeout: 0

              peer_credits: 0

              peer_buffer_credits: 0

              credits: 0

          lnd tunables:

          tcp bonding: 0

          dev cpt: 0

          CPT: "[0]"

    - net type: o2ib1

      local NI(s):

        - nid: 192.168.5.151@o2ib1

          status: up

          interfaces:

              0: ib0

          statistics:

              send_count: 0

              recv_count: 0

              drop_count: 0

          tunables:

              peer_timeout: 180

              peer_credits: 8

              peer_buffer_credits: 0

              credits: 256

          lnd tunables:

              peercredits_hiw: 64

              map_on_demand: 32

              concurrent_sends: 256

              fmr_pool_size: 2048

              fmr_flush_trigger: 512

              fmr_cache: 1

          tcp bonding: 0

          dev cpt: -1

          CPT: "[0]"

        - nid: 192.168.5.152@o2ib1

          status: up

          interfaces:

              0: ib1

          statistics:

              send_count: 0

              recv_count: 0

              drop_count: 0

          tunables:

              peer_timeout: 180

              peer_credits: 8

              peer_buffer_credits: 0

              credits: 256

          lnd tunables:

              peercredits_hiw: 64

              map_on_demand: 32

              concurrent_sends: 256

              fmr_pool_size: 2048

              fmr_flush_trigger: 512

              fmr_cache: 1           

          tcp bonding: 0

          dev cpt: -1

          CPT: "[0]"

要删除网络,请执行以下操作:

lnetctl net del --net o2ib1 --if ib0

结果配置如下:

lnetctl net show -v

net:

    - net type: lo

      local NI(s):

        - nid: 0@lo

          status: up

          statistics:

              send_count: 0

              recv_count: 0

              drop_count: 0

          tunables:

              peer_timeout: 0

              peer_credits: 0

              peer_buffer_credits: 0

              credits: 0

          lnd tunables:

          tcp bonding: 0

          dev cpt: 0

          CPT: "[0]"

    - net type: o2ib1

      local NI(s):

        - nid: 192.168.5.151@o2ib1

          status: up

          interfaces:

              0: ib0

          statistics:

              send_count: 0

              recv_count: 0

              drop_count: 0

          tunables:

              peer_timeout: 180

              peer_credits: 8

              peer_buffer_credits: 0

              credits: 256

          lnd tunables:

              peercredits_hiw: 64

              map_on_demand: 32

              concurrent_sends: 256

              fmr_pool_size: 2048

              fmr_flush_trigger: 512

              fmr_cache: 1

          tcp bonding: 0

          dev cpt: -1

          CPT: "[0]"

添加/删除/显示对等项

添加远程对等点的命令:

lnetctl peer add --prim_nid 192.168.5.161@o2ib1 --nid 192.168.5.162@o2ib1

验证添加的对等项配置:

lnetctl peer show -v

peer:

    - primary nid: 192.168.5.161@o2ib1

      Multi-Rail: True

      peer ni:

        - nid: 192.168.5.161@o2ib1

          state: NA

          max_ni_tx_credits: 8

          available_tx_credits: 8

          min_tx_credits: 7

          tx_q_num_of_buf: 0

          available_rtr_credits: 8

          min_rtr_credits: 8

          refcount: 1

          statistics:

              send_count: 2

              recv_count: 2

              drop_count: 0

        - nid: 192.168.5.162@o2ib1

          state: NA

          max_ni_tx_credits: 8

          available_tx_credits: 8

          min_tx_credits: 7

          tx_q_num_of_buf: 0

          available_rtr_credits: 8

          min_rtr_credits: 8

          refcount: 1

          statistics:

              send_count: 1

              recv_count: 1

              drop_count: 0

要删除对等项,请执行以下操作:

lnetctl peer del --prim_nid 192.168.5.161@o2ib1 --nid 192.168.5.162@o2ib1

添加/删除/显示路由

要添加路由路径,请执行以下操作:

lnetctl route add --net o2ib2 --gateway 192.168.5.153@o2ib1 --hop 2 --prio 1

验证添加的路由信息:

lnetctl route show --verbose

route:

 - net: o2ib2

   gateway: 192.168.5.153@o2ib1

   hop: 2

   priority: 1

   state: down

要使此配置永久化,需要在下创建一个YAML文件/ etc / sysconfig / lnet . conf。然后,我们可以导入/导出实时配置文件:

lnetctl export > /etc/sysconfig/lnet.conf

中的网络脚本/ etc /初始日期/与DLC兼容,应在启动时启用:

systemctl enable lnet

启用/禁用路由

要启用/禁用节点上的路由:

// To enable routing

lnetctl set routing 1

  

// To disable routing

lnetctl set routing 0

要检查路由信息,请执行以下操作:

lnetctl routing show

配置路由器缓冲区

路由器缓冲区用于缓冲正在路由到其他节点的消息。这些缓冲区由所有CPU分区共享,因此它们的值应该通过考虑系统中CPT的数量来确定。每个CPT的这些缓冲区的最小值是:

#define LNET_NRB_TINY_MIN     512

#define LNET_NRB_SMALL_MIN    4096

#define LNET_NRB_LARGE_MIN    256

A value greater than 0 for router buffers will set the number of buffers accordingly. A value of 0 will reset the router buffers to system defaults. To configure router buffer pools using lnetctl:

 

// VALUE must be greater than or equal to 0

  

lnetctl set tiny_buffers 4096

lnetctl set small_buffers 8192

lnetctl set large_buffers 2048

磁共振节点的ARP通量问题

由于Linux路由的特殊性,如果在同一节点上有两个网络接口,则ARP中返回的特定IP的硬件地址可能不一定是arpe精确接口的地址。这给o2blnd带来了问题,因为它使用IPoIB解决了地址问题,并且获得了错误的Infiniband地址。要解决这个问题,需要设置路由条目和规则,告诉Linux内核使用正确的硬件地址进行响应。以下是在具有2个以太网、2个MLX和2个OPA接口的节点上的示例设置。

  • 运算放大器接口:
    • ib0 : 192 . 168 . 1 . 1
    • ib1 : 192 . 168 . 2 . 1
  • 多媒体广播接口:
    • ib2 : 172 . 16 . 1 . 1
    • ib3 : 172 . 16 . 2 . 1

#Setting ARP so it doesn't broadcast

sysctl -w net.ipv4.conf.all.rp_filter=0

sysctl -w net.ipv4.conf.ib0.arp_ignore=1

sysctl -w net.ipv4.conf.ib0.arp_filter=0

sysctl -w net.ipv4.conf.ib0.arp_announce=2

sysctl -w net.ipv4.conf.ib0.rp_filter=0

  

sysctl -w net.ipv4.conf.ib1.arp_ignore=1

sysctl -w net.ipv4.conf.ib1.arp_filter=0

sysctl -w net.ipv4.conf.ib1.arp_announce=2

sysctl -w net.ipv4.conf.ib1.rp_filter=0

  

sysctl -w net.ipv4.conf.ib2.arp_ignore=1

sysctl -w net.ipv4.conf.ib2.arp_filter=0

sysctl -w net.ipv4.conf.ib2.arp_announce=2

sysctl -w net.ipv4.conf.ib2.rp_filter=0

  

sysctl -w net.ipv4.conf.ib3.arp_ignore=1

sysctl -w net.ipv4.conf.ib3.arp_filter=0

sysctl -w net.ipv4.conf.ib3.arp_announce=2

sysctl -w net.ipv4.conf.ib3.rp_filter=0

  

ip neigh flush dev ib0

ip neigh flush dev ib1

ip neigh flush dev ib2

ip neigh flush dev ib3

   

echo 200 ib0 >> /etc/iproute2/rt_tables

echo 201 ib1 >> /etc/iproute2/rt_tables

echo 202 ib2 >> /etc/iproute2/rt_tables

echo 203 ib3 >> /etc/iproute2/rt_tables

 

ip route add 192.168.0.0/16 dev ib0 proto kernel scope link src 192.168.1.1 table ib0

ip route add 192.168.0.0/16 dev ib1 proto kernel scope link src 192.168.2.1 table ib1

ip rule add from 192.168.1.1 table ib0

ip rule add from 192.168.2.1 table ib1

   

ip route add 172.16.0.0/16 dev ib2 proto kernel scope link src 172.16.1.1 table ib2

ip route add 172.16.0.0/16 dev ib3 proto kernel scope link src 172.16.2.1 table ib3

ip rule add from 172.16.1.1 table ib2

ip rule add from 172.16.2.1 table ib3

ip route flush cache

无调谐

通过将参数传递给Lustre网络驱动程序( LND ),可以进行lne调谐。RDMA的Lustre网络驱动程序是ko2 blnd内核模块。此驱动程序用于英特尔OPA卡和InfiniBand卡。Lustre 2 . 10 . x可检测网卡,并使用/ usr / sbin / ko2 blnd -探头,为支持的卡设置可调参数。英特尔OPA和英特尔真秤卡由脚本自动检测和配置,以获得Lustre的最佳性能。可以修改脚本以检测其他网卡并设置最佳参数。以下是配置文件中的示例参数设置(/ etc / modproble . d / ko2 blnd . 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

参数来自/ etc / modproble . d / ko2 blnd . conf是全球性的,对于不同的织物不能有所不同。因此建议使用命令实用程序为每个结构正确地指定它,然后将配置存储到/ etc / sysconfig / lnet . conf中,使其在重新启动时保持不变。以前,网络上的所有对等体(计算节点、LNet路由器、服务器)都需要相同的可调参数,以便LNet独立于所使用的硬件技术(英特尔OPA或InfiniBand )工作。因此,如果要路由到具有较旧Lustre节点的结构中,则必须更新这些参数,以便将相同的选项应用于ko2 blnd模块。LNet使用对等体信用和网络接口信用以1MB的固定大小块通过网络发送数据。这对等信用可调参数管理并发发送到单个对等点的数量,可以使用/ proc / sys /网络/对等体接口。的号码对等信用可以使用特定Lustre网络驱动程序( LND )的模块参数进行增加:

//The default value is 8

ko2iblnd-opa peer_credits=128

增加并不总是强制性的对等信用为了获得良好的性能,因为在非常大的安装中,增加的值会使网络过载并增加OFED堆栈的内存利用率。可调网络接口信用(信用)限制并发发送到单个网络的数量,可以使用进程/系统/网络/国家信息系统接口。可以使用特定Lustre网络驱动程序( LND )的模块参数来增加网络接口信用的数量:

// The default value is 64 and is shared across all the CPU partitions (CPTs).

ko2iblnd-opa credits=1024

快速内存注册( FMR )是一种降低内存分配成本的技术。在FMR中,内存注册分为两个阶段:

  1. 分配注册所需的资源
  2. 使用从第一步获得的资源注册。

资源分配和去分配可以批量管理,因此FMR可以实现更快的内存注册。要在LNet中启用FMR,值为按需映射应该大于零。

 // The default value is 0

ko2iblnd-opa map_on_demand=32

此前,仅基于mlx4驱动程序的英特尔OPA和Mellanox FDR卡支持快速内存注册,而基于mlx 5驱动程序的Mellanox FDR / EDR卡不支持快速内存注册。Lustre 2 . 10 . x版本增加了对mlx 5 ( v2 . 7 . 16 )的快速Reg内存注册支持。

表1 :英特尔OPA的Lustre建议可调参数

音调美的

建议值

缺省值

对等信用

128

8

对等信用

64

0

信用

1024

64

并发发送

256

0

非关税壁垒

2048

512

按需映射

32

0

池大小

2048

512

冲洗触发器

512

384

高速缓存

1

1

在上表中:

  • 对等信用设置高水位线开始检索信用。
  • 并发发送发送到单个对等体的并发硬件数量。
  • 非关税壁垒为每个池分配的消息描述符的数量。
  • 池大小是每个CPT上的FMR池的大小。
  • 冲洗触发器是触发池刷新的脏FMRs的数量。
  • 高速缓存应设置为非零以启用FMR缓存。

配置LNet路由器以连接英特尔OPA和InfiniBand节点

可以使用具有足够网卡和LNet软件栈的工业标准服务器来部署LNet路由器。为生产环境设计完整的解决方案并不容易,但英特尔正在提供工具( LNet自检)来提前测试和验证配置和性能。目标是设计具有足够带宽的LNet路由器,以满足后端存储的吞吐量要求。连接到lnt路由器的计算节点数量通常不会改变解决方案的设计。LNet路由器可用的带宽受到连接到路由器的最慢网络技术的限制。通常,观察到由于LNet路由器,带宽比最慢卡的标称硬件带宽下降了10 - 15 %。在任何情况下,建议使用网络接口制造商提供的工具和/或Lustre提供的LNet自检实用程序来验证实施的解决方案。如果信用点数(对等信用和信用)设置不正确。对于与路由器的通信,不仅需要调整信用和对等信用,还需要全局路由器缓冲区和对等路由器缓冲区信用。

记忆考虑

当需要为另一个对等体转发数据包时,LNet路由器使用额外的信用记帐

  • 对等路由器信用:此信用管理从单个对等端同时接收的数量,并防止单个对等端使用所有路由器缓冲区资源。默认情况下,此值应为0。如果此值为0,则LNet路由器使用peer _ credits。
  • 路由器缓冲区信用:此信用允许消息排队,并选择非数据有效负载RPC与数据RPC,以避免拥塞。事实上,LNet路由器的缓冲区数量有限:

tiny_router_buffers  – size of buffer for messages of <1 page size

small_router_buffers – size of buffer for messages of 1 page in size

large_router_buffers – size of buffer for messages >1 page in size (1MiB)

这些内核模块参数可以使用/ proc / sys / lnet /缓冲区文件和可按CPT使用:

数数

信用

0

512

512

503

0

512

512

504

0

512

512

503

0

512

512

497

1

4096

4096

4055

1

4096

4096

0542

1

4096

4096

4050

1

4096

4096

4070

256

256

256

248

256

256

256

247

256

256

256

240

256

256

256

242

在上表中,

  • pages -它是每个缓冲区的页数。这是常数。
  • count -它是分配的缓冲区数量。这是常数。
  • 信用-是缓冲信用的数量。这是当前可用缓冲区信用数的实时值。如果此值为负,则表示排队的消息数。
  • min -这是系统中达到的最低信用额。这是历史数据。

LNet路由器堆栈的内存利用率是由对等路由器信用和路由器缓冲区信用参数引起的。RAM大小为32GB或更大的LNet路由器具有足够的内存来支持这些参数的非常大的配置。在任何情况下,都可以使用/ proc / sys / lnet / lnet _ memused度量文件。

软件安装

光泽装置

在Lustre客户端和LNet路由器上安装Lustre客户端rpms,并从以下链接在Lustre服务器上安装Lustre服务器rpms -https : / /下载. hpdd . Intel . com / public / lustre /最新版本/

英特尔运算放大器软件安装

  • 英特尔全路径IFS在英特尔全路径节点上-从下面的链接下载IFS包并取消绑定包

https : / / downloadcenter . Intel . com / download / 6885 / Intel - Omni -路径-结构-软件-包括- Intel - Omni -路径-主机-结构-接口-驱动程序

rpm -ivh kernel-devel-3.10.0-514.6.1.el7.x86_64.rpm

 

yum -y install \

    kernel-devel kernel-debuginfo-common kernel-debuginfo-common-x86_64 \

    redhat-lsb redhat-lsb-core

 

yum -y install \

    libibcommon libibverbs libibmad libibumad infinipath-psm \

    libibmad-devel libibumad-devel infiniband-diags libuuid-devel \

    atlas sysfsutils rpm-build redhat-rpm-config tcsh \

    gcc-gfortran libstdc++-devel libhfi1 expect qperf perftest papi

 

tar xzvf IntelOPA-IFS.DISTRO.VERSION

cd IntelOPA-IFS.DISTRO.VERSION &&

./INSTALL -i opa_stack -i opa_stack_dev -i intel_hfi -i delta_ipoib \

          -i fastfabric -i mvapich2_gcc_hfi -i mvapich2_intel_hfi \

          -i openmpi_gcc_hfi -i openmpi_intel_hfi -i opafm -D opafm

  • 路由器上的英特尔Omni - Path Basic -从同一(上)链接下载英特尔Omni - Path Basic安装包。

cd IntelOPA-Basic.DISTRO.VERSION

./INSTALL -i opa_stack -i opa_stack_dev -i intel_hfi -i delta_ipoib \

          -i fastfabric -i mvapich2_gcc_hfi -i mvapich2_intel_hfi \

          -i openmpi_gcc_hfi -i openmpi_intel_hfi -i opafm -D opafm

完成Intel Omni - Path基本建置后,您应该会看到从lsmod输出端载入的下列Intel Omni - Path hf1模组:

# lsmod |grep hfi

hfi1 558596 5

ib_mad 61179 4

hfi1,ib_cm,ib_sa,ib_umad

compat 13237 7

hfi1,rdma_cm,ib_cm,ib_sa,ib_mad,ib_umad,ib_ipoib

ib_core 88311 11

hfi1,rdma_cm,ib_cm,ib_sa,iw_cm,ib_mad

梅兰诺克软件安装

从以下网址下载tgz MOFED软件包:http : / / www . mellanox . com / page / software _ overview _ IB然后运行以下步骤:

 # tar -xvf MLNX_OFED_LINUX-DISTRO.VERSION

# cd MLNX_OFED_LINUX-DISTRO.VERSION/

# run ./mlnxofedinstall --add-kernel-support --skip-repo  (Note: Before you install MLNX_OFED review the various of installation options)

  

// Rebuild lustre:

    ./configure --with-linux=/usr/src/kernels/3.10.0-514.10.2.el7_lustre.x86_64/ --with-o2ib=/usr/src/ofa_kernel/default

    make rpms

示例配置

下面是按照上图所示的网络拓扑配置Lustre客户端、Lustre服务器和LNet路由器的详细说明。在执行步骤之前,请确保Lustre客户端安装在Lustre客户端上,LNet路由器和Lustre服务器上的Lustre服务器从这里开始-https : / /下载. hpdd . Intel . com / public / lustre /最新版本/

配置Lustre客户端

运行以下命令,根据上图中的拓扑配置Lustre客户端:

 

#modprobe lnet

#lnetctl lnet configure

#lnetctl net add --net o2ib1 --if ib1

#lnetctl route add --net o2ib --gateway 192.168.5.152@o2ib1

#lnetctl net show --verbose

net:

    - net type: lo

      local NI(s):

        - nid: 0@lo

          status: up

          statistics:

              send_count: 0

              recv_count: 0

              drop_count: 0

          tunables:

              peer_timeout: 0

              peer_credits: 0

              peer_buffer_credits: 0

              credits: 0

          lnd tunables:

              peercredits_hiw: 64

              map_on_demand: 32

              concurrent_sends: 256

              fmr_pool_size: 2048

              fmr_flush_trigger: 512

              fmr_cache: 1

          tcp bonding: 0

          dev cpt: 0

          CPT: "[0,0,0,0]"

    - net type: o2ib1

      local NI(s):

        - nid: 192.168.5.151@o2ib1

          status: up

          interfaces:

              0: ib1

          statistics:

              send_count: 0

              recv_count: 0

              drop_count: 0

          tunables:

              peer_timeout: 180

              peer_credits: 8

              peer_buffer_credits: 0

              credits: 256

          lnd tunables:

              peercredits_hiw: 64

              map_on_demand: 32

              concurrent_sends: 256

              fmr_pool_size: 2048

              fmr_flush_trigger: 512

              fmr_cache: 1

          tcp bonding: 0

          dev cpt: 0

          CPT: "[0,0,0,0]"

 

#lnetctl route show --verbose

route:

    - net: o2ib

    gateway: 192.168.5.152@o2ib1

    hop: 1

    priority: 0

    state: up

要使上述配置永久化,请运行以下命令:

#lnetctl export > /etc/sysconfig/lnet.conf

#echo ‘‘o2ib: { gateway: 192.168.5.152@o2ib1 }’’ > /etc/sysconfig/lnet_routes.conf

#systemctl enable lnet

配置网络路由器

确保/ etc / modprobe . d / koblnd . conf使用以下设置更新文件。剧本/ usr / sbin / ko2 blnd -探头检测OPA卡,并且仅当它存在时使用选项ko2 blnd - OPA,否则使用MLX卡的默认设置。

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

运行以下命令,根据上图中的拓扑配置LNet路由器:

#modprobe lnet

#lnetctl lnet configure

#lnetctl net add --net o2ib1 --if ib1

#lnetctl net add --net o2ib --if ib0

#lnetctl set routing 1

  

#lnetctl net show --verbose

net:

    - net: lo

    local NI(s):

        - nid: 0@lo

          status: up

          statistics:

              send_count: 0

              recv_count: 0

              drop_count: 0

          tunables:

              peer_timeout: 0

              peer_credits: 0

              peer_buffer_credits: 0

              credits: 0

          lnd tunables:

              peercredits_hiw: 64

              map_on_demand: 32

              concurrent_sends: 256

              fmr_pool_size: 2048

              fmr_flush_trigger: 512

              fmr_cache: 1

              conns_per_peer: 4

          tcp bonding: 0

          dev cpt: 0

          CPT: "[0,0,0,0]"

    - net: o2ib

    local NI(s):

        - nid: 192.168.3.104@o2ib

          status: up

          interfaces:

              0: ib0

          statistics:

              send_count: 0

              recv_count: 0

              drop_count: 0

          tunables:

              peer_timeout: 180

              peer_credits: 8

              peer_buffer_credits: 0

              credits: 256

          lnd tunables:

              peercredits_hiw: 64

              map_on_demand: 32

              concurrent_sends: 256

              fmr_pool_size: 2048

              fmr_flush_trigger: 512

              fmr_cache: 1

              conns_per_peer: 4

          tcp bonding: 0

          dev cpt: 0

          CPT: "[0,0,0,0]"

    - net type: o2ib1

    local NI(s):

        - nid: 192.168.5.152@o2ib1

          status: up

          interfaces:

              0: ib1

          statistics:

              send_count: 0

              recv_count: 0

              drop_count: 0

          tunables:

              peer_timeout: 180

              peer_credits: 8

              peer_buffer_credits: 0

              credits: 256

          lnd tunables:

              peercredits_hiw: 64

              map_on_demand: 32

              concurrent_sends: 256

              fmr_pool_size: 2048

              fmr_flush_trigger: 512

              fmr_cache: 1

              conns_per_peer: 4

          tcp bonding: 0

          dev cpt: 0

          CPT: "[0,0,0,0]"

来自的参数设置/ etc / modproble . d / ko2 blnd . conf是全局的,并应用于节点中的所有驱动程序卡。如果以上可调参数同时用于OPA和MLX,MLX的性能将下降5 - 10 %。因此,如果需要,可以使用动态LNet配置( DLC )更改MLX卡的设置。借助Lustre 2 . 10 . x发行版,多个NIs可以配置其独特的可调参数。为此,MLX卡的可调参数可以在lnnet . conf中编辑,如下所示:

- net type: o2ib

  local NI(s):

    - nid: 192.168.3.104@o2ib

      status: up

      interfaces:

          0: ib0

      tunables:

          peer_timeout: 180

          peer_credits: 8

          peer_buffer_credits: 0

          credits: 256

      lnd tunables:

          peercredits_hiw: 4

          map_on_demand: 0

          concurrent_sends: 8

          fmr_pool_size: 512

          fmr_flush_trigger: 384

          fmr_cache: 1

          conns_per_peer: 1

      tcp bonding: 0

      dev cpt: 0

      CPT: "[0,0,0,0]"

要在启动时启用配置,请执行以下操作:

#systemctl enable lnet

配置Lustre服务器

要配置Lustre server (基于Infiniband ),请运行以下命令:

#modprobe lnet

#lnetctl lnet configure

#lnetctl net add --net o2ib --if ib0

#lnetctl route add --net o2ib1 --gateway 192.168.3.104@o2ib

#lnetctl net show --verbose

net:

    - net: lo

    local NI(s):

        - nid: 0@lo

          status: up

          statistics:

              send_count: 0

              recv_count: 0

              drop_count: 0

          tunables:

              peer_timeout: 0

              peer_credits: 0

              peer_buffer_credits: 0

              credits: 0

          lnd tunables:

              peercredits_hiw: 4

              map_on_demand: 0

              concurrent_sends: 8

              fmr_pool_size: 512

              fmr_flush_trigger: 384

              fmr_cache: 1

              conns_per_peer: 1

          tcp bonding: 0

          dev cpt: 0

          CPT: "[0,0,0,0]"

    - net: o2ib

    local NI(s):

        - nid: 192.168.3.106@o2ib

          status: up

          interfaces:

              0: ib0

          statistics:

              send_count: 0

              recv_count: 0

              drop_count: 0

          tunables:

              peer_timeout: 180

              peer_credits: 8

              peer_buffer_credits: 0

              credits: 256

          lnd tunables:

              peercredits_hiw: 4

              map_on_demand: 0

              concurrent_sends: 8

              fmr_pool_size: 512

              fmr_flush_trigger: 384

              fmr_cache: 1

              conns_per_peer: 1

          tcp bonding: 0

          dev cpt: 0

          CPT: "[0,0,0,0]"

  

#lnetctl route show --verbose

route:

    - net: o2ib1

    gateway: 192.168.3.104@o2ib

    hop: 1

    priority: 0

    state: up

 

 

猜你喜欢

转载自blog.csdn.net/a843538946/article/details/81316438