安装部署

源码学习

   使用Exsi服务器,用vcenter克隆了一个人家已经安装好的虚拟机环境,修改主机名。便开始工作了。虚拟机是ubuntu 12.04,内核达到要求。另外要配置网卡是e1000。82545E的网卡型号。通过命令lspci可以查看,是inter支持的一种虚拟网卡类型。

安装和配置可以参考getting started 那个文档。以ubuntu 12.04为例:

1.添加环境变量

vi /etc/rc.local

此脚本开机启动,所以环境变量添加到此处最好

export RTE_SDK=/opt/dpdk/src/dpdk(dpdk的源代码路径)

export RTE_TARGET=i686-default-linuxapp-gcc(dpdk源码路径中的一目录)

2.安装dpdk的环境,注意用户权限是root。每台机器上只需要做一次,有环境后就不用了。
make config T=i686-default-linuxapp-gcc
make
make install T=i686-default-linuxapp-gcc(参考readme)

3.执行程序,在dpdk的源码路径里面,做以下操作
a.执行初始化程序(申请大页等操作)

b.编写自己的源程序或者进入到examples目录下的具体例子的路径,比如:../examples/l2fwd

c.make clean

d.make

e.进入到app路径执行带参数的命令

../examples/l2fwd/build/app# ./l2fwd -c 2(核的数量) -n 4 (默认网卡数量) -- -p 4 -q 2

这样就能看结果了

需要注意的是初始化的操作(也就是第一步),即使执行不同的程序,只需要执行一次,不用的时候释放就行,不用每个程序单独去申请。

初始化程序,自己封装的代码为:

rte_init.sh

#!/bin/sh

echo "setting hugetlb..."

mount -t hugetlbfs nodev /mnt/huge //to make the memory available for Intel® DPDK use

echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages //allocating hugepages.when booted

cat /proc/meminfo |grep HugePages

echo "setting uio..."

modprobe uio

echo "setting igb_uio..."

insmod ../Source/DPDK/i686-default-linuxapp-gcc/kmod/igb_uio.ko//to run dpdk app

cat /proc/modules |grep uio

echo "Done!"

释放脚本rte_fin.sh

#!/bin/sh

echo "umount hugetlb.."

umount /mnt/huge

echo "rmmod igb_uio..."

rmmod igb_uio.ko

cat /proc/modules |grep uio

cat /proc/meminfo |grep HugePages

echo "Done!"