安装部署

http://blog.csdn.net/linzhaolove/article/details/9251433


源码学习

http://blog.csdn.net/linzhaolove/article/details/9252933


   使用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!"