本文档介绍如何在ACK灵骏集群中配置和使用RDMA(RemoteDirect Memory Access)技术,实现高性能容器网络通信。RDMA技术可显著降低网络延迟并提升吞吐量,适用于高性能计算(HPC)、AI训练、分布式存储等对网络性能要求严苛的场景。
RDMA简介
RDMA(RemoteDirect Memory Access)技术全称远程直接内存访问,是为了解决网络传输中服务器端数据处理的延迟而产生的。它将数据直接从一台计算机的内存传输到另一台计算机,无需双方操作系统的介入。这允许高吞吐量、低延迟的网络通信,尤其适合在大规模并行计算机集群中使用。RDMA通过网络将数据直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,这样就不需要消耗多少计算机的处理能力。它消除了外部存储器复制和上下文切换的开销,因此能节省内存带宽和CPU周期,以改进应用系统性能。
在ACK灵骏节点使用RDMA
确认RDMA Device Plugin已正常运行,且在每个有RDMA的灵骏节点都已启动。
# kubectl get ds ack-rdma-dp-ds -n kube-system NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE ack-rdma-dp-ds 2 2 2 2 2 <none> xxh
检查节点是否拥有资源
rdma/hca
。# kubectl get node e01-cn-xxxx -oyaml ... allocatable: cpu: 189280m ephemeral-storage: "3401372677838" hugepages-1Gi: "0" hugepages-2Mi: "0" memory: 2063229768Ki nvidia.com/gpu: "8" pods: "64" rdma/hca: 1k capacity: cpu: "192" ephemeral-storage: 3690725568Ki hugepages-1Gi: "0" hugepages-2Mi: "0" memory: 2112881480Ki nvidia.com/gpu: "8" pods: "64" rdma/hca: 1k ...
执行以下YAML文件,为Pod使用RDMA功能申请
rdma/hca
资源。申请量为
rdma/hca:1
即可。检查Pod是否开启
hostNetwork: true
。开启hostNetwork的灵骏节点可使用RDMA功能。
apiVersion: batch/v1 kind: Job metadata: name: hps-benchmark spec: parallelism: 1 template: spec: containers: - name: hps-benchmark image: ** command: - sh - -c - | python /workspace/wdl_8gpu_outbrain.py resources: limits: nvidia.com/gpu: 8 rdma/hca: 1 workingDir: /root volumeMounts: - name: shm mountPath: /dev/shm restartPolicy: Never volumes: - name: shm emptyDir: medium: Memory sizeLimit: 8Gi hostNetwork: true tolerations: - operator: Exists
该文章对您有帮助吗?
- 本页导读 (1)
- RDMA简介
- 在ACK灵骏节点使用RDMA