HugePages是通过使用大页内存来取代传统的4kb内存页面,使得管理虚拟地址数变少,加快了从虚拟地址到物理地址的映射以及通过摒弃内存页面的换入换出以提高内存的整体性能。尤其是对于8GB以上的内存以及较大的Oracle SGA size,建议配值并使用HugePage特性。本文基于x86_64 Linux下来描述如何配值 HugePages。

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

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

linux的内存管理采取的是分页存取机制,为了保证物理内存能得到充分的利用,内核会按照LRU算法在适当的时候将物理内存中不经常使用的内存页自动交换到虚拟内存中,而将经常使用的信息保留到物理内存。通常情况下,Linux默认情况下每页是4K,这就意味着如果物理内存很大,则映射表的条目将会非常多,会影响CPU的检索效率。因为内存大小是固定的,为了减少映射表的条目,可采取的办法只有增加页的尺寸。因此Hugepage便因此而来。也就是打破传统的小页面的内存管理方式,使用大页面2m,4m,16m等等。如此一来映射条目则明显减少。如果系统有大量的物理内存(大于8G),则物理32位的操作系统还是64位的,都应该使用Hugepage。

二、hugepages相关概念
   Page Table: page table也就是一种用于内存管理的实现方式,用于物理地址到虚拟之间的映射。因此对于内存的访问,先是访问Page Table,然后根据Page Table 中的映射关系,隐式的转移到物理地址来存取数据。
TLB: Translation Lookaside Buffer (TLB) ,CPU中的一块固定大小的cache,包含了部分page table的映射关系,用于快速实现虚拟地址到物理地址的转换。
hugetlb: hugetlb 是TLB中指向HugePage的一个entry(通常大于4k或预定义页面大小)。 HugePage 通过hugetlb entries来实现,也可以理解为HugePage 是hugetlb page entry的一个句柄。
hugetlbfs: 一个类似于tmpfs的新的in-memory filesystem,在2.6内核被提出。

三、Regular Pages 与 HugePages
a、Regular Pages

在下图中有两个不同的进程,两个进程对于内存的访问是首先访问本地的page table,而本地的page table又参照了system-wide table的page(也就是前面描述的TLB),最终system-wide table中的entry指向了实际的物理地址。图中物理地址page size大小4kb。也可以看到进程1和进程2在system-wide table中都指向了page2,也就是同一个物理地址。Oracle sga中共享内存的使用会出现上述情形。

b、Huge Pages

在下图中,本地的page table 与system page table中都包含了huge page属性。因此page table中的任意一个page可能使用了常规的page,
也有可能使用了huge page。同样进程1和进程2都共享了其中的Hpage2。图中的物理内存常规的page size是4kb,huge page size 是4mb。

四、 hugepage 优点

对于较大的系统内存以及sga,使用hugepage可以极大程度的提高Oracle数据库性能。
a、Not swappable
无需交换。也就是不存在页面由于内存空间不足而存在换入换出的问题
b、Relief of TLB pressure
减轻TLB的压力,也就是降低了cpu cache可缓存的地址映射压力。由于使用了huge page,相同的内存大小情况下,管理的虚拟地址数量变少。
TLB entry可以包含更多的地址空间,cpu的寻址能力相应的得到了增强。
c、Decreased page table overhead
降低page table负载,对于普通的page,每个entry需要64bytes进行管理,对于50gb的内存,管理这些entry,需要800mb的大小
(50*1024*1024)kb/4kb*64bytes/1024/1024=800mb。
d、Eliminated page table lookup overhead
消除page table查找负载
e、Faster overall memory performance
提高内存的整体性能

参考 : http://blog.csdn.net/leshami/article/details/8777639

转载于:https://www.cnblogs.com/andy6/p/7479426.html

