wget 명령어를 사용하여 공식 저장소에서 DPDK 23.11 소스 코드 압축 파일을 다운로드하고 압축을 해제합니다.wget https://fast.dpdk.org/rel/dpdk-23.11.tar.gztar -xf dpdk-23.11.tar.gzcd dpdk-23.11
numactl-devel 종속 라이브러리를 설치합니다(root 권한 필요).yum install numactl-devel -y
pip3 install meson ninja pyelftools
meson을 사용하여 프로젝트를 빌드합니다(최대 논리 코어 수를 1024로 설정).meson build -Dmax_lcores=1024
ninja를 사용하여 프로젝트를 컴파일합니다.ninja -C build
git clone http://dpdk.org/git/dpdk-kmods
git clone git://dpdk.org/dpdk-kmods
igb_uio 디렉터리로 이동하여 컴파일합니다.cd ./dpdk-kmods/linux/igb_uiomake
uio 및 igb_uio 커널 모듈을 로딩합니다(root 권한 필요).modprobe uioinsmod ./dpdk-kmods/linux/igb_uio/igb_uio.ko
ethtool -i eth0 | grep bus-info

ifconfig eth0 down
igb_uio 드라이버에 바인딩합니다(실제 PCI 주소로 교체)../usertools/dpdk-devbind.py --bind=igb_uio 0000:02:01.0 #0000:02:01.0은 실제 NIC PCI 주소로 교체해야 합니다.
echo 8192 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
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
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
매개변수 | 설명 |
-a 0000:1b:00.0 | 사용할 NIC의 PCI 주소를 지정하며, 실제 환경에 따라 교체해야 합니다. |
--tx-ip S,D | TX 측 패킷 전송의 타겟 IP 주소를 CVM NIC 주소에 따라 교체합니다. |
--txonly-multi-flow | 멀티플로우 송신 모드를 활성화합니다(설정하지 않으면 단일 플로우만 송신합니다). |
--txpkts=64 | 패킷 길이(바이트, MAC 헤더 포함)이며, PPS 테스트 시나리오에서는 64바이트를 권장합니다. |
-l 0-47 | |
--txq / --rxq = $Q | 송신/수신 큐 개수는 ethtool -l eth0 | grep Combined 명령어로 확인할 수 있습니다. |
--nb-cores=$C | 테스트에 실제로 참여하는 CPU 코어 수이며, 2 ≤ C ≤ Q 범위를 권장합니다. |
--stats-period=1 | 통계 정보를 초당 한 번씩 출력합니다. |

dpdk-devbind.py 툴을 사용하여 NIC를 기본 드라이버로 복원합니다../usertools/dpdk-devbind.py -b virtio-pci 0000:00:08.0 # 참고: 0000:00:08.0은 실제 PCI 주소로 교체해야 합니다.
echo 0000:1b:00.0 > /sys/bus/pci/drivers/vfio-pci/unbind #0000:1b:00.0은 필요에 따라 교체합니다.echo virtio-pci > /sys/bus/pci/devices/0000\\:1b\\:00.0/driver_override #driver_override를 virtio-pci로 설정합니다.echo 0000:1b:00.0 > /sys/bus/pci/drivers/virtio-pci/bind #virtio-pci로 다시 바인딩합니다.
echo 0 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
ifconfig eth1 up
wget https://lag-dpdk-1326316016.cos.ap-guangzhou.myqcloud.com/dpdk_core_advisor.sh
sh dpdk_core_advisor.sh eth0
lag_dpdk.patch를 설치하시기 바랍니다.lag_dpdk.patch 패치 스크립트를 다운로드합니다.wget https://lag-dpdk-1326316016.cos.ap-guangzhou.myqcloud.com/lag_dpdk.patch
git apply lag_dpdk.patch# 동등한 명령어(둘 중 하나만 선택 가능)patch -p1 < lag_dpdk.patch
meson build -Dmax_lcores=1024ninja -C build
피드백