没有合适的资源?快使用搜索试试~ 我知道了~
DPDKL2fwd代码走读报告(代码流程分析).pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 163 浏览量
2021-10-02
11:27:48
上传
评论
收藏 490KB PDF 举报
温馨提示
试读
33页
DPDKL2fwd代码走读报告(代码流程分析).pdf
资源推荐
资源详情
资源评论
****
DPDK 学习
L2 fwd 代码走读报告
导师: *** 学生: ***
2016-2-18
目录
一、对于 DPDK的认识: ................................................................................................................ 2
二、对 L2 fwd 的认识: .................................................................................................................. 3
2.1 运行配置 ............................................................................................................................. 3
2.2 运行环境搭建 ..................................................................................................................... 3
2.3 功能分析: ......................................................................................................................... 6
2.4 详细流程图(调用关系)如下: ..................................................................................... 6
2.5 运行截图 ............................................................................................................................. 8
2.6 详细代码注释分析: ......................................................................................................... 8
一、对于 DPDK的认识:
主要应用 x86 通用平台 ,转发处理 网络数据包,定位在不需要专用网络处理器,
但通用网络处理器对数据处理性能又不能满足需求的客户。
DPDK ,搭载 x86 服务器,成本变化不大,但对数据的处理性能又有非常显著
的提高,对传统 linux 技术做一定的优化, 特别之处在于:hugepage,uio,zero copy,
cpu affinity 等。
关于 hugetlbpage (在这块大页面上做自己的内存管理系统) ,之前讲过,它
的主要好处当然是通过利用大内存页提高内存使用效率,。由于 DPDK 是应用层平
台,所以与此紧密相连的网卡驱动程序(当然,主要是 intel 自身的千兆 igb 与万
兆 ixgbe 驱动程序)都通过 uio( 用户层驱动、轮询、 0 拷贝 )机制运行在用户态下。
cpu affinity (多核架构,核线程绑定物理核) 机制是多核 cpu 发展的结果,,在越
来越多核心的 cpu 机器上, 如何提高外设以及程序工作效率的最直观想法就是让各
个 cpu 核心各自干专门的事情,比如两个网卡 eth0 和 eth1 都收包,可以让 cpu0
专心处理 eth0 ,cpu1 专心处理 eth1 ,没必要 cpu0 一下处理 eth0 ,一下又处理
eth1 ,还有一个网卡多队列的情况也是类似,等等, DPDK 利用 cpu affinity 主要
是将控制面线程以及各个数据面线程绑定到不同的 cpu ,省却了来回反复调度的性
能消耗,各个线程一个 while 死循环,专心致志的做事,互不干扰(当然还是有通
信的,比如控制面接收用户配置,转而传递给数据面的参数设置等)。
总结如下:
1、 使用大页缓存支持来提高内存访问效率。
2、 利用 UIO 支持,提供应用空间下驱动程序的支持,也就是说网卡驱动是运
行在用户空间 的,减下了报文在用户空间和应用空间的多次拷贝。
3、 利用 LINUX 亲和性支持,把控制面线程及各个数据面线程绑定到不同的
CPU 核,节省了 线程在各个 CPU 核来回调度。
4、 提供内存池和无锁环形缓存管理,加快内存访问效率。
在 x86 服务器, 1G/10G/40G 网卡包转发, 64Byte 小包,基本能做到 70% 以
上的转发,而传统 linux 系统只能达 5% 左右,在网络大数据流时代, DPDK 加码,
优势明显。
二、对 L2fwd 的认识:
2.1 运行配置
虚拟机软件: VMWare WorkStation 12.0.0 build-2985596
CPU: 2 个 CPU, 每个 CPU2 个核心
内存: 1GB+
网卡: intel 网卡 *2 , 用于 dpdk 试验;另一块网卡用于和宿主系统进行通信
2.2 运行环境搭建
在 root 权限下:
1)编译 dpdk
进入 dpdk 主目录 <dpdk> ,输入
make install T=x86_64-native-linuxapp-gcc 进行编译
2)配置大页内存(非 NUMA )
echo 128 >
/sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
mkdir /mnt/huge
mount -t hugetlbfs nodev /mnt/huge
可以用以下命令查看大页内存状态:
cat /proc/meminfo | grep Huge
3)安装 igb_uio 驱动
modprobe uio
insmod x86_64-native-linuxapp-gcc/kmod/igb_uio.ko
4)绑定网卡
先看一下当前网卡的状态
./tools/dpdk_nic_bind.py --status
剩余32页未读,继续阅读
资源评论
资料大全
- 粉丝: 14
- 资源: 26万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功