原文地址:http://doc.dpdk.org/guides/linux_gsg/enable_func.html#enabling-additional-functionality

BIOS准备

针对惠普的机器
1.HIGH PRECISION Timer建议开启
grep hpet /proc/timer_list

2.需要内核开启HPET_MMAP内核配置。

在很多linux的发布版本中例如Fedora,Ubuntu,HPET_MMAP内核模块默认没有开启。如果需要重新编译linux内核模块,使HPET_MMAP开启的话,需要查阅相关版本发布手册。

3.DPDK开启HPET

默认情况下,HPET在DPDK编译的时候默认是disabled。如果需要开启,那么在编译的配置文件中CONFIG_RTE_LIBEAL_USE_HPET的配置项需要写成Y。这样在编译的时候会将HPET编译进DPDK。

如果一个应用使用了rte_get_hpet_cycles()和rte_get_hpet_hz()的API接口,可以选择使用HPET来为rte_time库提供默认的时间源。在dpdk被初始化的阶段新的rte_eal_hpet_init()接口会被调用。rte_eal_hpet_init()API会确认HPET是用的,如果HPET无法使用则该接口会抛出一个错误异常返回给dpdk。举个例子,如果HPET_MMAP没有在内核中被加载,不能作为计时来使用,dpdk会决定采取接下来的行为。

针对dpdk来说需要时间的API,但是作为时间源来说HPET并不是唯一提供的时间源。dpdk推荐使用rte_get_timer_cycles()和rte_get_timer_hz()API来替代HPET的特有API。通用类型的API可以针对TSC和HPET时间源来工作。这取决于dpdk是否请求调用rte_eal_hpet_init(),如果有的话是什么时间源运行在操作系统上。

4.在无Root权限下运行dpdk

在旧的linux内核版本上运行下述指令将使dpdk在无root权限下运行。然而,自从内核4.0版本之后,内核不允许无特权的进程从虚拟页映射物理页文件中读取物理地址信息,这种设置是的进程读取硬件设备地址来访问硬件设备成为了不可能的事情。

尽管应用程序通过DPDK来直接使用网络端口和其他硬件资源。作为一个用户而不是root用户,使用一些小型的权限来调整权限,运行应用程序访问硬件设备成为了可能。为了达到目的,我们需要针对linux文件系统对象来修改文件的属组和权限,为了确保linux用户账号可以正常的使用DPDK时去访问系统设备资源。

1.所有为大页内存服务的挂载点,如/mnt/huge
2.在/dev下所有的用户空间的io设备文件,例如/dev/uio0,/dev/uio1
3.用户空间的系统配置文件和资源文件,例如uio0:
/sys/class/uio/uio0/device/config
/sys/class/uio/uio0/device/resource*

如果HPET被使用了,那么同样的还有/dev/hpet

注意:在有些linux安装发型版本中,/dev/hugepages同样被作为大页内存的挂载点,在系统安装完成之后默认被创建。

5.电源管理和节能功能

Intel SpeedStep技术必须在BIOS平台中被开启,如果针对DPDK的电源管理功能被开启的话。否则系统文件夹 /sys/devices/system/cpu/cpu0/cpufreq将会不存在。这样会导致CPU frequency-based电源管理功能无法被使用。可以查阅相关厂商的BIOS文件来决定如何启用它们。

在Intel架构的BIOS平台下,开启Intel SppedStep的路径选项如下:
Advanced
-> Processor Configuration
-> Enhanced Intel SpeedStep® Tech

另外在电源管理系统中C3和C6应该开启。在同架构主板的BIOS中对应的位置如下:
Advanced
-> Processor Configuration
-> Processor C3 Advanced
-> Processor Configuration
-> Processor C6

6.使用Linux内核独立来减少上下报文的交换
为了能运行DPDK内核网卡接口的实例,需要加载额外的内核模块到正在运行的内核中。该模块可以在DPDK文件夹下的kmod子文件夹中找到。类似于加载igb_uio模块,这个模块需要使用如下命令来加载(假设当前目录位置是在DPDK的安装路径下)
insmod kmod/rte_kni.ko

可以参阅在DPDK简例应用中“Kernel NIC Interface Sample Application”章节,来获取更多的帮助。

7.使用Linux IOMMU passthrough技术来运行加载了Intel VT-d的DPDK

如果要在Linux内核中启用Intel VT-d技术,需要在内核模块中配置一系列的参数,这些参数包含:

IOMMU_SPUUORT
IOMMU_API
INTEL_IOMMU

当运行加在了VT-d的DPDK,并且使用了igb_uio驱动时,iommu=pt内核参数必须要添加上。这会使得在主机中passthrough会用DMAR(DMA重新映射)来加速访问读取。如果INTEL_IOMMU_DEFAULT在内核中没有设置,intel_iommu=on参数必须设置。这是为了确保Intel IOMMU在初始化的时候被正常加载。

