码迷,mamicode.com
首页 > 其他好文 > 详细

intel DPDK在多核处理器平台上的安装与配置

时间:2015-03-31 20:27:35      阅读:396      评论:0      收藏:0      [点我收藏+]

标签:intel dpdk   dpdk安装   多核处理器   igb_uio模块   大页内存   

一、DPDK系统需求:

1、需要的编译工具(ubuntu12.04 LTS均符合要求,可以不检查)

              GNU make;

              cmp, sed, grep, arch;

              gcc;libc库文件(glibc-devel fedora;libc ubuntu

              kernel-devel(fedora);kernel-dev(ubuntu)

              python 2.6 or 2.7

2、运行条件(关键在于kernel的配置,其他均符合条件)

              kernel-version >=2.6.33 :查看命令 uname -r

              glibc>=2.7:       查看命令ldd --version

              kernel configuration

                     UIO 支持     (编译之后挂载)

                     HUGETLBFS(见下一小节)

                     PROC_PAGE_MONITOR支持(不用配置)

                     HPETHPET_MMAP(不用配置)

二、、预留大页内存

1、大页内存的设置    

    大页内存支持是为了分配较大的内存池用来存放报文。对于2M的内存页,hugepages = 1024,对于其他大小的内存页,必须显式设置,efault_hugepagesz=1G hugepapgesz=1G hugepages=4。

    对于64位系统,推荐使用1G页面。对于双socket的NUMA机制,要分别对两个socket进行单独设置:

    echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages

    echo 1024 > /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages

    对于2M的页面,通常是在系统启动之后进行设置。但是对于1G的页面,是不可能在系统之后进行设置的。

2、大页内存的挂载:

    上一步执行的是大页内存的预留,为了能够将其有效的使用,还需要进行挂载。

       mkdir /mnt/huge

       mount -t hugetlbfs nodev /mnt/huge

    想要使得该挂载在系统每次启动时自动执行,将下列文本加入/etc/fstab里面去。

       nodev /mnt/huge hugetlbfs     defaults 0 0

    对于1G的页面,页面大小必须在挂载时被显式指定

       nodev  /mnt/huge_1GB  hugetlbfs  pagesize=1G  0  0

 

三、编译

1.安装DPDK

解压源码包

user@host:~$ unzip DPDK-<version>.zip

user@host:~$ cd DPDK-<version>

user@host:~/DPDK-<version>$ ls

app/ config/ examples/ lib/ LICENSE.GPL LICENSE.LGPL Makefile mk/ scripts/ tools/

 lib: 源码库

 app: DPDK相关应用的源代码

 examples: DPDK相关例子的源代码

 config, tools,scripts, mk: 平台相关的配置、脚本、工具

2.目标环境的安装

DPDK目标的格式:ARCH-MACHINE-EXECENV-TOOLCHAIN

其中

 ARCH可为: i686, x86_64

 MACHINE可为: default, ivshmem

 EXECENV可为 linuxapp, bsdapp

        TOOLCHAIN可为: gcc, icc

安装时要在dpdk的顶级目录里面,命令如下:

       make install T=x86_64-default-linuxapp-gcc  或者

             make config T=x86_64-default-linuxapp-gcc

           cd x86_64-default-linuxapp-gcc

       make

一旦目标环境创建完毕,用户若要修改或者重新编译,可进入build目录修改.config文件然后重新编译。如:

cd x86_64-default-linuxapp-gcc

vi .config

       make

并且,可使用make clean 命令可以移除已经编译过的所有文件。

创建结束后可通过

       ls x86_64-default-linuxapp-gcc

       app build hostapp include kmod lib Makefile

来查看安装后的目标环境。

3.加载DPDK igb_uio模块

运行任何DPDK应用,都必须加载igb_uio模块,该模块在DPDK目标环境目录下的kmod子目录里面。命令如下:

sudo modprobe uio

       sudo insmod kmod/igb_uio.ko

4.网卡与igb_uio的绑定与解绑

DPDK默认不会自动解绑网络接口,任何DPDK应用将要用到的网络端口都必须先与Linux内核解绑,然后绑定到igb_uio模块上去。tools目录下的pci_unbind.py可用来查看网卡的绑定情况,并可以用来绑定或解绑网卡到指定的模块。使用范例如下,也可以使用--help或--usage参数来获取帮助信息。

root@host:DPDK# ./tools/pci_unbind.py --status

Network devices using IGB_UIO driver

====================================

0000:82:00.0 ‘82599EB 10-Gigabit SFI/SFP+ Network Connection‘ drv=igb_uio unused=ixgbe

0000:82:00.1 ‘82599EB 10-Gigabit SFI/SFP+ Network Connection‘ drv=igb_uio unused=ixgbe

Network devices using kernel driver

===================================

0000:04:00.0 ‘I350 Gigabit Network Connection‘ if=em0 drv=igb unused=igb_uio *Active*

0000:04:00.1 ‘I350 Gigabit Network Connection‘ if=eth1 drv=igb unused=igb_uio

0000:04:00.2 ‘I350 Gigabit Network Connection‘ if=eth2 drv=igb unused=igb_uio

0000:04:00.3 ‘I350 Gigabit Network Connection‘ if=eth3 drv=igb unused=igb_uio

Other network devices.....

=====================

绑定eth1到igb_uio模块:

       root@host:DPDK# ./tools/pci_unbind.py --bind=igb_uio eth1  或者

      ./tools/ igb_uio_bind.py --bind=igb_uio 04:00.1  

将网卡82.00.0绑定到原来模块使用如下命令:

              root@host:DPDK# ./tools/pci_unbind.py --bind=ixgbe 82:00.0

四、编译且运行示例程序

       RTE_SDK - Points to the Intel DPDK installation directory.

       RTE_TARGET - Points to the Intel DPDK target environment directory

使用如下命令来输出环境变量:

user@host:~/DPDK$ cd examples/helloworld/

user@host:~/DPDK/examples/helloworld$ export RTE_SDK=$HOME/DPDK

user@host:~/DPDK/examples/helloworld$ export RTE_TARGET=x86_64-default-...

user@host:~/DPDK/examples/helloworld$ make

       CC main.o

       LD helloworld

       INSTALL-APP helloworld

       INSTALL-MAP helloworld.map

user@host:~/DPDK/examples/helloworld$ ls build/app

              helloworld helloworld.map

编译测试程序:环境变量设置好之后可以进入DPDK的主目录中的example编译测试。

           user@DPDK_dir/examples/helloworld$ make

           运行:

              user@target:~$ ./helloworld -c f -n 4

五、使用脚本进行快速配置

       运行DPDK根目录下tools/setup.sh


intel DPDK在多核处理器平台上的安装与配置

标签:intel dpdk   dpdk安装   多核处理器   igb_uio模块   大页内存   

原文地址:http://muyunzhe.blog.51cto.com/9164050/1626834

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!