美文网首页操作系统DPDK
DPDK使用巨页的原因

DPDK使用巨页的原因

作者: 怀揣梦想的小少年 | 来源:发表于2019-08-29 19:00 被阅读0次

由于DPDK是运行在用户空间,而巨页是在内核态的,因此通过mmap实现了用户空间到内核空间的快速访问。

DPDK使用HUGETLBFS来使用大页。首先,它需要把大页mount到某个路径 比如 /mnt/huge。接下来,DPDK运行的时候,会使用mmap()系统调用把大页映射到用户态的虚拟地址空间,然后就可以正常使用了。

mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调用函数。相反,内核空间对这段区域的修改也直接反映用户空间,从而可以实现不同进程间的文件共享。如下图所示:

由上图可以看出,进程的虚拟地址空间,由多个虚拟内存区域构成。虚拟内存区域是进程的虚拟地址空间中的一个同质区间,即具有同样特性的连续地址范围。上图中所示的text数据段(代码段)、初始数据段、BSS数据段、堆、栈和内存映射,都是一个独立的虚拟内存区域。而为内存映射服务的地址空间处在堆栈之间的空余部分。

Linux内核使用vm_area_struct结构来表示一个独立的虚拟内存区域,由于每个不同质的虚拟内存区域功能和内部机制都不同,因此一个进程使用多个vm_area_struct结构来分别表示不同类型的虚拟内存区域。各个vm_area_struct结构使用链表或者树形结构链接,方便进程快速访问,如下图所示:

vm_area_struct结构中包含区域起始和终止地址以及其他相关信息,同时也包含一个vm_ops指针,其内部可引出所有针对这个区域可以使用的系统调用函数。这样,进程对某一虚拟内存区域的任何操作需要用要的信息,都可以从vm_area_struct中获得。mmap函数就是要创建一个新的vm_area_struct结构,并将其与文件的物理磁盘地址相连

参考:https://www.sohu.com/a/156968476_468741

相关文章

  • DPDK使用巨页的原因

    由于DPDK是运行在用户空间,而巨页是在内核态的,因此通过mmap实现了用户空间到内核空间的快速访问。 DPDK使...

  • ovs 基于dpdk性能优化的原理

    得益于用户态网络协议栈处理,用户空间,巨页,内存索引,数据预取, IPC等dpdk的设计,如下维度都有一定性能的提...

  • DPDK简单使用

    一、快速使用 官网下载DPDK。 解压: tar –xf dpdk.tar cd dpdk 配置: make co...

  • 内存,大页内存学习理解总结

    为什么要研究,学习,理解内存,大页内存? 马上下个项目需要用到dpdk。搭建dpdk需要配置大页内存。如果不是从本...

  • 非root用户使用dpdk初始化失败

    非root用户使用dpdk初始化失败 错误内容 非root用户使用dpdk初始化失败时(root用户没有问题),报...

  • 安装使用DPDK

    mTCP中使用DPDK将网卡上的数据提取到用户态,然后经过用户态的TCP/IP协议进行处理。DPDK全称Data ...

  • centos7 安装DPDK

    1.DPDK下载 下载dpdk18.05: wget http://fast.dpdk.org/rel/dpdk...

  • DPDK编程指南(翻译)( 三十一)

    31. 开发套件构建系统 DPDK 需要一个构建系统用于编译等操作。 本节介绍 DPDK 框架中使用的约束和机制。...

  • DPDK PDUMP使用

    参考文献:http://syswift.com/315.htmlhttps://www.cnblogs.com/y...

  • DPDK PKTGEN使用

    参考文献:https://www.jianshu.com/p/2229854a0d38https://blog.c...

网友评论

    本文标题:DPDK使用巨页的原因

    本文链接:https://www.haomeiwen.com/subject/nfjwectx.html