Linux 之 hugepage 大页内存理论相关推荐

  1. Linux之hugepage大页内存理论

    目录 1.Hugepage的引入 二.hugepages相关概念 三.Regular Pages 与 HugePages a.Regular Pages b.Huge Pages 四. hugepag ...

  2. Linux 调优篇:虚拟化调优(hugepage 大页内存)* 叁

    一. 大页(HugePages)概念     Hugepage的引入 二. hugepages相关概念 三.Regular Pages 与 HugePages     a.Regular Pages ...

  3. 大页内存的使用:HugePages(大内存页)的原理与使用

    <DPDK | 如何在用户空间使用大页内存hugepage> <DPDK内存篇(三): 标准大页.NUMA.DMA.IOMMU.IOVA.内存池> <大页内存的使用:大页 ...

  4. MySQL 开启大页内存

    1. 开启大页内存 概述: 有些硬件或操作系统支持大于默认值的内存页(通常为4KB),这个时取决于底层硬件和操作系统.执行大页内存可以检查设备缓冲区的丢失.也可以改进性能. MySQL 使用Innod ...

  5. linux 内存大页,Linux大页内存管理等---菜鸟初学

    1. 查看linux的内存情况: free -m 2. 查看是否开启大页的方法: cat /proc/meminfo |grep -i HugePage AnonHugePages: 276480 k ...

  6. 【内存】Linux 页表、大页与透明大页|大页内存

    目录 页表与MMU CPU访问的是什么地址(虚拟地址,物理地址)? MMU如何工作 MMU对内存的保护 多级页表 一. 内存映射与页表 1. 内存映射 2. 页表 4. 页表的简单工作原理 大页 什么 ...

  7. linux透明大页内存,rhel7.2 禁用透明的大页内存--transparent_hugepage(THP)

    rhel7.2 禁用透明的大页内存--transparent_hugepage(TPH) [root@rac1 tmp]# cat /etc/redhat-release Red Hat Enterp ...

  8. DPDK如何释放大页内存(巨页内存hugepage)

    按照官方文档说的 使用 int rte_eal_init(int argc, char **argv); 使用上面初始化的EAL应该使用下面的cleanup函数释放其初始化的资源 int rte_ea ...

  9. linux大页内存 grub,Centos7.2使用1G大页面内存

    1.创建大页内存挂接点 mkdir /mnt/huge_1GB mount -t hugetlbfs nodev /mnt/huge_1GB 2.在/etc/fstab文件中加入如下命令,使其重启后有 ...

最新文章

  1. cv2.threshold() 阈值:使用Python,OpenCV进行简单的图像分割
  2. linux 在硬盘中创建文件系统,linux mkfs命令创建Linux文件系统
  3. 努力学习 HTML5 (3)—— 改造传统的 HTML 页面
  4. hive 和mysql配置_Hive学习和配置Mysql
  5. python清理垃圾_用Python自动清理系统垃圾,再也不用360安全卫士了
  6. windows查看dll接口
  7. python线程监控_Python多线程的事件监控
  8. 操作系统课设实验五---Nachos文件系统扩展
  9. Python requests+BeautifulSoup 采集 安居客_新房信息
  10. 数字化测图是利用计算机自动绘制地形图,数字化测图详解
  11. Michele Maggiore《A Modern Introduction to Quantum Field Theory》(米歇尔·马焦雷《量子场论现代导引》)中文目录
  12. 全手动封装教程+SRS9.80102 文本教程(适合初学)
  13. python暴力破解rar压缩文件
  14. Field II 学习笔记(1):Matlab命令汇总
  15. Dadroit JSON Viewer 查看json文件的利器
  16. 一文带你了解APS生产计划排程系统
  17. R: 每年发表基因简单分析
  18. Chapter3.2 实现多个PLAYS
  19. Failed resolution of: Landroid/webkit/TracingController;
  20. JSON格式字符串解析,转换为JSONObject

热门文章

  1. Linux运维之--zabbix使用(实时更新)
  2. 一个维护版本日志整洁的Git提交规范
  3. ScrollReveal-元素随页面滚动产生动画的js插件
  4. 第三期 预测——2.输入和输出
  5. 今天没白过之《ls命令的颜色》
  6. zabbix 自定义监控
  7. end_request: I/O error
  8. 最大的脚本网站_网站页面性能优化注意事项
  9. 需要编写支持英特尔 x86 的 Android* 游戏应用? 此处的样本可为您提供帮助!
  10. 移动开发之我见--“Android开发生涯”