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
Enormous pages telah dikonfigurasi untuk instance tersebut. Untuk informasi lebih lanjut, lihat Cara menyesuaikan memori enormous page dari instance Linux.
DPDK telah diinstal pada instance tersebut. Anda dapat mengunjungi halaman Data Plane Development Kit (DPDK*) untuk informasi tentang DPDK.
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/startProsedur
Sambungkan ke instance ECS biasa atau instance ECS bare metal.
Untuk informasi lebih lanjut, lihat Gunakan Workbench untuk menyambung ke instance Linux melalui SSH.
Periksa konfigurasi GRand Unified Bootloader (GRUB).
cat /proc/cmdlineJika konfigurasi GRUB mencakup parameter
intel_iommu=ondan tidak mencakup parameteriommu=pt, lanjutkan ke Langkah 4.Jika tidak, modifikasi konfigurasi GRUB untuk memastikan bahwa konfigurasi mencakup parameter
intel_iommu=ondan tidak mencakup parameteriommu=pt, lalu lanjutkan ke Langkah 3.Gambar berikut menunjukkan contoh konfigurasi GRUB yang tidak mencakup parameter
intel_iommu=onatauiommu=pt. Dalam kasus ini, Anda harus menambahkan parameterintel_iommu=onke konfigurasi GRUB.
Tambahkan parameter
intel_iommu=onke file konfigurasi GRUB/etc/default/grub.Jalankan perintah berikut untuk membuka file konfigurasi GRUB:
sudo vim /etc/default/grubTekan tombol
Iuntuk masuk ke mode Sisip, tambahkanintel_iommu=ondi akhir baris untuk GRUB_CMDLINE_LINUX, lalu simpan file konfigurasi.Gambar berikut menunjukkan contoh file konfigurasi yang telah dimodifikasi.

Jalankan perintah berikut untuk menerapkan konfigurasi yang telah dimodifikasi:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Jalankan perintah berikut untuk me-restart instance. Kemudian, sambungkan kembali ke instance.
rebootPeringatanOperasi 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.
Jalankan perintah berikut untuk menginstal driver VFIO dan VFIO-PCI:
sudo modprobe vfio && \ sudo modprobe vfio-pciJalankan perintah berikut untuk mengaktifkan mode no-IOMMU:
sudo bash -c 'echo 1 > /sys/module/vfio/parameters/enable_unsafe_noiommu_mode'Jalankan perintah berikut untuk melihat dan mencatat nilai bus-info dari NIC yang diikat ke instance:
ethtool -i ethXGanti ethX dengan ID NIC yang diikat ke instance. Dalam contoh ini, eth1 digunakan.

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.0CatatanDalam 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 --statusuntuk melihat status pengikatan NIC. Keluaran perintah berikut menunjukkan bahwa NIC dengan nilai bus-info0000:00:06.0diikat ke driver VFIO-PCI.
Beralihlah ke direktori
build/appdi 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 -aiJika 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-wmenentukan nilai bus-info NIC. Dalam contoh ini, -w disetel ke 0000:00:06.0.total-num-mbufsmenentukan 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.
