安装部署
源码学习
使用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-gccmakemake 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!"