准备条件
Part 1 BIOS
对于额外的HPET定时器和电源管理功能以及小数据包的高性能,可能需要更改BIOS设置。
1. HPET功能
2. Running DPDK Applications Without Root Privileges
3. 电源管理
4. Linux Core Isolation(DPDK专用core)
虽然DPDK应用程序使用的线程固定在系统上的逻辑内核中,但Linux调度程序也可以在这些内核上运行其他任务。(逻辑内核?)
isolcpus
5. 加载DPDK KNI内核模块
如果要运行DPDK内核NIC接口(KNI)示例应用程序。
6.
使用Linux IOMMU Pass-Through并通过英特尔®VT-d运行DPDK
虚拟化?
NOTE: 如果启用UEFI安全引导,则Linux内核可能会禁止在系统上使用UIO。
Part 2 Tools and Libraries
blah blah 大致都满足
gcc: 在某些发行版中,默认情况下会启用某些特定的编译器标志和链接器标志,并影响性能(例如,-fstack-protector)。
Part 3 运行DPDK应用程序
1.
Kernel version >= 3.2
glibc >= 2.7
内核配置:对于其他内核版本(centos ?),应该为DPDK启用的选项包括:
- HUGETLBFS
- PROC_PAGE_MONITOR support
- HPET and HPET_MMAP configuration options should also be enabled if HPET support is required.
2.
HugePage(需打开HUGETLBFS)
对于1G页面,系统启动后无法保留大页面内存。
在IBM POWER系统上,应将nr_overcommit_hugepages设置为与nr_hugepages相同的值。
细节看文档。
附:
配置Hugepage: https://www.cnblogs.com/yhp-smarthome/p/7500658.html
dpdk中文指南?: http://dpdk-docs.readthedocs.io/en/latest/index.html
DPDK及应用编译运行
安装:
make config T=x86_64-native-linuxapp-gcc
#要打开gdb调试功能,则export EXTRA_CFLAGS="-O0 -g"之后编译#
make
make install T=x86_64-native-linuxapp-gcc DESTDIR=install
export RTE_TARGET=x86_64-native-linuxapp-gcc
source usertools/dpdk-setup.sh
编译examples:
cd examples/helloworld/
export RTE_SDK=/home/cse/Public/dpdk-stable-17.11.3 //修改
export RTE_TARGET=x86_64-native-linuxapp-gcc
make
常用命令
1. 查看当前系统hugepages信息
grep -i huge /proc/meminfo
2. 使用dmidecode检查内存配置
dmidecode -t memory | grep Locator
3. 使用dmidecode确定内存频率
dmidecode -t memory | grep Speed
4. 查看是否支持hpet
grep hpet /proc/timer_list
5. 查看ethe设备所在socket的lcore
cat /sys/class/net/eth1/device/local_cpulist