All Products
Search
Document Center

Elastic Compute Service:Aktifkan eRDMA pada instans GPU-accelerated

Last Updated:Jun 05, 2026

Setelah Anda menyambungkan Elastic RDMA Interface (ERI) ke instans GPU-accelerated, Anda dapat mengaktifkan Remote Direct Memory Access (RDMA) untuk mempercepat komunikasi antar instans GPU-accelerated dalam Virtual Private Cloud (VPC). eRDMA mentransfer data lebih efisien dibandingkan RDMA tradisional, sehingga meningkatkan komunikasi antar instans GPU-accelerated dan mengurangi waktu pemrosesan tugas. Topik ini menjelaskan cara mengaktifkan eRDMA pada instans GPU-accelerated.

Batasan

Item

Deskripsi

Instance type

Elastic RDMA Interface (ERI) mendukung tipe instans berikut:

  • gn8is, ebmgn8is, gn8v, ebmgn8v, ecs.ebmgn9g, ecs.ebmgn9gc, ecs.ebmgn9ge

Image

Gunakan salah satu image berikut:

  • (Direkomendasikan) Alibaba Cloud Linux 3

  • CentOS 8.5/8.4/7.9

  • Ubuntu 24.04/22.04/20.04/18.04

Jumlah perangkat eRDMA

  • Famili instans gn8is dan gn8v hanya mendukung satu Elastic RDMA Interface.

  • ebmgn8is, ebmgn8v, ecs.ebmgn9g, ecs.ebmgn9gc, dan ecs.ebmgn9ge ECS Bare Metal Instances mendukung dua Elastic RDMA Interfaces.

Batasan jaringan

  • Setelah Anda mengaktifkan Elastic RDMA Interface untuk elastic network interface, Anda tidak dapat menetapkan Alamat IPv6 kepadanya.

  • Komunikasi antara dua instans menggunakan ERIs tidak dapat melewati perangkat jaringan perantara, seperti Server Load Balancer (SLB).

Prosedur

Untuk menggunakan fitur eRDMA, sebuah instans harus memiliki tumpukan perangkat lunak eRDMA yang terinstal dan elastic network interface yang diaktifkan ERI tersambung.

Konfigurasikan eRDMA saat pembuatan instans

  1. Buka halaman Custom Launch di Konsol ECS.

  2. Buat instans GPU-accelerated yang mendukung ERI.

    Saat membuat instans, perhatikan konfigurasi berikut. Untuk parameter lainnya, lihat Buat instans menggunakan wizard.

    • Instance Type: Pilih tipe instans yang mendukung ERI. Untuk informasi lebih lanjut, lihat Batasan. Topik ini menggunakan ebmgn8is sebagai contoh.

    • Images: Saat memilih gambar publik, opsi Auto-install GPU Driver dan Install eRDMA Software Stack dipilih secara default. Setelah instans dibuat, sistem secara otomatis menginstal driver GPU, CUDA, cuDNN, dan tumpukan perangkat lunak eRDMA.

      Dalam contoh ini, sistem operasinya adalah Alibaba Cloud Linux 3.2104 LTS 64-bit, dan versi driver GPU-nya adalah CUDA 12.4.1 / Driver 550.127.08 / CUDNN 9.2.0.82.

      Catatan mengenai instalasi tumpukan perangkat lunak eRDMA

      • Pada tab Public Image, jika Anda memilih sistem operasi dan versi image yang mendukung Install eRDMA Software Stack (artinya Anda dapat memilih opsi Install eRDMA Software Stack), tetapi Anda tidak memilih opsi Install eRDMA Software Stack, Anda dapat menginstal tumpukan perangkat lunak eRDMA dengan menggunakan skrip atau instalasi manual setelah instans dibuat.

      • Pada tab Public Image, jika Anda memilih image yang sistem operasi dan versinya tidak mendukung Install eRDMA Software Stack (artinya, opsi Install eRDMA Software Stack tidak tersedia), Anda tidak dapat mengaktifkan atau menggunakan antarmuka jaringan eRDMA setelah instans dibuat, baik melalui skrip maupun instalasi manual.

      • Pada tab Public Image, jika Anda menghapus centang pada opsi Install eRDMA Software Stack, lebih banyak sistem operasi dan versi akan tersedia.

    • (Opsional) Jumbo Frame: Jika instans yang dipilih mendukung jumbo frames, Anda dapat mengaktifkan fitur ini untuk meningkatkan kinerja komunikasi eRDMA.

      Mengaktifkan jumbo frames memungkinkan Anda menetapkan MTU yang lebih besar. Saat menggunakan NCCL dan protokol low-latency LL128 untuk komunikasi, MTU harus 8500. Jika jumbo frames tidak diaktifkan, MTU sebaiknya 1400. Pengaturan MTU yang salah dapat menyebabkan masalah konsistensi data.
    • ENIs: Saat membuat instans GPU, NIC primer eRDMA dan antarmuka jaringan sekunder eRDMA dibuat secara default pada halaman Bandwidths & Security Groups wizard konfigurasi. Opsi eRDMA Interface di sisi kanan antarmuka jaringan primer dan sekunder dipilih secara otomatis.

      Catatan
      • Anda tidak dapat mengaktifkan atau menonaktifkan eRDMA untuk elastic network interface selama instans sedang berjalan.

      • Dua ENI yang diaktifkan eRDMA secara otomatis diikat ke saluran yang berbeda. Anda tidak perlu menentukan salurannya.

      • NIC primer tidak dapat dilepas dari instans GPU-accelerated. NIC ini dibuat dan dihapus bersamaan dengan instans.

  3. Buka halaman detail instans yang telah dibuat dan klik tab ENIs untuk melihat tipe NIC.

    Jika tipe NIC untuk NIC primer atau ENI sekunder mengandung "(eRDMA Interface)", berarti ENI dengan Elastic RDMA Interface (ERI) yang diaktifkan telah tersambung ke instans.

