全部产品
Search
文档中心

Elastic Compute Service:Mengganti Driver UIO dengan Driver VFIO

更新时间:Jul 02, 2025

Topik ini menjelaskan cara mengganti driver Userspace I/O (UIO) dengan driver Virtual Function I/O (VFIO) untuk menyelesaikan pengecualian yang terjadi dalam aplikasi Data Plane Development Kit (DPDK) pada waktu proses di Instance ECS Elastic Compute Service (ECS).

Prasyarat

Informasi Latar Belakang

Jika aplikasi DPDK diterapkan pada instance tipe generasi keenam (seperti tipe instance g6, c6, dan r6) atau yang lebih baru, pengecualian mungkin terjadi saat menjalankan aplikasi tersebut. Sebagai contoh, jika Anda menggunakan Pktgen-DPDK untuk menguji laju penerusan paket suatu instance, port igb_uio tempat pengontrol antarmuka jaringan (NIC) diikat mungkin tidak ditemukan dan pesan kesalahan berikut mungkin dilaporkan. Untuk menyelesaikan pengecualian yang terjadi dalam aplikasi DPDK, Anda dapat mengganti driver UIO dengan driver VFIO.

EAL: eal_parse_sysfs_value(): tidak dapat membuka nilai sysfs /sys/bus/pci/devices/0000:00:06.0/uio/uio0/portio/port0/start

Prosedur

  1. Sambungkan ke instance ECS biasa atau instance ECS bare metal.

    Untuk informasi lebih lanjut, lihat Gunakan Workbench untuk menyambung ke instance Linux melalui SSH.

  2. Periksa konfigurasi GRand Unified Bootloader (GRUB).

    cat /proc/cmdline
    • Jika konfigurasi GRUB mencakup parameter intel_iommu=on dan tidak mencakup parameter iommu=pt, lanjutkan ke Langkah 4.

    • Jika tidak, modifikasi konfigurasi GRUB untuk memastikan bahwa konfigurasi mencakup parameter intel_iommu=on dan tidak mencakup parameter iommu=pt, lalu lanjutkan ke Langkah 3.

      Gambar berikut menunjukkan contoh konfigurasi GRUB yang tidak mencakup parameter intel_iommu=on atau iommu=pt. Dalam kasus ini, Anda harus menambahkan parameter intel_iommu=on ke konfigurasi GRUB.

      image.png

  3. Tambahkan parameter intel_iommu=on ke file konfigurasi GRUB /etc/default/grub.

    1. Jalankan perintah berikut untuk membuka file konfigurasi GRUB:

      sudo vim /etc/default/grub
    2. Tekan tombol I untuk masuk ke mode Sisip, tambahkan intel_iommu=on di akhir baris untuk GRUB_CMDLINE_LINUX, lalu simpan file konfigurasi.

      Gambar berikut menunjukkan contoh file konfigurasi yang telah dimodifikasi.grub-config

    3. Jalankan perintah berikut untuk menerapkan konfigurasi yang telah dimodifikasi:

      sudo grub2-mkconfig -o /boot/grub2/grub.cfg

      image.png

    4. Jalankan perintah berikut untuk me-restart instance. Kemudian, sambungkan kembali ke instance.

      reboot
      Peringatan

      Operasi restart akan menghentikan instance selama periode singkat dan mungkin mengganggu layanan yang sedang berjalan pada instance. Kami menyarankan Anda me-restart instance selama jam-jam sepi.

  4. Jalankan perintah berikut untuk menginstal driver VFIO dan VFIO-PCI:

    sudo modprobe vfio && \
    sudo modprobe vfio-pci
  5. Jalankan perintah berikut untuk mengaktifkan mode no-IOMMU:

    sudo bash -c 'echo 1 > /sys/module/vfio/parameters/enable_unsafe_noiommu_mode'
  6. Jalankan perintah berikut untuk melihat dan mencatat nilai bus-info dari NIC yang diikat ke instance:

    ethtool -i ethX

    Ganti ethX dengan ID NIC yang diikat ke instance. Dalam contoh ini, eth1 digunakan.bus-info

  7. Beralihlah ke direktori usertools di bawah direktori instalasi DPDK. Kemudian, jalankan perintah berikut dengan nilai bus-info NIC untuk mengikat NIC ke driver VFIO-PCI:

    sudo ./dpdk-devbind.py -b vfio-pci 0000:00:06.0
    Catatan

    Dalam contoh ini, nilai bus-info NIC adalah 0000:00:06.0. Dalam skenario nyata, gantilah dengan nilai bus-info NIC Anda.

    Jalankan perintah ./dpdk-devbind.py --status untuk melihat status pengikatan NIC. Keluaran perintah berikut menunjukkan bahwa NIC dengan nilai bus-info 0000:00:06.0 diikat ke driver VFIO-PCI.bound-status

  8. Beralihlah ke direktori build/app di bawah direktori instalasi DPDK dan jalankan salah satu perintah berikut berdasarkan versi DPDK untuk memulai DPDK.

    • Jika versi DPDK adalah 18.02 atau lebih baru, jalankan perintah berikut:

      sudo ./testpmd -w 0000:00:06.0 -c 0x3 -- --total-num-mbufs=2048 -ai
    • Jika versi DPDK lebih lama dari 18.02, jalankan perintah berikut:

      sudo ./testpmd -w 0000:00:06.0 -c 0x3 -- --total-num-mbufs=2048 --disable-hw-vlan -ai
    Catatan

    -w menentukan nilai bus-info NIC. Dalam contoh ini, -w disetel ke 0000:00:06.0. total-num-mbufs menentukan ukuran enormous pages. Dalam contoh ini, total-num-mbufs disetel ke 2048. Dalam skenario nyata, konfigurasikan parameter ini berdasarkan kebutuhan bisnis Anda.

    Keluaran perintah berikut menunjukkan bahwa DPDK telah dimulai.run-dpdk