RDMA(全稱RemoteDirect Memory Access) 它爲了解決網絡傳輸中服務器端數據處理的延遲而產生。json
它的原理是將待傳輸的數據從一臺計算機的內存,直接傳輸到另外一臺計算機的內存,整個傳輸過程無需操做系統和協議棧的介入。因爲旁路了操做系統協議棧,通信過程極大的下降了CPU的使用率,減小了內核的內存複製,以及用戶態與內核態的上下文切換。centos
常見的RDMA實現有三種,基於以太網的Roce網絡(RDMA over Converged Ethernet), InfiniBand, iWARP。api
阿里雲支持超級計算集羣SCC,同時支持RoCE網絡和VPC網絡,其中RoCE網絡專用於RDMA通訊。SCC 主要用於高性能計算和人工智能/機器學習、科學/工程計算、數據分析、音視頻處理等應用場景。
RoCE(RDMA over Convergent Ethernet)網絡速度達到InfiniBand網絡的性能,且能支持更普遍的基於Ethernet的應用。
介紹: https://www.alibabacloud.com/help/zh/doc-detail/60576.htm
能夠在ECS控制檯直接購買包年包月的SCC機型虛擬機。 https://www.alibabacloud.com/help/zh/doc-detail/61978.htm安全
容器服務目前已支持RDMA,您能夠將SCC機型的ECS添加到容器集羣中,並經過RDMA的Device plugin 在調度層面支持 RDMA。
經過聲明 resourcesLimit rdma/hca: 1
,能夠指定將容器調度到RDMA的ecs上。服務器
進入容器服務控制檯, 選擇建立Kubernetes集羣。因爲SCC目前僅在上海地域支持,容器集羣的地域請選擇 華東2(上海) 。 配置完其餘參數後,點擊集羣建立,等待集羣建立成功。網絡
在容器服務控制檯中,選擇使用模板部署。 部署支持RDMA的Device plugin, 選擇對應的集羣和命名空間,模板以下:機器學習
apiVersion: v1 kind: ConfigMap metadata: name: rdma-devices namespace: kube-system data: config.json: | { "mode" : "hca" } --- apiVersion: extensions/v1beta1 kind: DaemonSet metadata: name: rdma-device-plugin namespace: kube-system spec: template: metadata: annotations: scheduler.alpha.kubernetes.io/critical-pod: "" labels: name: rdma-sriov-dp-ds spec: hostNetwork: true tolerations: - key: CriticalAddonsOnly operator: Exists containers: - image: registry.cn-shanghai.aliyuncs.com/acs/rdma-device-plugin name: k8s-rdma-device-plugin imagePullPolicy: IfNotPresent securityContext: privileged: true volumeMounts: - name: device-plugin mountPath: /var/lib/kubelet/device-plugins - name: config mountPath: /k8s-rdma-sriov-dev-plugin volumes: - name: device-plugin hostPath: path: /var/lib/kubelet/device-plugins - name: config configMap: name: rdma-devices items: - key: config.json path: config.json
apiVersion: v1 kind: Pod metadata: name: rdma-test-pod spec: restartPolicy: OnFailure containers: - image: mellanox/centos_7_4_mofed_4_2_1_2_0_0_60 name: mofed-test-ctr securityContext: capabilities: add: [ "IPC_LOCK" ] resources: limits: rdma/hca: 1 command: - sh - -c - | ls -l /dev/infiniband /sys/class/net sleep 1000000 --- apiVersion: v1 kind: Pod metadata: name: rdma-test-pod-1 spec: restartPolicy: OnFailure containers: - image: mellanox/centos_7_4_mofed_4_2_1_2_0_0_60 name: mofed-test-ctr securityContext: capabilities: add: [ "IPC_LOCK" ] resources: limits: rdma/hca: 1 command: - sh - -c - | ls -l /dev/infiniband /sys/class/net sleep 1000000
在一個容器中執行 ib\_read\_bw -q 30
性能
另外一個容器中執行 ib\_read\_bw -q 30 <上一個容器的 ip>
學習
出現測試結果,說明兩個容器之間能夠經過RDM完成數據傳輸。 帶寬爲5500Mb/S, 約44Gbit/s。測試
tips: RDMA通信建連過程廣泛分爲 TCP 和 RDMA_CM 兩種實現,若是應用程序使用RDMA_CM 的建連的方式,vpc網絡插件中分配的pod ip 沒法做爲RDMA_CM 地址, 容器須要設置HostNetwork。並將bond0 ip 設置爲CM的通信地址。
雲服務器99元拼團購!拉新還可贏現金紅包!300萬等你瓜分!
立刻一鍵開團贏紅包: http://click.aliyun.com/m/100...
本文爲雲棲社區原創內容,未經容許不得轉載。