当加载igb_uio驱动时,选项iommu=pt是必须加载的。如果使用vfio-pci驱动的话参数选择iommu=pt和iommu=on都是可以的。

官档翻译-启用High Precision Event Timer (HPET) Functionality相关推荐

  1. HPET(High Precision Event Timer)简要说明

    (由于之前的blog已经关闭了,所以将此文章迁移至这里,并非转载) HPET This page is not meant as a full description of HPET, only as ...

  2. 笔记:TDE数据库透明加密(官档翻译摘选)

    Transparent Data Encryption (TDE) TDE能够加密存储在表和表空间中的敏感数据,对于可以访问数据的数据库用户或应用程序,加密的数据被透明地解密.TDE有助于在存储媒体或 ...

  3. Elasticsearch官档翻译——2 2 在Linux上启动服务

    #在Linux上启动服务 为了在Linux上启动ES服务,官方提供的包尽可能让你在升级或重启集群的时候轻松地启停集群. 目前我们有构建debian和rpm两种安装包,都可以在下载页获取.包本身没有依赖 ...

  4. [dpdk] TSC , HPET, Timer, Event Timer,RDTSCP

    关于dpdk timer跨越CPU core调度的准确性问题 首先dpdk的timer接口里边使用 cpu cycle来比较时间.根据之前的内容 [dpdk] dpdk --lcores参数 当一个E ...

  5. NIFI Site to Site 安全模式资料学习整合(均来自官网翻译)

    NIFI Site to Site 安全模式资料学习整合(均来自官网翻译) 官网连接:Apache NiFi 文档 概述-翻译官网 当发送数据从一个NIFI示例到另一个NIFI实例,此处可以使用很多不 ...

  6. [参考文档] [翻译]Oracle 12c R2优化器白皮书

    [参考文档] [翻译]Oracle 12c R2优化器白皮书 原文链接: http://www.oracle.com/technetwor ... edb-12c-1963236.pdf 第一版翻译链 ...

  7. imp oracle full,Oracle 10g imp 之 full database (转官档)

    Using Export and Import to Move a Database Between Platforms 10g官档: The Export and Import utilities ...

  8. Linux内核:VFIO Mediated Device(vfio-mdev)内核文档(翻译)

    <ARM SMMU原理与IOMMU技术("VT-d" DMA.I/O虚拟化.内存虚拟化)> <提升KVM异构虚拟机启动效率:透传(pass-through).DM ...

  9. git lfs官网翻译

    git lfs官网翻译 下载地址:https://git-lfs.github.com/ git lfs说明: Git Large File Storage(LFS) 将大型文件(如音频示例.视频.数 ...

最新文章

  1. Erlang 之父去世,他留给程序员两点忠告
  2. 加载顺序_JAVA类代码块和属性的加载顺序问题,不要以为静态块始终最先执行了!...
  3. Oleans集群之Consul再解释
  4. 简单介绍蓝牙无线模块和手机进行的车数据交互技巧
  5. Markdown文档如何分页以及导出的PDF如何分页
  6. Bootstrap Table插件 页面跳转后再回来保存搜索的值
  7. 三维计算机视觉(二)--点云滤波
  8. Java中符号位扩展
  9. 正则表达式基础---转自 Python正则表达式指南 前边
  10. Excel 表格排版--会议记录表
  11. 苹果计算机 win10,苹果windows10怎么安装_苹果电脑安装win10教程
  12. Android keyevent值中文表
  13. 企业注销的债权债务如何处理
  14. WePhone网络电话灰色运营?专家:若无许可属非法
  15. 面向对象的设计原则(SOLID)
  16. eslint搭配prettier出现Replace `XXX` with `··········XXX·······`的问题解决方法
  17. 腾讯云常见云产品中的云硬盘(块存储)、文件存储、对象存储三者的区别!
  18. html中图片放css还是,图片到底是写在html还是写在css呢
  19. maven私服上传jar包
  20. 通过深度Q网络DQN构建游戏智能体

热门文章

  1. SLCP认证辅导,SLCP认证产品应覆盖不同的产品类别
  2. MT【18】幂平均不等式的证明
  3. python参数解析模块_Python系列教程(三十七):参数解析模块argparse
  4. 信息与电脑杂志信息与电脑杂志社信息与电脑编辑部2022年第8期目录
  5. 20T数据迁移经验:手把手教你群晖NAS数据迁移,黑裙晖通用!
  6. Linux中FTP设置登录欢迎词,怎么为FTP登陆用户设置欢迎语(servu)
  7. HTML + CSS + JS 10 分钟实现一个吃豆豆小游戏(给女朋友玩)
  8. DevOps落地实践及案例分享
  9. springboot+vue+安卓二手交易平台源码
  10. HDR视频色调映射算法(之五:flicker reduction TMO)