zoukankan      html  css  js  c++  java
  • dpdk环境配置

    大页内存

    在内核启动参数中配置大页的大小和个数,以Ubuntu为例:

    default_hugepagesz=1G hugepagesz=1G hugepages=1设置到/etc/default/grub中的GRUB_CMDLINE_LINUX中,然后运行update-grub更新启动参数配置文件 /boot/grub/grub.cfg。之后重新启动,cat /proc/meminfo就能看到系统中显示大页数量和剩余的数量
    

    加载模块启动DPDK环境需要的UIO功能

    lin@lin:/sys/devices/system/node$ sudo modprobe uio
    lin@lin:~/dpdk/x86_64-native-linux-gcc$ sudo insmod kmod/igb_uio.ko
    

    网络端口绑定/解绑定

    查看系统中所有网络接口的状态:

    将enp1s0f0和enp1s0f1绑定到igb_uio驱动:

    lin@lin:~/dpdk$ sudo ./usertools/dpdk-devbind.py --bind=igb_uio enp1s0f0
    lin@lin:~/dpdk$ sudo ./usertools/dpdk-devbind.py --bind=igb_uio enp1s0f1
    lin@lin:~/dpdk$ ./usertools/dpdk-devbind.py --status
    
    Network devices using DPDK-compatible driver
    ============================================
    0000:01:00.0 'Ethernet Controller 10-Gigabit X540-AT2 1528' drv=igb_uio unused=ixgbe
    0000:01:00.1 'Ethernet Controller 10-Gigabit X540-AT2 1528' drv=igb_uio unused=ixgbe
    
    Network devices using kernel driver
    ===================================
    0000:02:00.0 'RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller 8168' if=enp2s0 drv=r8169 unused=igb_uio *Active*
    
    No 'Baseband' devices detected
    ==============================
    
    No 'Crypto' devices detected
    ============================
    
    No 'Eventdev' devices detected
    ==============================
    
    No 'Mempool' devices detected
    =============================
    
    No 'Compress' devices detected
    ==============================
    
    No 'Misc (rawdev)' devices detected
    ===================================
    

    编译一个简单应用程序

    RTE_SDK - 指向DPDK安装目录。
    RTE_TARGET - 指向DPDK目标环境目录。

    lin@lin:~/dpdk/examples/helloworld$ export RTE_SDK=/home/lin/dpdk
    lin@lin:~/dpdk/examples/helloworld$ export RTE_TARGET=x86_64-native-linux-gcc
    lin@lin:~/dpdk/examples/helloworld$ make 
      CC main.o
      LD helloworld
      INSTALL-APP helloworld
      INSTALL-MAP helloworld.map
    

    运行一个简单的应用程序

    以下是EAL提供的一些选项列表:

    ./rte-app -c COREMASK [-n NUM] [-b <domain:bus:devid.func>] 
              [--socket-mem=MB,...] [-m MB] [-r NUM] [-v] [--file-prefix] 
              [--proc-type <primary|secondary|auto>] [-- xen-dom0]
    

    选项描述如下:

    • -c COREMASK: 要运行的内核的十六进制掩码。注意,平台之间编号可能不同,需要事先确定。
    • -n NUM: 每个处理器插槽的内存通道数目。
    • -b domain:bus:devid.func: 端口黑名单,避免EAL使用指定的PCI设备。
    • --use-device: 仅使用指定的以太网设备。使用逗号分隔 [domain:]bus:devid.func 值,不能与 -b 选项一起使用。
    • --socket-mem: 从特定插槽上的hugepage分配内存。
    • -m MB: 内存从hugepage分配,不管处理器插槽。建议使用 --socket-mem 而非这个选项。
    • -r NUM: 内存数量。
    • -v: 显示启动时的版本信息。
    • --huge-dir: 挂载hugetlbfs的目录。
    • --file-prefix: 用于hugepage文件名的前缀文本。
    • --proc-type: 程序实例的类型。
    • --xen-dom0: 支持在Xen Domain0上运行,但不具有hugetlbfs的程序。
    • --vmware-tsc-map: 使用VMware TSC 映射而不是本地RDTSC。
    • --base-virtaddr: 指定基本虚拟地址。
    • --vfio-intr: 指定要由VFIO使用的中断类型。(如果不支持VFIO,则配置无效)。

    应用程序使用的逻辑Core

    在DPDK程序初始化EAL层时,将显示要使用的逻辑core及其插槽位置。可以通过读取 /proc/cpuinfo 文件来获取系统上所有core的信息。例如执行 cat /proc/cpuinfo。 列出来的physical id 属性表示其所属的CPU插槽。

    运行第一个应用程序

  • 相关阅读:
    iOS开发UI篇—IOS开发中Xcode的一些使用技巧
    iOS开发UI篇—推荐两个好用的Xcode插件(提供下载链接)
    iOS开发UI篇—UITableviewcell的性能问题
    iOS开发UI篇—UITableview控件基本使用
    iOS开发UI篇—UITableview控件简单介绍
    iOS开发UI篇—UIScrollView控件实现图片缩放功能
    iOS开发UI篇—实现UITableview控件数据刷新
    iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序
    C# 高性能 TCP 服务的多种实现方式
    高性能数据传输系统的框架设计
  • 原文地址:https://www.cnblogs.com/linbingfeng/p/14333967.html
Copyright © 2011-2022 走看看