在Linux 64位系统里面,默认内存是以4K的页面(Page)来管理的,当系统有非常多的内存的时候,管理这些内存的消耗就比较大;而HugePage使用2M大小的页面来减小管理开销。

Hugepage的背景


操作系统对于数据的存取直接从内存要比从硬盘读写数据要快的多,但是内存是有限的,这样就引出了物理内存与虚拟内存的概念。虚拟内存是利用硬盘空间虚拟出的一块逻辑内存,这部分磁盘空间Windows下称之为虚拟内存,Linux下被称为交换空间(Swap Space)。

对于这个大内存的管理(物理内存+虚拟内存),大多数操作系统采用了分页的方式进行管理。分页方式可以避免内存空间的浪费。相应地,也就存在内存的物理地址与虚拟地址的概念,CPU必须把虚拟地址转换程物理内存地址才能真正访问内存。为了提高这个转换效率,CPU会缓存最近的虚拟内存地址和物理内存地址的映射关系,并保存在一个由CPU维护的映射表中(快表)。为了尽量提高内存的访问速度,需要在映射表中保存尽量多的映射关系。

linux的内存管理采取的是分页存取机制,为了保证物理内存能得到充分的利用,内核会按照LRU算法在适当的时候将内存中不经常使用的内存页自动交换到虚拟内存中,而将经常使用的信息保留到内存。通常情况下,Linux默认情况下每页是4K,这就意味着如果物理内存很大,则映射表的条目将会非常多,会影响CPU的检索效率。因为内存大小是固定的,为了减少映射表的条目,可采取的办法只有增加页的尺寸。因此Hugepage便因此而来。

Hugepages相关概念


  • Page Table:页表,也就是一种用于内存管理的实现方式,用于物理地址到逻辑地址之间的映射。因此对于内存的访问,先是访问Page Table,然后根据Page Table中的映射关系,隐式的转移到物理地址来存取数据。
  • TLB: Translation Lookaside Buffer (TLB) ,CPU中的一块固定大小的cache,包含了部分page table的映射关系,用于快速实现虚拟地址到物理地址的转换。
  • hugetlb: hugetlb 是TLB中指向HugePage的一个入口。

Regular Pages 与 HugePages


  • Regular Pages:在下图中有两个不同的进程,两个进程对于内存的访问是首先访问本地的page table,而本地的page table又参照了TLB,指向了实际的物理地址。图中物理地址page size大小4kb。

  • HugePages:在下图中,本地的page table 与TLB中都包含了huge page属性。因此page table中的任意一个page可能使用了常规的page,也有可能使用了huge page。

Hugepage 优点


  • 减少了TLB的工作量,由于使用了huge page,相同的内存大小情况下,管理的虚拟地址数量变少。
  • 增大TLB的覆盖范围,可以包含更多的地址空间,cpu的寻址能力相应的得到了增强。
  • 降低page table负载,消除page table查找负载,提高内存的整体性能。

使用Hugepage


在NUMA机器上,应该在单独的节点上明确分配页面(假定需要1024页):

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

查看Hugepage使用情况:

cat /proc/meminfo|grep Huge

如果已经配置好了大内存页机制,就可以让DPDK利用大内存页的机制了。

mkdir /mnt/huge
mount -t hugetlbfs nodev /mnt/huge

