dpdk环境搭建之使能额外功能

来源:互联网 发布:淘宝商家开通花呗条件 编辑:程序博客网 时间:2024/06/05 20:22

参考:http://dpdk.org/doc/guides/linux_gsg/enable_func.html#enabling-additional-functionality

翻译与理解吧

5 使能额外功能

5.1 High Precision Event Timer HPET(高精度定时器)

5.1.1BIOS 支持 

条件:Time Stamp Counter (TSC)(时间戳计数器)默认打开了

进入bios:通常在机子启动时按f2进入bios(不同平台进入bios方式不一样,自己搞定)

流程:Advanced -> PCH-IO Configuration -> High Precision Timer -> (Change from Disabled to Enabled if necessary)(使能或不使能)

命令查看使能状态:grep hpet /proc/timer_list,有以下显示说明使能成功,若没有,就使能重启机子


5.1.2 Linux内核支持

  编译内核时,要使能HPET_MMAP编译选项,Fedora和Ubuntu等相同发布版本默认是不使能的

5.1.3 dpdk中对HPET支持

  编译dpdk前,设置dpdk目录下config/common_linuxapp文件CONFIG_RTE_LIBEAL_USE_HPET=y,

rte_eal_hpet_init()的使用前提就是要内核,dpdk支持HPET

5.2非root权限下运行dpdk应用

  尽量用root权限运行dpdk应用,如果不用root权限应用,必须保证运行用户对一下文件有访问权限:

大页目录,eg /mnt/huge
用户空间io设备目录,eg /dev,/dev/uio0,/dev/uio1等

用户空间io sysfs文件目录,eg uio0 

/sys/class/uio/uio0/device/config
/sys/class/uio/uio0/device/resource*

HPET目录,/dev/hpet

5.3 电源管理和节能功能

  Enhanced Intel SpeedStep® Technology功能,/sys/devices/system/cpu/cpu0/cpufreq

存在表明使能了,具体情况参考原文。

5.4 隔离cpu核减少上下文切换

  在linux的grub文件中添加isolcpus=2,4,6,表明将核2,4,6隔离出来,不会被系统调用,专门用于dpdk收发包,
centos 7 修改 /etc/grub2.cfg

5.5 加载DPDK KNI模块

  位置在/dpdk-16.07/x86_64-ivshmem-linuxapp-gcc/kmod/rte_kni.ko ,加载insmod rte_kni.ko,
走内核协议栈的一个功能,需要才加载!

5.6开启IOMMU支持Intel® VT-d

   Intel VT技术,主要由三部分技术组成:VTx、VTd和VTc。其中,VTx是处理器技术,提供内存以及虚拟机

的硬件隔离,所涉及的技术有页表管理以及地址空间的保护。VTd是处理有关芯片组的技术,它提供一些针对虚

拟机的特殊应用,如支持某些特定的虚拟机应用跨过处理器I/O管理程序,直接调用I/O资源,从而提高效率,

通过直接连接I/O带来近乎完美的I/O性能。VTc是针对网络提供的管理,它可以在一个物理网卡上,建立针对

虚拟机的设备队列(来自百度知道)。

打开内核支持选项:

  • IOMMU_SUPPORT
  • IOMMU_API
  • INTEL_IOMMU
为了DPDK使用Intel® VT-d,在使用igb_uio驱动时必须设置内核参数iommu=pt

使用vfio-pci驱动必须设置iommu=pt and iommu=on

网卡是intel的,如果内核选项没有默认设置INTEL_IOMMU_DEFAULT_ON,可以设置内核参数intel_iommu=on,

参数保证Intel IOMMU能正常初始化

5.7 40G NIC上小包高效转发

 40G NIC对应驱动是 i40e driver,将网卡的固件升级到对应最新的,驱动也升级到最新的,

才能保证网卡高效转发数据

5.7.1 使用16字节描述符

    i40e PMD支持16和32字节大小的接收描述符,16字节描述符能提高小包转发效率,

通过在dpdk配置文件里设置CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC = y 使能

5.7.2 高性能和延迟的权衡

  可以根据需要设置CONFIG_RTE_LIBRTE_I40E_ITR_INTERVAL = 参数(0-8160us

来改变数据包的中断间隔,由于硬件设计,参数必须是2的幂


0 0
原创粉丝点击