tencent cloud

Cloud Virtual Machine

Menguji dengan DPDK

Download
Mode fokus
Ukuran font
Terakhir diperbarui: 2026-08-07 10:13:17
Diterjemahkan oleh AI

Skenario Operasi

Dokumen ini menjelaskan cara melakukan pengujian kinerja jaringan throughput tinggi CVM dengan metode DPDK.

Langkah-langkah Operasi

Langkah 1: Persiapan Dan Instalasi Lingkungan

Bab ini akan memandu Anda menyelesaikan penyiapan lingkungan pengujian DPDK, termasuk mengunduh kode sumber, mengekstrak, menginstal pustaka dependensi, dan mengompilasi.

Persiapan Lingkungan

CVM membutuhkan kemampuan akses jaringan publik. Anda dapat memilih untuk mengalokasikan IP Publik saat membuat CVM, atau mengonfigurasi IP Publik Elastis untuknya setelah CVM dibuat.
CVM dikonfigurasi dengan beberapa kartu jaringan. Disarankan untuk menggunakan eth0 untuk pengujian dan menggunakan kartu jaringan lainnya untuk login jarak jauh.
Operasi terkait perlu dilakukan dengan hak akses root sistem. Mohon ajukan permohonan untuk izin terkait terlebih dahulu.
Panduan operasi berikut berlaku untuk sistem operasi TencentOS 3.0 dan yang lebih tinggi.
Siapkan 2 server pengujian, masing-masing berperan sebagai penerima dan pengirim.
Untuk cara membuat instance, silakan lihat Membuat Instance melalui Halaman Pembelian.
Untuk cara login ke instance, silakan lihat Menghubungkan Instance Linux dengan OrcaTerm (Direkomendasikan).

Unduh Dan Ekstrak Paket Sumber DPDK

Gunakan perintah wget untuk mengunduh paket terkompresi kode sumber DPDK 23.11 dari repositori resmi dan mengekstraknya.
Keterangan:
Operasi selanjutnya harap dilakukan di dalam direktori setelah DPDK diekstrak.
wget https://fast.dpdk.org/rel/dpdk-23.11.tar.gz
tar -xf dpdk-23.11.tar.gz
cd dpdk-23.11

Instalasi Pustaka Ketergantungan Dan Kompilasi

Instal pustaka dependensi dan alat kompilasi yang diperlukan.
Instal pustaka dependensi numactl-devel (memerlukan hak akses root).
yum install numactl-devel -y
Instal alat pembangunan Python.
pip3 install meson ninja pyelftools
Gunakan meson untuk membangun proyek (mengatur jumlah inti logika maksimum menjadi 1024).
meson build -Dmax_lcores=1024
Gunakan ninja untuk mengompilasi proyek.
ninja -C build
Perhatian:
Jika server pengujian yang Anda gunakan adalah tipe instans setelah Standar SA4 dan CPU memiliki spesifikasi tertinggi, silakan lihat Penanganan Skenario Khusus dan tambahkan langkah konfigurasi terkait.

Langkah 2: Pengikatan Modul Driver Kernel

DPDK perlu mengikat modul driver kernel khusus untuk mengambil alih perangkat kartu jaringan.

Unduh Modul UIO

Kloning kode modul kernel dari repositori resmi DPDK:
git clone http://dpdk.org/git/dpdk-kmods
Atau gunakan protokol git (opsi cadangan).
git clone git://dpdk.org/dpdk-kmods

Kompilasi Modul UIO

Masuk ke direktori igb_uio dan lakukan kompilasi.
cd ./dpdk-kmods/linux/igb_uio
make

Memuat Modul UIO

Muat modul kernel uio dan igb_uio (memerlukan hak akses root).
modprobe uio
insmod ./dpdk-kmods/linux/igb_uio/igb_uio.ko

Kueri Dan Catat Alamat PCI Kartu Jaringan

Sebelum mengikat kartu jaringan, Anda perlu memperoleh dan mencatat alamat PCI dari kartu jaringan target. Jalankan perintah berikut untuk melihat dan mencatat informasi perangkat semua kartu jaringan:
ethtool -i eth0 | grep bus-info


Ikat Kartu Jaringan Ke Driver UIO

Gunakan alat yang disediakan oleh DPDK untuk mengikat kartu jaringan ke driver igb_uio.
1. Matikan kartu jaringan.
Perhatian:
Sebelum mematikan kartu jaringan, periksa apakah Anda saat ini sedang login jarak jauh ke CVM melalui IP Elastic Network Interface lainnya. Jika Anda menggunakan eth0 untuk login jarak jauh, hal ini akan menyebabkan koneksi terputus.
ifconfig eth0 down
2. Ikat kartu jaringan ke driver igb_uio (perhatikan untuk menggantinya dengan alamat PCI yang sebenarnya).
./usertools/dpdk-devbind.py --bind=igb_uio 0000:02:01.0 #0000:02:01.0 perlu diganti dengan alamat PCI kartu jaringan Anda yang sebenarnya

Langkah 3: Konfigurasi Memori Halaman Besar

DPDK menggunakan memori halaman besar (Huge Pages) untuk meningkatkan efisiensi akses memori. Mengonfigurasi memori halaman besar adalah prasyarat yang diperlukan untuk menjalankan DPDK.
Jalankan perintah berikut untuk mengalokasikan memori halaman besar (di sini menggunakan halaman besar 2MB sebagai contoh, mengalokasikan 8192 halaman, total sekitar 16 GB):
echo 8192 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

Langkah 4: Jalankan Pengujian Kinerja

