NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
# 大页内存与透明大页详解 ### 1.大页内存 大页内存(HugePages),有时也叫“大内存页”、“内存大页”、“标准大页”。操作系统以内存页为单位管理内存,内存页的大小对系统性能有影响。内存页设得太小,内存页会很多,管理内存页的数组会比较大,耗内存,同时TLB(Translation Lookaside Buffer,页表寄存缓冲器,可理解为页表缓冲)大小是固定的,导致TLB MISS增加。在不同的应用场合,内存页的大小的最优值是不同的。所以一般的系统都支持多种内存页的取值。 ### 2.大页内存的优势 “大内存页”有助于 Linux 系统进行虚拟内存管理。顾名思义,除了标准的4KB大小的页面外,它还能帮助管理内存中的巨大的页面(通常是2MB)。使用“大内存页”,你最大可以定义 1GB 的页面大小。对于那些内存操作非常频繁的业务来说,可以有效的提高性能。简而言之,通过启用大页内存,系统只需要处理较少的页面映射表,从而减少访问/维护它们的开销! ### 3.大页内存与透明大页的关系 大页内存类似专用内存,会从系统中抠出一块大内存,而想要使用这块内存,应用程序必须修改程序。 其次,如果程序内存使用较少,却申请了大页,就造成了内存浪费,这个时候就要用到透明大页(Transparent Huge Pages,THP)了。这两者的区别在于大页的分配机制:标准大页管理是预分配的方式,而透明大页管理则是动态分配的方式,且不需要修改程序源码。 ### 4.透明大页之功 THP 是一个提取层,可用于自动创建、管理和使用超大页面的大多数方面。THP可以改进系统的性能,可以减少使用超大页面的复杂行,目前THP已在各种系统、配置、程序和负载中测试优化,可以改进大多数系统配置的性能。 https://toutiao.io/posts/n4hzg1/preview AnonHugePages 解释说明 ### 5.关闭透明大页步骤 ``` [root@localhost ~]# vim /etc/grub2.cfg ##kernel行添加transparent_hugepage=never ##重启服务器 [root@localhost ~]# reboot ``` ![](https://img.kancloud.cn/d1/22/d12219b8d2c8983b1a4247d2412a8a39_1255x141.png) ``` [root@host-11-0-0-192 vm]# grep Huge /proc/meminfo AnonHugePages: 0 kB #0 kB 与透明大页有关,透明大页关闭,则显示0 ShmemHugePages: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 524288 kB Hugetlb: 0 kB ```