dpdk简述

       DPDK的环境抽象层向应用与函数库隐藏了底层环境的细节,因而能扩展到任何处理器上使用。就操作系统来说,它提供了对Linux和FreeBSD的支持。

工作原理

       DPDK使用了轮询(polling)而不是中断来处理数据包。在收到数据包时,经DPDK重载的网卡驱动不会通过中断通知CPU,而是直接将数据包存入内存,交付应用层软件通过DPDK提供的接口来直接处理,这样节省了大量的CPU中断时间和内存拷贝时间

DPDK主要有以下几个核心思想:

1.通过UIO技术将报文拷贝到用户空间进行处理,从而绕过内核协议栈;

图6. 网络报文处理方式 Kernel Space V.S. User Space

2.通过大页内存,提高TLB命中率,降低TLB miss开销,进而提高CPU访问速度;

图7. TLB的使用

3.通过CPU亲和性,绑定网卡和线程到固定的core,减少CPU任务切换;
4.通过无锁队列,减少资源竞争;

 

 

虚拟机搭建dpdk:

--------------------------常见问题:

(1)大页配置:

echo 100 > /proc/sys/vm/nr_hugepages

 

(2)运行testpmd程序时输出:

EAL: Error reading from file descriptor 23: Input/output error

原因:

在虚拟机添加的网卡,dpdk不支持导致的。

需要修改一行代码,跳过dpdk pci 检查

 

修改代码行

lib/librte_eal/linuxapp/igb_uio/igb_uio.c

找到

pci_intx_mask_supported(dev)

这行代码

然后修改为

pci_intx_mask_supported(dev)||true

 

-----------------------------gdb调试

export RTE_SDK=`pwd`
export RTE_TARGET=x86_64-native-linuxapp-gcc
export EXTRA_CFLAGS="-O0 -g"

make -C x86_64-native-linuxapp-gcc
make -C examples/l2fwd/
make -C app/testpmd/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值