Pengujian kinerja DPDK menggunakan mode dua mesin RX-TX: satu server berfungsi sebagai penerima (RX), dan server lainnya berfungsi sebagai pengirim (TX).
Keterangan:
RX sebagai penerima, TX sebagai pengirim. Kedua server perlu menjalankan perintah yang sesuai secara terpisah.
Perintah dijalankan pada sisi penerima RX sebagai berikut:
C=4; Q=32; ./build/app/dpdk-testpmd -l 0-47 --proc-type primary --file-prefix bench -a 0000:1b:00.0 -- --burst=128 --nb-cores=$C --txd=4096 --rxd=4096 --txq=$Q --rxq=$Q --forward-mode=rxonly --stats-period=1
Perintah dijalankan pada sisi pengirim TX sebagai berikut:
C=4; Q=32; S=10.31.0.80; D=10.31.0.240; ./build/app/dpdk-testpmd -l 0-47 --proc-type primary --file-prefix bench -a 0000:1b:00.0 -- --burst=128 --nb-cores=$C --tx-ip $S,$D --txonly-multi-flow --txpkts=64 --txd=4096 --rxd=4096 --txq=$Q --rxq=$Q --forward-mode=txonly --stats-period=1

Penjelasan Detail Parameter

Parameter
Deskripsi
-a 0000:1b:00.0
Menentukan alamat PCI kartu jaringan yang akan digunakan, perlu diganti sesuai dengan lingkungan aktual.
--tx-ip S,D
Alamat IP tujuan untuk transmisi paket dari sisi TX, ganti sesuai dengan alamat kartu jaringan CVM.
--txonly-multi-flow
Mengaktifkan mode pengiriman multi-aliran (jika tidak diatur, hanya satu aliran yang dikirim).
--txpkts=64
Panjang paket (dalam byte, termasuk header MAC), disarankan 64 untuk skenario pengujian PPS.
-l 0-47
Menentukan rentang nomor inti CPU yang digunakan, disesuaikan sesuai kebutuhan. Untuk skenario NUMA lintas, Anda dapat memperoleh informasi dengan melihat distribusi antrian lintas NUMA.
--txq / --rxq = $Q
Jumlah antrian pengiriman/penerimaan, dapat dilihat melalui ethtool -l eth0 | grep Combined.
--nb-cores=$C
Jumlah inti CPU yang benar-benar berpartisipasi dalam pengujian, direkomendasikan 2 ≤ C ≤ Q.
--stats-period=1
Menampilkan informasi statistik sekali per detik.
Contoh hasil pengujian adalah sebagai berikut, sisi kiri adalah penerima RX, dan sisi kanan adalah pengirim TX:


Langkah 5: Pemulihan Lingkungan Pengujian

Setelah pengujian selesai, disarankan untuk mengembalikan lingkungan ke status awal, membebaskan sumber daya, dan menghindari dampak terhadap layanan lainnya.

Pulihkan Driver Kartu Jaringan

Gunakan alat dpdk-devbind.py untuk mengembalikan kartu jaringan ke driver secara default:
./usertools/dpdk-devbind.py -b virtio-pci 0000:00:08.0 # Catatan: 0000:00:08.0 perlu diganti dengan alamat PCI yang sebenarnya
Jika perintah di atas tidak berfungsi normal, Anda dapat menjalankan perintah berikut secara manual untuk melepas ikatan vfio-pci.
echo 0000:1b:00.0 > /sys/bus/pci/drivers/vfio-pci/unbind #0000:1b:00.0 diganti sesuai kebutuhan
echo virtio-pci > /sys/bus/pci/devices/0000\\:1b\\:00.0/driver_override #Mengatur driver_override menjadi virtio-pci
echo 0000:1b:00.0 > /sys/bus/pci/drivers/virtio-pci/bind #Mengikat ulang ke virtio-pci

Pulihkan Memori Halaman Besar

Setel jumlah memori halaman besar ke nol.
echo 0 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
Aktifkan kembali kartu jaringan.
ifconfig eth1 up

Penanganan Skenario Khusus

Jika server pengujian yang Anda gunakan adalah tipe instans setelah Tipe Standar SA4 dan CPU memiliki spesifikasi tertinggi, Anda perlu menambahkan langkah konfigurasi berikut.

Periksa Distribusi Antrian Lintas NUMA

Keterangan:
Untuk server dengan CPU multi-jalur, Anda perlu memastikan bahwa inti CPU yang digunakan DPDK dan kartu jaringan berada pada node NUMA yang sama, jika tidak, kinerja akan menurun secara signifikan.
1. Unduh dan lihat skrip
wget https://lag-dpdk-1326316016.cos.ap-guangzhou.myqcloud.com/dpdk_core_advisor.sh
2. Jalankan skrip untuk melihat distribusi NUMA antre-queue.
sh dpdk_core_advisor.sh eth0
Jika hasil yang dikembalikan menunjukkan distribusi antre-queue melintasi NUMA, silakan instal lag_dpdk.patch

Instal lag_dpdk.patch

1. Unduh skrip tambalan lag_dpdk.patch.
wget https://lag-dpdk-1326316016.cos.ap-guangzhou.myqcloud.com/lag_dpdk.patch
2. Terapkan tambalan.
git apply lag_dpdk.patch
# Perintah yang setara (pilih salah satu saja)
patch -p1 < lag_dpdk.patch
3. Kompilasi ulang.
meson build -Dmax_lcores=1024
ninja -C build



Bantuan dan Dukungan

Apakah halaman ini membantu?

masukan