linux内核:Transparent Huge Pages

要说linux内核,本人也是刚刚入门,借着公司的一个bug,趁机好好钻研一下,开拓下眼界,欢迎大牛前来指引踩踏。

要讨论Transparent Huge Pages,应当先从linux内存讲起:

见:大牛博客

32位计算机,即地址总线也为32位,寻址0~0xFFFFFFFF(4G)的地址空间,因此32位计算机仅可使用4G以下内存

linux内存采用分段分页机制,将逻辑地址转换为线性地址再转换为物理地址,该过程包含在MMU中,MMU(Memory Management Unit,内存管理单元)是一个物理硬件,见图片:
MMU描述

图片出处

内存被已页的形式管理,一页的大小为4096bytes,1MB的内存会被分为256页,1GB的内存将会被分为256000页,以此类推。
这些页的映射关系都存在在CPU的内置MMU中,有大量的内存映射表需要去管理,然而在现代CPU内置MMU中,处理数百,甚至数千的内存映射表是没有问题的,甚至可以通过交换(swap分区)来维持几G内存的映射表也可以很好的工作,但是当遇到某些应用(部分大型服务器)的内存需求已经超过了MMU可管理的内存映射表的范围时,系统性能将会受到影响,并且基于软件的内存管理,也会导致整个系统变得非常慢。

而Red Hat Enterprise Linux 6通过采用huge pages的方式解决这个问题。
简单来说,huge pages就是提高内存页的大小,例如,对于GB级别的内存,内存页大小设置为2MB,TB级别的则采用1GB大小的内存页,大小在内核参数中可配。而配置方法参见:Configure Huge Pages

相对应的,huge pages通过人工干预的方式较为复杂,并且还需要修改大量的代码来契合的使用它。为了解决这个问题,Red Hat Enterprise Linux 6实现了THP(transparent huge pages),说了这么多终于进入我们的主题了,THP是一个包含了自动创建,使用,管理huge pages的抽象层。他不对应用可见。保证了从系统到开发者的便捷。
为了保证它的性能,大量的开发者(来着社区和Red Hat)在大量的系统,应用,配置,负载等方面进行了测试和优化,保证了THP能够用默认配置来使系统达到最优。
然而,THP不推荐用于database工作负载

摘自:access.redhat.com
这里写图片描述

你可能感兴趣的:(内核,内存)