什么是内存页面
在64位机器上,操作系统把逻辑地址映射成物理地址时,需要把映射关系也存储到一块内存中,这部分内容就是页表(PageTables)。目前系统默认内存以4KB为一个页,作为内存寻址的最小单元,随着内存和进程数的不断增大,页表的大小将会不断增大。内存是以块即页的方式进行管理的,当前大部分系统默认的页大小为 4096 bytes 即 4K 。 1MB 内存等于 256 页; 1GB 内存等于 256000 页。
Huge pages ( 标准大页 )
HugePages是Linux内核的一个特性,有时也叫“大内存页”、“内存大页”、“标准大页”。
Huge pages允许更大的页面管理内存,以替代4KB的页面大小。 Huge pages 有两种格式大小:2MB 和1GB ,2MB 页块大小适合用于 GB 大小的内存, 1GB 页块大小适合用于 TB 级别的内存;2MB 是默认的页大小。
Transparent Huge pages( 透明大页 )
Transparent Huge Pages 缩写 THP ,由于 Huge pages 很难手动管理,所以在 RHEL 6 开始引入的一个功能,在 Linux6 上透明大页是默认启用的。THP 是一个抽象层,能够自动创建、管理和使用传统大页。
大页内存的优势
1、适合大内存或内存密集型应用(例如数据库)的调优。
2、减小页表尺寸(避免页表过大),降低查找缓存(TLB,Translation Lookaside Buffer)的cache-miss,加速VM内存转换。
3、可以使花费在内存管理上的 CPU 时间更少,从而提高性能。
大页内存的缺点
1、需要进行额外设置,不同的数据库配置方法不同。
2、大页会提前分配内存。
大页内存与透明大页的关系
1、大页预分配内存,而想要使用这块内存,应用程序必须修改程序。 很容易造成了内存浪费。
2、透明大页管理采用动态分配的方式,不需要修改程序。
相关命令
查看标准大页的页面大小
[root@localhost ~]# grep Hugepagesize /proc/meminfo
Hugepagesize: 2048 kB检查当前的透明大页状态:如果输出结果为 [always] 表示透明大页启用了,[never] 表示透明大页禁用。
[root@localhost ~]$ cat /sys/kernel/mm/transparent_hugepage/defrag[always] madvise never[root@localhost ~]$ cat /sys/kernel/mm/transparent_hugepage/enabled[always] madvise never
最后修改时间:2022-12-05 15:50:32
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