Konfigurasikan eRDMA untuk instans GPU-accelerated yang sudah ada

  1. Login ke Konsol ECS.

  2. Temukan instans target, buka halaman detailnya, lalu klik tab ENIs untuk memeriksa apakah elastic network interface dengan Elastic RDMA Interface (ERI) yang diaktifkan telah tersambung ke instans.

    Saat eRDMA diaktifkan untuk elastic network interface, kolom NIC Type menampilkan Primary NIC(eRDMA Interface) atau Secondary NIC(eRDMA Interface).

    • Jika ERI sudah diaktifkan, lewati langkah-langkah berikutnya.

    • Jika ERI belum diaktifkan, konfigurasikan untuk NIC primer atau ENI sekunder.

  3. Konfigurasikan eRDMA untuk NIC primer atau ENI sekunder.

    Catatan
    • Untuk tipe instans yang mendukung jumbo frames, Anda dapat mengaktifkan jumbo frames untuk meningkatkan kinerja komunikasi eRDMA.

      Mengaktifkan jumbo frames memungkinkan Anda menetapkan MTU yang lebih besar. Saat menggunakan NCCL dan protokol low-latency LL128 untuk komunikasi, MTU harus 8500. Jika jumbo frames tidak diaktifkan, MTU sebaiknya 1400. Pengaturan MTU yang salah dapat menyebabkan masalah konsistensi data.
    • Jika Anda tidak memilih opsi eRDMA Interface untuk NIC primer maupun ENI sekunder saat pembuatan instans, Anda dapat membuat dan mengaktifkan dua ENI sekunder yang diaktifkan eRDMA setelah instans dibuat.

    • Jika Anda hanya memilih opsi eRDMA Interface untuk salah satu NIC (primer atau sekunder) saat membuat instans GPU-accelerated, Anda hanya dapat membuat dan mengaktifkan satu lagi ENI sekunder yang diaktifkan eRDMA setelah instans dibuat.

    • Konfigurasikan eRDMA untuk NIC primer

      Konfigurasikan eRDMA untuk NIC primer dengan memanggil operasi ModifyNetworkInterfaceAttribute.

      Parameter utama

      Parameter

      Deskripsi

      RegionId

      ID wilayah tempat NIC primer berada.

      NetworkInterfaceId

      ID NIC primer.

      NetworkInterfaceTrafficMode

      Mode komunikasi NIC primer. Nilai yang valid:

      • Standard: mode komunikasi TCP.

      • HighPerformance: mode komunikasi RDMA dengan Elastic RDMA Interface (ERI) yang diaktifkan.

      Dalam prosedur ini, atur nilainya menjadi HighPerformance.

    • Konfigurasikan eRDMA untuk ENI sekunder

      Saat membuat dan menyambungkan ENI yang diaktifkan eRDMA dari Konsol ECS, Anda tidak dapat mengikatnya ke saluran tertentu. Batasan ini dapat mengurangi separuh bandwidth total dari dua ENI yang diaktifkan eRDMA. Oleh karena itu, kami merekomendasikan agar Anda menyambungkan ENI yang diaktifkan eRDMA menggunakan OpenAPI.

      OpenAPI

      • Metode 1: Buat dan sambungkan ENI yang diaktifkan eRDMA

        Setiap instans GPU-accelerated mendukung maksimal dua perangkat eRDMA. Anda harus mengikat perangkat tersebut ke saluran yang berbeda menggunakan parameter NetworkCardIndex.

        1. Buat ENI yang diaktifkan eRDMA.

          Untuk informasi lebih lanjut, lihat CreateNetworkInterface.

          Parameter utama

          Parameter

          Deskripsi

          RegionId

          ID wilayah tempat ENI akan dibuat.

          VSwitchId

          ID vSwitch dalam Virtual Private Cloud (VPC). ENI diberi Alamat IP pribadi dari Blok CIDR vSwitch tersebut.

          SecurityGroupId

          ID grup keamanan untuk ENI. Grup keamanan dan ENI harus berada dalam VPC yang sama.

          NetworkInterfaceTrafficMode

          Mode komunikasi ENI. Nilai yang valid:

          • Standard: mode komunikasi TCP.

          • HighPerformance: mode komunikasi RDMA dengan Elastic RDMA Interface (ERI) yang diaktifkan.

          Dalam prosedur ini, atur nilainya menjadi HighPerformance.

          Setelah panggilan berhasil, catat ID elastic network interface yang dikembalikan, yaitu nilai untuk NetworkInterfaceId.

        2. Sambungkan ENI yang diaktifkan eRDMA.

          Untuk informasi lebih lanjut, lihat AttachNetworkInterface.

          Parameter utama

          Parameter

          Deskripsi

          RegionId

          ID wilayah tempat instans berada.

          NetworkInterfaceId

          ID ENI yang diaktifkan eRDMA yang telah Anda buat.

          InstanceId

          ID instans.

          NetworkCardIndex

          Indeks NIC fisik tempat ENI diikat.

          Saat menyambungkan ENI yang diaktifkan eRDMA ke instans, Anda harus menentukan saluran (indeks NIC fisik) secara manual. Nilai yang valid adalah 0 dan 1. Jika Anda menyambungkan dua ENI yang diaktifkan eRDMA, berikan nilai yang berbeda untuk masing-masing ENI.

          Catatan

          Untuk mencapai bandwidth jaringan maksimum, Anda harus mengikat dua ENI yang diaktifkan eRDMA ke saluran yang berbeda.

          Setelah panggilan API berhasil dan ENI tersambung, Anda dapat melihat dua ENI yang terikat pada tab ENIs di halaman detail instans. NIC Type-nya ditampilkan sebagai Secondary NIC(eRDMA Interface) dan statusnya Bound.

      • Metode 2: Ubah atribut ENI yang sudah ada

        Catatan

        Metode ini tidak mendukung penentuan parameter NetworkCardIndex, yaitu indeks NIC fisik. Jika Anda menggunakan metode ini untuk mengonfigurasi ENI sekunder saat dua ENI yang diaktifkan RDMA telah tersambung, Anda mungkin tidak mencapai bandwidth maksimum.

        Untuk informasi lebih lanjut, lihat ModifyNetworkInterfaceAttribute.

        Parameter utama

        Parameter

        Deskripsi

        RegionId

        ID wilayah tempat ENI sekunder berada.

        NetworkInterfaceId

        ID antarmuka jaringan sekunder.

        NetworkInterfaceTrafficMode

        Mode komunikasi ENI sekunder. Nilai yang valid:

        • Standard: mode komunikasi TCP.

        • HighPerformance: mode komunikasi RDMA dengan Elastic RDMA Interface (ERI) yang diaktifkan.

        Dalam prosedur ini, atur nilainya menjadi HighPerformance.

        Setelah panggilan API berhasil, Anda dapat melihat ENI yang diaktifkan eRDMA yang tersambung pada tab ENIs di halaman detail instans GPU-accelerated.

      Console

      1. Buat ENI sekunder.

        Untuk informasi selengkapnya, lihat Membuat ENI. Saat membuat ENI sekunder dan mengaktifkan ERI untuknya, aktifkan tombol eRDMA Interface. ERI menggunakan pengaturan ENI sekunder, termasuk alamat IP dan aturan grup keamanan yang diterapkan. Pada halaman Create ENI, atur ENI Name, VPC, vSwitch, dan Security Group. Aktifkan tombol eRDMA Interface, konfigurasikan alamat IP pribadi primer dan sekunder sesuai kebutuhan, lalu klik Create ENI.

      2. Sambungkan ENI sekunder ke instans GPU-accelerated.

        Untuk informasi lebih lanjut, lihat Sambungkan ENI sekunder.

        Catatan

        Satu instans dapat memiliki maksimal dua ENI sekunder yang tersambung dengan ERI diaktifkan.

        Setelah Anda menyambungkan ENI sekunder dengan ERI yang diaktifkan ke instans GPU-accelerated, Anda harus menghentikan instans sebelum dapat melepas ENI tersebut. Untuk informasi lebih lanjut, lihat Hentikan instans.

      3. Lakukan koneksi jarak jauh ke instans GPU-accelerated.

        Untuk informasi lebih lanjut, lihat Hubungkan ke instans Linux menggunakan Workbench.

      4. Jalankan perintah ifconfig untuk memeriksa apakah ENI sekunder yang baru disambungkan tersedia.

        Jika ENI sekunder yang baru disambungkan tidak ditampilkan, Anda harus mengonfigurasinya secara manual. Untuk informasi lebih lanjut, lihat Konfigurasikan ENI sekunder. Jika tidak, lewati langkah ini.

        Catatan

        Beberapa image mungkin tidak secara otomatis mengenali ENI sekunder yang baru disambungkan, sehingga Anda perlu mengonfigurasinya dari dalam instans.

  4. (Opsional) Instal tumpukan perangkat lunak Elastic RDMA Interface (ERI) pada instans.

    Jika Anda tidak memilih opsi Install eRDMA Software Stack saat memilih gambar publik, Anda harus menginstal tumpukan perangkat lunak eRDMA menggunakan skrip atau instalasi manual.

    • Instalasi berbasis skrip

      Setelah instans GPU-accelerated dibuat, Anda dapat menggunakan skrip contoh berikut untuk menginstal tumpukan perangkat lunak eRDMA, driver GPU, CUDA, dan cuDNN:

      #!/bin/sh
      #Please input version to install
      DRIVER_VERSION="570.133.20"
      CUDA_VERSION="12.8.1"
      CUDNN_VERSION="9.8.0.87"
      IS_INSTALL_eRDMA="TRUE"
      IS_INSTALL_RDMA="FALSE"
      INSTALL_DIR="/root/auto_install"
      #using .run to install driver and cuda
      auto_install_script="auto_install_v4.0.sh"
      script_download_url=$(curl http://100.100.100.200/latest/meta-data/source-address | head -1)"/opsx/ecs/linux/binary/script/${auto_install_script}"
      echo $script_download_url
      rm -rf $INSTALL_DIR
      mkdir -p $INSTALL_DIR
      cd $INSTALL_DIR && wget -t 10 --timeout=10 $script_download_url && bash ${INSTALL_DIR}/${auto_install_script} $DRIVER_VERSION $CUDA_VERSION $CUDNN_VERSION $IS_INSTALL_RDMA $IS_INSTALL_eRDMA
    • Instalasi manual

      Setelah membuat instans GPU-accelerated, Anda dapat menginstal driver OFED, driver eRDMA, dan driver GPU secara manual, lalu memuat komponen layanan nv_peer_mem.

      1. Lakukan koneksi jarak jauh ke instans GPU-accelerated.

        Untuk informasi lebih lanjut, lihat Hubungkan ke instans Linux menggunakan Workbench.

      2. Instal driver OFED.

        1. Jalankan perintah berikut untuk menginstal paket yang diperlukan.

          Alibaba Cloud Linux 3

          yum install rpm-build flex iptables-devel systemd-devel gdb-headless elfutils-devel python3-Cython bison numactl-devel libmnl-devel libnl3-devel libdb-devel libselinux-devel perl-generators elfutils-libelf-devel kernel-rpm-macros valgrind-devel cmake lsof -y

          CentOS 8.5/8.4/7.9

          • CentOS 8.5/8.4

            wget http://mirrors.cloud.aliyuncs.com/opsx/ecs/linux/binary/erdma/centos8/python3-Cython-0.29.32-3.16.x86_64.rpm
            yum install python3-Cython-0.29.32-3.16.x86_64.rpm -y
            yum install kernel-rpm-macros perl-generators libmnl-devel valgrind-devel rpm-build systemd-devel libdb-devel iptables-devel lsof elfutils-devel bison libnl3-devel libselinux-devel flex cmake numactl-devel -y
          • CentOS 7.9

            sudo yum install  python-devel python3-Cython kernel-rpm-macros perl-generators libmnl-devel valgrind-devel rpm-build systemd-devel libdb-devel iptables-devel lsof elfutils-devel bison libnl3-devel libselinux-devel flex cmake numactl-devel -y

          Ubuntu 24.04/22.04/20.04/18.04

          • Ubuntu 24.04

            sudo apt-get update -y
            sudo apt-get install -y pkg-config
          • Ubuntu 22.04

            sudo apt-get update -y
            sudo apt-get install -y pkg-config
          • Ubuntu 20.04

            sudo apt-get update -y
            sudo apt-get install -y pkg-config
          • Ubuntu 18.04

            sudo apt-get update
            sudo apt-get install -y pkg-config
            sudo apt install -y make dh-python libdb-dev libselinux1-dev flex dpatch swig graphviz chrpath quilt python3-distutils bison libmnl-dev libelf-dev gcc sudo python3
        2. Jalankan perintah berikut untuk mengunduh file konfigurasi paket OFED.

          Alibaba Cloud Linux 3

          sudo wget http://mirrors.cloud.aliyuncs.com/erdma/kernel-fix/MLNX_OFED_SRC-24.10-3.2.5.0.tgz
          sudo tar -xvf MLNX_OFED_SRC-24.10-3.2.5.0.tgz && cd MLNX_OFED_SRC-24.10-3.2.5.0
          sudo wget http://mirrors.cloud.aliyuncs.com/opsx/ecs/linux/binary/erdma/ofed/alibaba_cloud3/3/ofed_alibaba_cloud3.conf
          sudo rm -rf SRPMS/mlnx-ofa_kernel-24.10-OFED.24.10.3.2.5.1.src.rpm
          sudo wget http://mirrors.cloud.aliyuncs.com/erdma/kernel-fix/mlnx-ofa_kernel-24.10-OFED.24.10.3.2.5.1.egs.1.src.rpm  -O SRPMS/mlnx-ofa_kernel-24.10-OFED.24.10.3.2.5.1.egs.1.src.rpm

          CentOS 8.5/8.4/7.9

          • CentOS 8.5/8.4

            cd /root
            wget http://mirrors.cloud.aliyuncs.com/opsx/ecs/linux/binary/erdma/ofed/MLNX_OFED_SRC-5.4-3.5.8.0.tgz
            tar -xvf MLNX_OFED_SRC-5.4-3.5.8.0.tgz && cd MLNX_OFED_SRC-5.4-3.5.8.0/
            wget http://mirrors.cloud.aliyuncs.com/opsx/ecs/linux/binary/erdma/ofed/alibaba_cloud3/3/ofed_alibaba_cloud3.conf
            rm -rf SRPMS/mlnx-ofa_kernel-5.4-OFED.5.4.3.5.8.1.src.rpm
            wget http://mirrors.cloud.aliyuncs.com/erdma/kernel-fix/mlnx-ofa_kernel-5.4-OFED.5.4.3.5.8.1.egs.1.src.rpm  -O SRPMS/mlnx-ofa_kernel-5.4-OFED.5.4.3.5.8.1.egs.1.src.rpm
          • CentOS 7.9

            sudo wget http://mirrors.cloud.aliyuncs.com/opsx/ecs/linux/binary/erdma/ofed/MLNX_OFED_SRC-5.4-3.5.8.0.tgz
            sudo tar -xvf MLNX_OFED_SRC-5.4-3.5.8.0.tgz && cd MLNX_OFED_SRC-5.4-3.5.8.0/
            sudo wget http://mirrors.cloud.aliyuncs.com/opsx/ecs/linux/binary/erdma/ofed/alibaba_cloud3/3/ofed_alibaba_cloud3.conf
            sudo rm -rf SRPMS/mlnx-ofa_kernel-5.4-OFED.5.4.3.5.8.1.src.rpm
            sudo wget http://mirrors.cloud.aliyuncs.com/erdma/kernel-fix/mlnx-ofa_kernel-5.4-OFED.5.4.3.5.8.1.egs.1.src.rpm  -O SRPMS/mlnx-ofa_kernel-5.4-OFED.5.4.3.5.8.1.egs.1.src.rpm

          Ubuntu 24.04/22.04/20.04/18.04

          • Ubuntu 24.04/22.04/20.04

            sudo wget http://mirrors.cloud.aliyuncs.com/erdma/kernel-fix/deb/MLNX_OFED_SRC-debian-24.10-3.2.5.0.tgz
            sudo tar -xvf MLNX_OFED_SRC-debian-24.10-3.2.5.0.tgz && cd MLNX_OFED_SRC-24.10-3.2.5.0 && curl -O http://mirrors.cloud.aliyuncs.com/erdma/kernel-fix/deb/ofed_debian.conf
            sudo rm -rf SOURCES/mlnx-ofed-kernel_24.10.OFED.24.10.3.2.5.1.orig.tar.gz
            wget http://mirrors.cloud.aliyuncs.com/erdma/kernel-fix/deb/mlnx-ofed-kernel_24.10.egs.1.OFED.24.10.3.2.5.1.orig.tar.gz -O SOURCES/mlnx-ofed-kernel_24.10.egs.1.OFED.24.10.3.2.5.1.orig.tar.gz
          • Ubuntu 18.04

            sudo wget http://mirrors.cloud.aliyuncs.com/opsx/ecs/linux/binary/erdma/ofed/MLNX_OFED_SRC-debian-5.4-3.6.8.1.tgz
            sudo tar -xvf MLNX_OFED_SRC-debian-5.4-3.6.8.1.tgz && cd MLNX_OFED_SRC-5.4-3.6.8.1 && curl -O http://mirrors.cloud.aliyuncs.com/erdma/kernel-fix/deb/ofed_debian.conf
            sudo rm -rf SOURCES/mlnx-ofed-kernel_5.4.orig.tar.gz
            sudo wget http://mirrors.cloud.aliyuncs.com/erdma/kernel-fix/deb/mlnx-ofed-kernel_5.4.egs.orig.tar.gz -O SOURCES/mlnx-ofed-kernel_5.4.egs.orig.tar.gz
        3. Jalankan perintah berikut untuk menginstal driver OFED sesuai sistem operasi Anda.

          Alibaba Cloud Linux 3

          sudo ./install.pl --config ./ofed_alibaba_cloud3.conf --distro RHEL8
          sudo dracut -f

          CentOS 8.5/8.4/7.9

          • CentOS 8.5/8.4

            ./install.pl --config ./ofed_alibaba_cloud3.conf --distro RHEL8 
          • CentOS 7.9

            sudo ./install.pl --config ./ofed_alibaba_cloud3.conf --distro RHEL7 

          Ubuntu 24.04/22.04/20.04/18.04

          Ganti ${VERSION_ID} dengan versi Ubuntu Anda, misalnya 24.04.

          sudo curl -O http://mirrors.cloud.aliyuncs.com/erdma/kernel-fix/deb/ofed_debian.conf
          sudo ./install.pl --config ./ofed_debian.conf --without-dkms --build-only --kernel-only 
          sudo /usr/bin/dpkg -i --force-confmiss DEBS/ubuntu`lsb_release -s -r`/x86_64/*.deb
          update-initramfs -u
        4. Jalankan perintah berikut untuk memeriksa apakah direktori /usr/src/ofa_kernel/`uname -r` ada.

          • Jika direktori tersebut ada, lanjutkan ke langkah berikutnya.

            ls /usr/src/ofa_kernel/`uname -r`
          • Jika direktori tersebut tidak ada, jalankan perintah berikut untuk membuat tautan simbolik, lalu lanjutkan ke langkah berikutnya.

            sudo ln -s /usr/src/ofa_kernel/default /usr/src/ofa_kernel/`uname -r`
        5. Restart instans.

          Setelah driver OFED diinstal, Anda harus merestart instans agar modul kernel baru berlaku. Untuk informasi lebih lanjut, lihat Restart instans.

      3. Instal driver eRDMA.

        1. Unduh dan instal driver eRDMA.

          sudo wget http://mirrors.cloud.aliyuncs.com/erdma/env_setup.sh
          sudo bash env_setup.sh --egs
        2. Jalankan perintah berikut untuk memverifikasi instalasi driver eRDMA menggunakan tool eadm.

          eadm ver

          Output yang mirip dengan berikut menunjukkan instalasi berhasil.

          [root@xxx ~]# eadm ver
          Query kernel driver version: 0.2.35
          Catatan

          Topik ini menggunakan versi driver 0.2.35 sebagai contoh. Jika muncul error "command not found" atau perintah gagal dijalankan, instal ulang driver eRDMA.

      4. Instal driver GPU.

        Untuk informasi lebih lanjut, lihat Instal driver NVIDIA GPU secara manual pada instans Linux.

      5. Muat komponen layanan nv_peer_mem.

        • (Direkomendasikan) Driver GPU 470.xx.xx atau yang lebih baru

          Untuk mengaktifkan GPUDirect RDMA, Anda harus memuat komponen layanan nv_peer_mem. Driver GPU NVIDIA 470.xx.xx dan yang lebih baru sudah menyertakan komponen ini secara pra-instal, dan Anda dapat langsung menjalankan perintah berikut untuk memuat modul nvidia_peermem.

          sudo modprobe nvidia_peermem
          # Anda dapat menjalankan perintah lsmod|grep nvidia untuk memeriksa apakah modul nvidia_peermem telah dimuat.
          Catatan

          Jika instans direstart, Anda harus memuat ulang modul nvidia_peermem.

        • Driver GPU sebelum versi 470.xx.xx

          Anda harus mengunduh dan menginstal komponen layanan secara manual. Kode berikut menunjukkan cara mengunduh, mengompilasi, dan menginstal komponen tersebut.

          sudo git clone https://github.com/Mellanox/nv_peer_memory.git
          # Compile and install nv_peer_mem.ko.
          cd nv_peer_memory && make
          cp nv_peer_mem.ko /lib/modules/$(uname -r)/kernel/drivers/video
          depmod -a
          modprobe nv_peer_mem
          # Anda dapat menjalankan perintah lsmod|grep nv_peer_mem untuk memeriksa hasilnya.
          service nv_peer_mem start
  1. Verifikasi bandwidth.

    1. Lakukan koneksi jarak jauh ke instans GPU-accelerated.

      Untuk informasi selengkapnya, lihat Menyambung ke instans Linux dengan menggunakan Workbench.

    2. Jalankan perintah berikut untuk memeriksa apakah dua perangkat eRDMA berfungsi sebagaimana mestinya.

      sudo ibv_devinfo

      Secara default, skrip instalasi driver eRDMA menginstal versi driver terbaru. Jika Anda perlu menginstal versi driver eRDMA yang lebih lama, ajukan tiket untuk bantuan.

      Topik ini menggunakan driver eRDMA versi 0.2.37 atau yang lebih baru sebagai contoh. Output berikut menunjukkan dua perangkat eRDMA berfungsi dengan benar. Perangkat berada dalam kondisi normal jika state port-nya adalah PORT_ACTIVE.

      [ecs-xxx...xxx4gnd0hZ ~]$ sudo ibv_devinfo
      hca_id:	erdma_0
      	transport:			eRDMA (0)
      	fw_ver:				0.2.0
      	node_guid:			0216:3eff:fe36:1eb4
      	sys_image_guid:			0216:3eff:fe36:1eb4
      	vendor_id:			0x1ded
      	vendor_part_id:			4223
      	hw_ver:				0x0
      	phys_port_cnt:			1
      		port:	1
      			state:			PORT_ACTIVE (4)
      			max_mtu:		1024 (3)
      			active_mtu:		1024 (3)
      			sm_lid:			0
      			port_lid:		0
      			port_lmc:		0x00
      			link_layer:		Ethernet
      hca_id:	erdma_1
      	transport:			eRDMA (0)
      	fw_ver:				0.2.0
      	node_guid:			0216:3eff:fe43:9c2a
      	sys_image_guid:			0216:3eff:fe43:9c2a
      	vendor_id:			0x1ded
      	vendor_part_id:			4223
      	hw_ver:				0x0
      	phys_port_cnt:			1
      		port:	1
      			state:			PORT_ACTIVE (4)
      			max_mtu:		1024 (3)
      			active_mtu:		1024 (3)
      			sm_lid:			0
      			port_lid:		0
      			port_lmc:		0x00
      			link_layer:		Ethernet
      Catatan

      Jika state port perangkat eRDMA adalah invalid state, perangkat tersebut berada dalam kondisi abnormal. Kami menyarankan Anda memeriksa terlebih dahulu apakah ENI sekunder dikonfigurasi dengan benar. Misalnya, jalankan perintah ifconfig untuk memverifikasi bahwa konfigurasi dan alamat IP untuk semua NIC tersedia.

    3. Jalankan perintah berikut untuk menginstal tool perftest.

      sudo yum install perftest -y
    4. Jalankan perintah berikut untuk menguji apakah bandwidth jaringan RDMA sesuai ekspektasi perangkat keras.

      1. Pada server, jalankan perintah berikut untuk mendengarkan permintaan koneksi dari klien.

        sudo ib_write_bw -d erdma_0 -F -q 16 --run_infinitely --report_gbits -p 18515
      2. Untuk mengirim permintaan koneksi dan paket data, jalankan perintah berikut pada klien.

        sudo ib_write_bw -d erdma_0 -F -q 16 --run_infinitely --report_gbits -p 18515 server_ip

        Dalam perintah ini, server_ip adalah Alamat IP pribadi ENI yang diaktifkan eRDMA pada instans server. Untuk menemukan alamat IP ini, lihat Lihat alamat IP.

      Catatan

      Tolok ukur perftest di atas menggunakan satu NIC untuk komunikasi. Jika layanan Anda memerlukan dua NIC untuk komunikasi, Anda harus menjalankan dua proses perftest. Kemudian, gunakan parameter -d untuk menentukan perangkat eRDMA untuk setiap proses dan parameter -p untuk menentukan port komunikasi yang berbeda. Untuk informasi lebih lanjut, lihat detail perftest.

      Hasil pengujian mencakup bandwidth rata-rata. Output yang mirip dengan berikut menunjukkan komunikasi eRDMA berjalan normal.

      Detail output perintah

      ---------------------------------------------------------------------------------------
                          RDMA_Write BW Test
       Dual-port       : OFF          Device         : erdma_0
       Number of qps   : 16           Transport type : IB
       Connection type : RC           Using SRQ      : OFF
       PCIe relax order: ON
       ibv_wr* API     : OFF
       TX depth        : 128
       CQ Moderation   : 1
       Mtu             : 1024[B]
       Link type       : Ethernet
       GID index       : 1
       Max inline data : 0[B]
       rdma_cm QPs     : OFF
       Data ex. method : Ethernet
      ---------------------------------------------------------------------------------------
       local address: LID 0000 QPN 0x0002 PSN 0xa66b22 RKey 0x000100 VAddr 0x007f09922fd000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x0003 PSN 0x3b9364 RKey 0x000100 VAddr 0x007f099230d000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x0004 PSN 0x6b1ade RKey 0x000100 VAddr 0x007f099231d000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x0005 PSN 0x8c83d5 RKey 0x000100 VAddr 0x007f099232d000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x0006 PSN 0x1335c4 RKey 0x000100 VAddr 0x007f099233d000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x0007 PSN 0xc451d6 RKey 0x000100 VAddr 0x007f099234d000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x0008 PSN 0x4edd7d RKey 0x000100 VAddr 0x007f099235d000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x0009 PSN 0x93d832 RKey 0x000100 VAddr 0x007f099236d000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x000a PSN 0x16d2ee RKey 0x000100 VAddr 0x007f099237d000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x000b PSN 0x6820d8 RKey 0x000100 VAddr 0x007f099238d000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x000c PSN 0x9419c RKey 0x000100 VAddr 0x007f099239d000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x000d PSN 0xedd7ff RKey 0x000100 VAddr 0x007f09923ad000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x000e PSN 0x70ff7f RKey 0x000100 VAddr 0x007f09923bd000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x000f PSN 0x8ccc0 RKey 0x000100 VAddr 0x007f09923cd000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x0010 PSN 0x33327e RKey 0x000100 VAddr 0x007f09923dd000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       local address: LID 0000 QPN 0x0011 PSN 0x9b836a RKey 0x000100 VAddr 0x007f09923ed000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:146
       remote address: LID 0000 QPN 0x0002 PSN 0x651666 RKey 0x000100 VAddr 0x007f5011099000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x0003 PSN 0xf99758 RKey 0x000100 VAddr 0x007f50110a9000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x0004 PSN 0xd001c2 RKey 0x000100 VAddr 0x007f50110b9000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x0005 PSN 0x23aae9 RKey 0x000100 VAddr 0x007f50110c9000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x0006 PSN 0xfad148 RKey 0x000100 VAddr 0x007f50110d9000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x0007 PSN 0xca210a RKey 0x000100 VAddr 0x007f50110e9000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x0008 PSN 0xe0cea1 RKey 0x000100 VAddr 0x007f50110f9000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x0009 PSN 0x8ddc86 RKey 0x000100 VAddr 0x007f5011109000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x000a PSN 0xde22b2 RKey 0x000100 VAddr 0x007f5011119000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x000b PSN 0x9f2f4c RKey 0x000100 VAddr 0x007f5011129000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x000c PSN 0x66a100 RKey 0x000100 VAddr 0x007f5011139000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x000d PSN 0x934d93 RKey 0x000100 VAddr 0x007f5011149000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x000e PSN 0xf70783 RKey 0x000100 VAddr 0x007f5011159000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x000f PSN 0xfdce74 RKey 0x000100 VAddr 0x007f5011169000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x0010 PSN 0xfca422 RKey 0x000100 VAddr 0x007f5011179000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
       remote address: LID 0000 QPN 0x0011 PSN 0xaa3e3e RKey 0x000100 VAddr 0x007f5011189000
       GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:01:149
      ---------------------------------------------------------------------------------------
       #bytes     #iterations    BW peak[Gb/sec]    BW average[Gb/sec]   MsgRate[Mpps]
       65536      910045           0.00               95.42              0.182003

Uji dan verifikasi

Topik ini menggunakan nccl-tests sebagai contoh untuk menunjukkan cara menguji kinerja aplikasi instans GPU dengan jaringan eRDMA. Untuk informasi lebih lanjut, lihat nccl-tests.

  1. Instal NCCL dengan perintah berikut.

    Catatan

    Anda juga dapat mengunduh paket instalasi dari situs web resmi NVIDIA NCCL lalu menginstalnya.

    Contoh ini menginstal NCCL ke /usr/local/nccl. Anda dapat menentukan path berbeda sesuai kebutuhan.

    # build nccl
    cd /root
    git clone https://github.com/NVIDIA/nccl.git
    cd nccl/
    make -j src.lib PREFIX=/usr/local/nccl
    make install PREFIX=/usr/local/nccl
  2. Verifikasi instalasi NCCL dan keberadaan library libnccl.so dengan menjalankan perintah berikut.

    # Check for NCCL
    ls /usr/local/nccl
    # Check for the libnccl.so library
    ls /usr/local/nccl/lib
  3. Instal Open MPI dan kompilator yang diperlukan dengan perintah berikut.

    wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.3.tar.gz
    tar -xzf openmpi-4.1.3.tar.gz
    cd openmpi-4.1.3
    ./configure --prefix=/usr/local/openmpi
    make -j && make install
  4. Atur variabel lingkungan.

    NCCL_HOME=/usr/local/nccl
    CUDA_HOME=/usr/local/cuda
    MPI_HOME=/usr/local/openmpi
    export LD_LIBRARY_PATH=${NCCL_HOME}/lib:${CUDA_HOME}/lib64:${MPI_HOME}/lib:$LD_LIBRARY_PATH
    export PATH=${CUDA_HOME}/bin:${MPI_HOME}/bin:$PATH

    Perintah di atas menggunakan path contoh berikut: NCCL_HOME mengarah ke path instalasi NCCL (/usr/local/nccl), CUDA_HOME mengarah ke path instalasi CUDA (/usr/local/cuda), dan MPI_HOME mengarah ke path instalasi Open MPI (/usr/local/openmpi). Ganti path tersebut dengan path instalasi aktual Anda.

    Setelah mengedit file ~/.bashrc untuk mengatur variabel PATH dan LD_LIBRARY_PATH, jalankan perintah berikut untuk menerapkan perubahan.

    source ~/.bashrc
  5. Unduh dan kompilasi kode uji.

    git clone https://github.com/NVIDIA/nccl-tests
    cd nccl-tests/
    make MPI=1 CUDA_HOME=/usr/local/cuda MPI_HOME=/usr/local/openmpi
  6. Buat akses SSH tanpa password antar instans.

    Untuk membuat akses SSH tanpa password, buat kunci publik pada host1 dan salin ke host2.

    # On host1
    ssh-keygen
    ssh-copy-id -i ~/.ssh/id_rsa.pub ${host2}
    # On host1, run this command to test the connection. A successful login without a password prompt confirms the setup.
    ssh root@${host2}
  7. Uji kinerja all-reduce NCCL dengan perintah berikut.

    # Replace host1 and host2 with the IP addresses of your instances.
    mpirun --allow-run-as-root -np 16 -npernode 8 -H host1:8,host2:8 \
    --bind-to none \
    -mca btl_tcp_if_include eth0 \
    -x NCCL_SOCKET_IFNAME=eth0 \
    -x NCCL_GIN_TYPE=0 \
    -x NCCL_DEBUG=INFO \
    -x LD_LIBRARY_PATH \
    -x PATH \
    ./build/all_reduce_perf -b 4M -e 4M -f 2 -g 1 -t 1 -n 20

Verifikasi konfigurasi eRDMA

Setelah mengonfigurasi eRDMA, gunakan daftar periksa berikut untuk memverifikasi bahwa fitur tersebut berfungsi dengan benar.

Bagian ini berlaku untuk tipe Instans Elastic Bare Metal GPU berikut yang mendukung eRDMA: ecs.ebmgn9g, ecs.ebmgn9gc, ecs.ebmgn9ge, ecs.ebmgn8is, dan ecs.ebmgn8v.

Skrip pemeriksaan satu-klik (Direkomendasikan)

Gunakan skrip satu-klik ini untuk memverifikasi semua item berikut dengan cepat:

wget http://mirrors.cloud.aliyuncs.com/erdma/tools/env_check.py
python3 env_check.py -s egs_l20n

Jika semua pemeriksaan mengembalikan PASS, lingkungan telah dikonfigurasi dengan benar. Untuk mendapatkan output dalam format JSON, tambahkan parameter --json.

Catatan

Skrip ini tidak memeriksa apakah GPU Access Control Services (ACS) dinonaktifkan; Anda harus memverifikasi hal ini secara manual. Selain itu, Anda harus mengatur variabel lingkungan NCCL_GRAPH_FILE saat menjalankan NCCL.

Kategori

Item

Metode verifikasi

Deskripsi

Konfigurasi antarmuka jaringan

Instans memiliki dua antarmuka jaringan eRDMA

Jalankan perintah ibv_devices dan verifikasi bahwa output berisi dua perangkat: erdma_0 dan erdma_1.

Saat membuat instans dari konsol, dua antarmuka jaringan eRDMA dikonfigurasi secara default. Tidak diperlukan tindakan tambahan.

Status antarmuka jaringan adalah PORT_ACTIVE

Jalankan perintah berikut dan verifikasi bahwa status semua port adalah PORT_ACTIVE:

ibv_devinfo | grep state

Jika pemeriksaan gagal, jalankan perintah ifconfig untuk memverifikasi bahwa perangkat Ethernet yang sesuai berada dalam status UP.

Dua antarmuka jaringan terikat ke node NUMA yang berbeda

Jalankan perintah berikut dan verifikasi bahwa nilai yang dikembalikan adalah 0 dan 1:

cat /sys/class/infiniband/erdma_0/device/numa_node
cat /sys/class/infiniband/erdma_1/device/numa_node

Jika kedua perintah mengembalikan 0, antarmuka jaringan sekunder terikat ke node NUMA yang salah. Untuk memperbaikinya, ikuti langkah-langkah berikut:

  1. Lepaskan antarmuka jaringan sekunder.

  2. Panggil operasi API AttachNetworkInterface untuk menyambungkan kembali antarmuka jaringan sekunder, dan atur parameter NetworkCardIndex menjadi 1.

Jumbo frames diaktifkan

Jalankan perintah berikut dan verifikasi bahwa MTU antarmuka jaringan adalah 4096:

ibv_devinfo | grep mtu

Jika MTU bukan 4096, aktifkan jumbo frames lalu jalankan pemeriksaan lagi.

Algoritma pengendalian kemacetan MPCC diaktifkan

Jalankan perintah berikut untuk memeriksa algoritma pengendalian kemacetan:

eadm conf -d erdma_0 -t cc
eadm conf -d erdma_1 -t cc

Driver eRDMA versi 1.5.6 dan yang lebih baru menggunakan algoritma MPCC secara default.

Jika tidak, jalankan perintah berikut untuk mengaktifkannya:

eadm conf -d erdma_0 -t cc -v 4
eadm conf -d erdma_1 -t cc -v 4

Tidak ada konflik alamat IP untuk antarmuka jaringan eRDMA

Jalankan perintah show_gids dan verifikasi bahwa alamat IP antarmuka jaringan eRDMA bersifat unik.

Masalah ini sering terjadi saat menggunakan plugin jaringan Terway untuk ACK. Jika Anda mengalami masalah ini, lihat konfigurasi daftar putih Terway.

NCCL

Tentukan file topologi NCCL (hanya diperlukan untuk tipe instans ecs.ebmgn9g, ecs.ebmgn9gc, dan ecs.ebmgn9ge)

Simpan file topologi (l20n.xml) ke path lokal pada instans, misalnya /root/l20n.xml.

Sebelum memulai tugas NCCL, atur variabel lingkungan berikut:

export NCCL_GRAPH_FILE=/root/l20n.xml

URL unduhan file topologi:

GPU

Nonaktifkan ACS GPU untuk meningkatkan komunikasi P2P (hanya untuk tipe instans ecs.ebmgn9g, ecs.ebmgn9gc, dan ecs.ebmgn9ge)

Jalankan perintah berikut untuk memeriksa status ACS:

lspci -vvv | grep ACSCtl

Jika SrcValid- ditampilkan, ACS dinonaktifkan dan tidak diperlukan tindakan.

Jika SrcValid+ ditampilkan, jalankan skrip berikut untuk menonaktifkan ACS secara manual:

for BDF in $(lspci -d "*:*:*" | awk '{print $1}'); do
  sudo setpci -v -s ${BDF} ECAP_ACS+0x6.w > /dev/null 2>&1
  if [ $? -ne 0 ]; then
    continue
  fi
  sudo setpci -v -s ${BDF} ECAP_ACS+0x6.w=0000
done

Referensi

  • Konfigurasikan eRDMA pada instans ECS tingkat enterprise untuk layanan jaringan RDMA elastis dengan latensi ultra-rendah dan throughput tinggi tanpa mengubah jaringan bisnis Anda. Untuk informasi lebih lanjut, lihat Aktifkan eRDMA pada instans tingkat enterprise.

  • Untuk aplikasi yang memerlukan transfer data skala besar dan komunikasi jaringan berkinerja-tinggi dalam kontainer, Anda dapat mengintegrasikan eRDMA ke dalam lingkungan kontainer (Docker). Hal ini memungkinkan aplikasi kontainer melewati kernel OS dan langsung mengakses perangkat eRDMA fisik host, sehingga memberikan transfer data lebih cepat dan komunikasi lebih efisien. Untuk informasi lebih lanjut, lihat Aktifkan eRDMA dalam kontainer (Docker).

  • Untuk memantau atau mendiagnosis eRDMA dan melacak status real-time-nya, lihat Pantau dan diagnosa eRDMA.