目录
总览
dpdk doc手册
- dpdk doc文档、手册
https://www.dpdk.org/ ---> DPDK Core --->Document
各个版本的手册:
API 手册
- API 手册
介绍了当前版本的DPDK的 模块,源码(example例子的源码,各个文件分布,头文件、函数的源码等);
guides 手册
guides 手册
如上所示, 比较重要的几个方面是:
Getting Started Guide for Linux
参见:dpdk 21.11 Getting Started Guide for Linux
主要分为:
- 依赖
系统参数、驱动 - 编译
如何编译 dpdk - 启动参数
eal 启动参数解释 - 其他功能点
比如: rte_kni, 孤立 cpu, 性能调优点
Programmer’s Guide
详细介绍 DPDK 中的各个功能模块、lib库等。
比如: eal参数、各个组件/lib库(比如:rcu、ring、eal库,mempool, mbuf, rte_flow等等)/工具的原理、使用;
HowTo Guides
功能:
展示多个特性是如何测试的「包含:client怎么发包,测试程序怎么配置,怎么查看功能生效」以及 提供的一些 debug调试、故障排除/抓包/问题定位的建议。
参见:HowTo Guides
比如:测试 rte_flow
testpmd 配置 rte_flow;
client: 使用 scapy 发送包;
testpmd: 查看输出
DPDK Tools User Guides
dpdk 工具:比如
- dpdk-devbind
网卡和驱动的绑定、解绑定、查看;
参见:dpdk-devbind Application
- dpdk-pmdinfo Application
展示 一个 pmd(dpdk程序)的硬件支持情况。
参见:dpdk-pmdinfo Application范例: #./dpdk-pmdinfo -t /opt/xxx/bin/dpvs 简单举支持的几个网卡驱动,如下所示:
ice 驱动:
ixgbe 驱动:
ixgbe vf 设备:
Note: uio_pci_generic 不可用于虚拟设备。
i40e 驱动:
mlx5 驱动:
Note:
如上所示:mlx 驱动的网卡,不需要 igb_uio/uio_pci_generic/vfiobnxt 驱动:
- dpdk-hugepages
挂载、取消挂载大页,查看大页情况。
参见:dpdk-hugepages Application范例如下: # ./dpdk-hugepages.py -s Node Pages Size Total 0 24 1Gb 24Gb 1 24 1Gb 24Gb Hugepages mounted on /dev/hugepages /mnt/huge_1GB ---- # cat /proc/cmdline BOOT_IMAGE=/vmlinuz-xxxx.x86_64 root=UUID=xxxxxxxx ro crashkernel=auto ixgbe.allow_unsupported_sfp=1 intel_idle.max_cstate=0 default_hugepagesz=1G hugepagesz=1G hugepages=48 isolcpus=1,2,3,4,5,6,7,8,9,18,19,20,21,22,23,24,25,26 ----- # cat /etc/fstab ... nodev /mnt/huge_1GB hugetlbfs pagesize=1GB 0 0 ----- # cat /proc/meminfo |grep -i huge AnonHugePages: 4096 kB HugePages_Total: 48 HugePages_Free: 22 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 1048576 kB
- dpdk-procinfo
dpdk-procinfo 作为dpdk备程序,展示port的统计信息、端口的配置,展示dpdk的内存(所以的ring以及具体的ring,所有的以及具体的mempool,mempool中的元素)信息等。
参见:dpdk-procinfo Application
# 查看两个接口(port_0,port_1)的接口统计;
# ./dpdk-proc-info -- -p 3 --xstats
EAL: No legacy callbacks, legacy socket not created
###### NIC extended statistics for port 0 #########
####################################################
rx_good_packets: 6864393
tx_good_packets: 17946209
rx_good_bytes: 434439746
tx_good_bytes: 1130778820
rx_missed_errors: 0
rx_errors: 0
tx_errors: 0
rx_mbuf_allocation_errors: 0
rx_q0_packets: 6864393
rx_q0_bytes: 434439746
rx_q0_errors: 0
rx_q1_packets: 0
rx_q1_bytes: 0
rx_q1_errors: 0
rx_q2_packets: 0
rx_q2_bytes: 0
rx_q2_errors: 0
rx_q3_packets: 0
rx_q3_bytes: 0
rx_q3_errors: 0
rx_q4_packets: 0
rx_q4_bytes: 0
rx_q4_errors: 0
rx_q5_packets: 0
rx_q5_bytes: 0
rx_q5_errors: 0
rx_q6_packets: 0
rx_q6_bytes: 0
rx_q6_errors: 0
rx_q7_packets: 0
rx_q7_bytes: 0
rx_q7_errors: 0
tx_q0_packets: 17946209
tx_q0_bytes: 1130778774
tx_q1_packets: 0
tx_q1_bytes: 0
tx_q2_packets: 0
tx_q2_bytes: 0
tx_q3_packets: 0
tx_q3_bytes: 0
tx_q4_packets: 0
tx_q4_bytes: 0
tx_q5_packets: 0
tx_q5_bytes: 0
tx_q6_packets: 0
tx_q6_bytes: 0
tx_q7_packets: 0
tx_q7_bytes: 0
tx_q8_packets: 0
tx_q8_bytes: 0
rx_crc_errors: 0
rx_illegal_byte_errors: 0
rx_error_bytes: 0
mac_local_errors: 0
mac_remote_errors: 0
rx_length_errors: 0
tx_xon_packets: 0
rx_xon_packets: 0
tx_xoff_packets: 0
rx_xoff_packets