dpdk编译,详细的环境搭建过程

1. dpdk环境的搭建过程:

Linux平台上DPDK入门指南:中文,比较详细
https://dpdk-docs.readthedocs.io/en/latest/linux_gsg/index.html

dpdk编译:
dpdk依赖库:
https://www.cnblogs.com/vancasola/p/8881197.html
按上述网址安装完所有的依赖库后,按以下命令安装(脚本):
export RTE_SDK=/home/wlw/dpdk/dpdk-stable-18.02.2
export RTE_TARGET=x86_64-native-linuxapp-gcc
make config T=x86_64-native-linuxapp-gcc
wlw@greenvm-wlwv:~/dpdk/dpdk-stable-18.02.2$ sudo ./usertools/
cpu_layout.py    dpdk-pmdinfo.py  meson.build      
dpdk-devbind.py  dpdk-setup.sh    
wlw@greenvm-wlwv:~/dpdk/dpdk-stable-18.02.2$ sudo ./usertools/dpdk-setup.sh
选14编译

绑定网卡:
./dpdk-devbind.py --status
wlw@greenvm-wlwv:~/dpdk/dpdk-stable-18.02.2/usertools$ sudo ifconfig eth0 down
wlw@greenvm-wlwv:~/dpdk/dpdk-stable-18.02.2/usertools$ sudo ./dpdk-devbind.py --bind=igb_uio eth0
解绑网卡:
./dpdk-setup.sh 29


TLB与hugepage:深入浅出dpdk 47页
在之前的章节我们提到了TLB(Translation Look-aside Buffer)Cache ,TLB和Cache本质上是一样的,都是一种高速的SRAM,存放了内存中内容的一份快照或者备份,以便处理器能够快速地访问,减少等待的时间。有所不同的是,Cache存放的是内存中的数据或者代码,或者说是任何内容,而TLB存放的是页表项。
提到页表项,有必要简短介绍一下处理器的发展历史。最初的程序员直接对物理地址编程,自己去管理内存,这样不仅对程序员要求高,编程效率低,而且一旦程序出现问题也不方便进行调试。特别还出现了恶意程序,这对计算机系统危害实在太大,因而后来不同的体系架构推出了虚拟地址和分页的概念。
分页是指把物理内存分成固定大小的块,按照页来进行分配和释放。一般常规页大小为4K(2 12 )个字节,之后又因为一
些需要,出现了大页,比如2M(2 20 )个字节和1G(2 30 )个字节的大小,我们后面会讲到为什么使用大页。
虚拟地址是指程序员使用虚拟地址进行编程,不用关心物理内存的大小,即使自己的程序出现了问题也不会影响其他程序的运行和系统的稳定。而处理器在寄存器收到虚拟地址之后,根据页表负责把虚拟地址转换成真正的物理地址。
首先,Linux操作系统采用了基于hugetlbfs的特殊文件系统来加入对2MB或者1GB的大页面支持。这种采用特殊文件系统形式支持大页面的方式,使得应用程序可以根据需要灵活地选择虚存页面大小,而不会被强制使用2MB大页面。

NUMA系统:深入浅出dpdk 51页
内存是统一结构、统一寻址的(UMA,Uniform Memory Architecture)。
查看系统是否是numa系统:
uname -a
lscpu
如果不能确认是单节点系统还是NUMA系统,则两个都配置一下:
法一:
对于单节点系统,使用以下命令(假设需要1024个页):
echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
对于NUMA设备,则分配应该明确指定在哪个节点上:
echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
echo 1024 > /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages
法二:
wlw@ubuntu:~/workspace/source/dpdk/dpdk-stable-18.02.2$ ./usertools/dpdk-setup.sh
选择20或者21,然后输入64

DPDK也是使用HUGETLBFS来使用大页:  深入浅出dpdk 48页(里面有永久保存配置)
在大页预留之后,接下来则涉及使用的问题。我们以DPDK为例来说明如何使用大页。
DPDK也是使用HUGETLBFS来使用大页。首先,它需要把大页mount到某个路径,比如/mnt/huge,以下是命令:
mkdir /mnt/huge
sudo mount -t hugetlbfs nodev /mnt/huge

加载模块启动DPDK环境需要的UIO功能:https://dpdk-docs.readthedocs.io/en/latest/linux_gsg/index.html中3.4节
要运行任何的DPDK应用程序,需要将合适的uio模块加载当前内核中。在大多数情况下,Linux内核包含了标准的uio_pci_generic模块就可以提供uio能力。该模块可以使用以下命令加载:
sudo modprobe uio_pci_generic
区别于uio_pci_generic,DPDK提供了一个igb_uio模块(可以在kmod目录下找到)。加载方式如下:
sudo modprobe uio
sudo insmod kmod/igb_uio.ko
注:对于一个不支持传统中断的设备,例如虚拟功能(VF)设备,必须使用igb_uio来代替uio_

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值