摘要: ### RDMA RDMA(全稱RemoteDirect Memory Access) 它爲了解決網絡傳輸中服務器端數據處理的延遲而產生。 它的原理是將待傳輸的數據從一臺計算機的內存,直接傳輸到另外一臺計算機的內存,整個傳輸過程無需操做系統和協議棧的介入。因爲旁路了操做系統協議棧,通信過程極大的下降了CPU的使用率,減小了內核的內存複製,以及用戶態與內核態的上下文切換。 常見的RDMA數據庫
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性能
在容器服務控制檯中,選擇使用模板部署。 部署支持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
經過手動添加的方式將SCC的ECS加入集羣中
部署兩個測試鏡像
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的通信地址。
阿里雲雙十一1折拼團活動:已滿6人,都是最低折扣了
【滿6人】1核2G雲服務器99.5元一年298.5元三年 2核4G雲服務器545元一年 1227元三年
【滿6人】1核1G MySQL數據庫 119.5元一年
【滿6人】3000條國內短信包 60元每6月