本文首发于我的公众号码农之屋(id: Spider1818),专注于干货分享,包含但不限于Java编程、网络技术、Linux内核及实操、容器技术等。欢迎大家关注,二维码文末可以扫。
一、什么是HugePages
直接从物理内存读写数据,要比从磁盘读写要快很多,但是物理内存是有限的,这才有了虚拟内存的概念。虚拟内存是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存(也就是我们用top命令看到的SwapSpace)。
对于这个大内存的管理,大多数操作系统采用了分段或分页的方式进行管理。分段是粗粒度的管理方式,而分页则是细粒度管理方式,可以避免内存空间的浪费。无论是采用分段还是分页的方式进行管理, CPU都必须要把虚拟地址转换程物理内存地址才能真正访问内存。为了提高这个转换效率,CPU会缓存最近的虚拟内存地址和物理内存地址的映射关系,并保存在一个由CPU维护的映射表中。为了尽量提高内存的访问速度,需要在映射表中保存尽量多的映射关系。
Linux系统采取的是分页存取机制,为了保证物理内存能得到充分的利用,内核会按照LRU算法在适当的时候将物理内存中不经常使用的内存页自动交换到虚拟内存中,而将经常使用的信息保留到物理内存。
通常情况下页表大小为4KB,这也意味了如果物理内存很大,映射表的条目将会非常多,而这会严重影响CPU的检索效率。因为内存大小是固定的,为了减少映射表的条目,可采取的办法只能通过增加页表大小,减少映射条目,而这也就是我们所知的HugePages技术。
二、HugePages相关术语
1)Page Table:一种用于内存管理的实现方式,用于虚拟地址与物理地址之间的映射。对于内存的访问,先访问Page Table,然后根据Table中的映射关系,转移到物理

本文介绍了Linux中的HugePages技术,旨在提高内存访问效率。HugePages通过增大页表大小减少映射条目,从而减轻TLB压力,减少页表管理开销,提升内存访问性能。同时,文章探讨了HugePages的优缺点,如不可交换性、预先分配需求及灵活性问题,并提供了实操步骤。
1461

被折叠的 条评论
为什么被折叠?