Hugepage介绍以及实践的更多相关文章

  1. 关于Axure RP软件的介绍——软件工程实践第二次个人作业

    关于Axure RP软件的介绍——软件工程实践第二次个人作业 Axure RP是一个非常专业的快速原型设计的一个工具,客户提出需求,然后根据需求定义和规格.设计功能和界面的专家能够快速创建应用软件或W ...

  2. RabbitMQ系列(三)RabbitMQ交换器Exchange介绍与实践

    RabbitMQ交换器Exchange介绍与实践 RabbitMQ系列文章 RabbitMQ在Ubuntu上的环境搭建 深入了解RabbitMQ工作原理及简单使用 RabbitMQ交换器Exchang ...

  3. RabbitMQ交换器Exchange介绍与实践

    RabbitMQ交换器Exchange介绍与实践 RabbitMQ系列文章 RabbitMQ在Ubuntu上的环境搭建 深入了解RabbitMQ工作原理及简单使用 RabbitMQ交换器Exchang ...

  4. 高并发应用场景下的负载均衡与故障转移实践,AgileEAS.NET SOA 负载均衡介绍与实践

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  5. SVN 分支及合并的介绍和实践---命令行

    写在前面 一些相关的概念和原理 进行分支开发的最佳实践 合并的分类 在 Eclipse 中进行合并操作 相关资源 写在前面 本文是由演讲整理而来的,介绍了 SVN 分支与合并的概念.流程和一些实际操作 ...

  6. CNN网络介绍与实践:王者荣耀英雄图片识别

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者介绍:高成才,腾讯Android开发工程师,2016.4月校招加入腾讯,主要负责企鹅电竞推流SDK.企鹅电竞APP的功能开发和技术优化工作 ...

  7. WPF: 只读依赖属性的介绍与实践

    在设计与开发 WPF 自定义控件时,我们常常为会控件添加一些依赖属性以便于绑定或动画等.事实上,除了能够添加正常的依赖属性外,我们还可以为控件添加只读依赖属性(以下统称"只读属性" ...

  8. 管理openstack多region介绍与实践

    转:http://www.cnblogs.com/zhoumingang/p/5514853.html 概念介绍 所谓openstack多region,就是多套openstack共享一个keyston ...

  9. openstack多region介绍与实践---转

    概念介绍 所谓openstack多region,就是多套openstack共享一个keystone和horizon.每个区域一套openstack环境,可以分布在不同的地理位置,只要网络可达就行.个人 ...

随机推荐

  1. 包(package),继承

    1.包(package) 1)为何用包 包用于管理程序中的类,主要解决类同名问题(它的唯一性),也可以看作是现实生活中的目录. 2)作用 —可以解决包的同名问题. —可以更好地管理类,有了包的概念,使 ...

  2. JavaScript基础注意点

    1.每个语句结尾一定加上分号 2.JavaScript本身对嵌套{ }的层级没有限制,但是过多的嵌套无疑会大大增加看懂代码的难度.遇到这种情况,需要把部分代码抽出来,作为函数来调用,这样可以减少代码的 ...

  3. mvc 在view视图中直接输出rdlc报表文件(Excel、PDF、Word)

    给一段代码做参考 public ActionResult RdlcReport(string code) { LocalReport localReport = new LocalReport(); ...

  4. SystemView SEGGER FreeRTOS 移植和使用

    /* 官方帮助英文翻译文档参考:https://blog.csdn.net/bjr2016/article/category/7275877. */ /* 移植文档参考:https://blog.cs ...

  5. 第2章 如何安装KEIL5

    第2章     如何安装KEIL5 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fireg ...

  6. JS设置cookie、读取cookie、删除cookie(转载)

    JavaScript是运行在客户端的脚本,因此一般是不能够设置Session的,因为Session是运行在服务器端的.而cookie是运行在客户端的,所以可以用JS来设置cookie.假设有这样一种情 ...

  7. 解决Ubuntu14.04安装Chrome浏览器打不开的问题

    1.安装Chrome浏览器 wget http://www.linuxidc.com/files/repo/google-chrome.list -P /etc/apt/sources.list.d/ ...

  8. 【本地服务器】利用openssl生成证书

    (一)下载openssl软件,解压,进入bin目录 下载地址 (二)1.在当前bin目录,按住shift键右击,选择"在此处打开命令窗口" 2.打开cmd命令窗口之后,在窗口中输入 ...

  9. MIPI Alliance (MIPI联盟)

    一.介绍 1.MIPI联盟,即移动产业处理器接口(Mobile Industry Processor Interface 简称MIPI)联盟.MIPI(移动产业处理器接口)是MIPI联盟发起的为移动应 ...

  10. 利用备份技术获取apk本地存储数据

    即使设备没有root,我们也可以通过物理访问设备来获取应用程序的数据,我们还可以通过此方法改变一个应用程序的数据.如果一个应用程序将数据存储在客户端, 使用简单的密码或pin检查,攻击者有可能使用这种 ...