OCI Cluster Network(集群网络,以下简称CN)是连接一组高性能计算 (HPC、GPU或Optimized(优化型)裸金属实例的,具备高带宽、极低延迟的网络。OCI为CN中每个节点位于相互接近的物理位置;通过OCI远程直接内存访问(RDMA)网络技术为CN内的节点提供极低的(单位数字微秒级)延迟,使得OCI公有云上的HPC实例集群可与在本地OP部署提供完全性能相当的运行表现。
OCI CN是为高并行计算需求工作负载而设计的,可应用于以下场景:
汽车、航空模型流体动态模拟计算
金融模型和风险分析
生物医学模拟
空间探索轨迹分析和设计
AI人工智能和大数据
OCI CN采用基于实例池(Instance Pools)功能扩展,可通过实例池的操作直接管理集群网络中的实例,比如修改实例池大小(Resize)伸缩实例数量,监控和增加标签等。
目前OCI CN支持以下的裸金属Shape类型:
BM.HPC2.36
BM.GPU4.8
BM.Optimized3.36 (Intel)
OCI CN管理操作可使用OCI控制台或API方式进行。
2.1 创建CN
在创建CN前,需要预先创建实例配置,该资源用于CN上的实例池。在创建实例配置时用到以下的设置:
镜像(Image):可点击选择“Oracle Images”,选择“Oracle HPC Cluster Networking Image”,也可以选择自定制镜像
实例类型(Shape):选择“Bare Metal Machine”,然后选择所需要的裸金属实例类型(目前支持的实例类型可参见上节)
2.2 将实例从CN分离出去
用户可以将实例从底层的实例池分离,从而将该实例从CN集群中删除。分离后的实例将不再作为CN集群中的一员受到管理(比如伸缩,实例池监控)。如果用户只是需要从CN集群中删除一个或多个实例,可以通过改变(Resize)CN操作进行。
在分离实例时,可以选择是否删除实例或保留实例(不在CN集群实例池中,而作为独立的实例)。还可以选择是否让OCI为CN新创建一个实例来替换该被分离的实例;如果选择不替换新的实例,CN实例池的大小(Size)将减少,以与CN实例池实际大小相匹配。
2.3 改变CN 大小(Resize)
用户可以改变CN底层实例池大小(Resize),调整CN集群的实例数量。
扩容、增加数量时,OCI将创建新实例直到实例池中启动的实例数量达到指定所需的实例池大小。注意:CN集群可以扩容的数量可能会受Region(区域)、AD(可用域)内RDMA网络的主机节点资源容量限制。
缩容、减少数量时,OCI按照FIFO(先进先出)的顺序删除CN集群实例池中的实例。注意:如果用户希望删除CN集群指定的某个或某些实例,可以通过上面的“2.2 将实例从CN分离出去”的操作实现。
2.4 编辑CN名称
可选择已有的CN集群修改名称,并保存。
2.5 CN增加标签
可以给CN集群增加使用标签,它可以帮助用户更好的管理OCI资源。用户可以在CN创建时,或创建之后更新/增加所需的标签。
2.6 删除CN
用户可在不再需要使用时删除CN集群。
删除CN的操作,OCI将CN中包含的关联底层资源进行永久删除,包括实例池里的实例,及其挂接的块存储卷(boot启动卷和数据卷)。
3.1 概述
运行性能密集型工作负载,比如仿真,以往只可以通过超级计算机提供。随着仿真应用在当下越来越普遍,可代替物理测试、或流体动态计算等场景。
为加速仿真应用,工程师将他们的工作负载运行在多个计算机上。这种并行处理如果相互间进行互通数据信息,则网络性能将对仿真运行时间产生极大的影响。这种工作负载被称为“紧耦合(tightly coupled)”模式。
OCI CN(集群网络)就是为这种模式的工作负载,提升运行时间而提供的功能;它连接一组高性能计算 (HPC), GPU或Optimized(优化型)裸金属实例的,提供高带宽、极低延迟的RDMA网络。2021年,OCI CN还发布Intel Ice Lake processor的裸金属实例类型支持。
用户只需要通过几个点击即可完成CN集群创建部署。OCI CN采用RoCE v2网络技术,延迟低至1.7 µs (64-byte packets),根据第3方Exabyte.io的分析报告,OCI CN提供的RDMA网络延迟低于其它云厂商(见下图)

3.2 打开(Enable)CN示例
下面通过常用三个MPI(Message Passing Interface)命令展示如何打开(Enable)CN。
在用户通过执行mpirun命令或软件时, 要使用OCI CN需要指定实例的相应RDMA网卡接口和MPI Flags。如果没有关闭实例的CPU超线程Hyperthreading,建议指定裸金属实例的36 Cores。
以下示例MPIs命令如何指定Flags和CPU,并打开(Enable) CN。
3.3 MPI命令及Falgs设置参考示例
BM.HPC2.36实例类型Flags示例
-mca btl self -x UCX_TLS=rc,self,sm -x HCOLL_ENABLE_MCAST_ALL=0 -mca coll_hcoll_enable 0 -x UCX_IB_TRAFFIC_CLASS=105 -x UCX_IB_GID_INDEX=3
指定CPU processes:
--cpu-set 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35
以下是在两个CN节点间pingpong测试的命令示例:
source/usr/mpi/gcc/openmpi-3.1.1rc1/bin/mpivars.sh
mpirun -mca btl self -x UCX_TLS=rc,self,sm -x HCOLL_ENABLE_MCAST_ALL=0 -mca
coll_hcoll_enable 0 -x UCX_IB_TRAFFIC_CLASS=105 -x UCX_IB_GID_INDEX=3 --cpu-set
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35
-np 2 --host hpc-node-1,hpc-node-2
/usr/mpi/gcc/openmpi-3.1.1rc1/tests/imb/IMB-MPI1 pingpong
BM.HPC2.36实例类型Flags示例:
-mca pml ucx -x UCX_NET_DEVICES=mlx5_0:1 -x UCX_IB_TRAFFIC_CLASS=105 -x UCX_IB_GID_INDEX=3 -x HCOLL_ENABLE_MCAST_ALL=0 -x coll_hcoll_enable=0
BM.Optimized3.36实例类型Flags示例:
-mca pml ucx -x UCX_NET_DEVICES=mlx5_2:1 -x UCX_IB_TRAFFIC_CLASS=105 -x UCX_IB_GID_INDEX=3 -x HCOLL_ENABLE_MCAST_ALL=0 -x coll_hcoll_enable=0
BM.GPU4.8实例类型Flags示例:
可以指定不同UCX_NET_DEVICES
示例:
-x UCX_NET_DEVICES=mlx5_0:1,mlx5_2:1,mlx5_4:1,mlx5_6:1
注:OpenMPI只可同时处理4个网卡;对于BM.GPU4.8实例类型可以关闭其8个RDMA网卡中的4个,命令示例如下:
sudo ifdown enp94s0f0
其它MPI命令及Flags设置,可参考:
https://blogs.oracle.com/cloud-infrastructure/post/running-applications-on-oracle-cloud-using-cluster-networking

作者简介
郭静贤,甲骨文云平台解决方案专家团队资深咨询顾问,专注于甲骨文云平台,IaaS,PaaS平台、SaaS应用集成、混合云集成、SaaS应用扩展,公有云、混合云等领域,具有近20年的IT行业从业经验,擅长企业应用架构咨询、设计和实现。可以通过jingxian.guo@oracle.com与他联系。




