注意:巨页HP和THP不是一回事,HP俗称静态巨页,THP称为动态巨页,静态巨页是进程前用户自己定义好的,预分配,不会复制迁移,不会被转到swap分区,而THP由于是动态巨页,动态分配,会将内存复制迁移成巨页,造成性能消耗,几乎所有数据库应用都建议将THP关闭
先说结论:
- 页表大小跟页大小成反比(这里我觉得应该是页表数量,但是原文使用size),当页大小越大时,页表大小越小,因为当页大小变大时,通过后14位偏移量可以节省页表大小。因此,可以通过使页面更大来节省内存(或用于内存映射的其他资源)。
- 正如上一条所说,由于页表减少,通过偏移量访问速度会更快
- 可能通过网络将较大的页面传入或传出二级存储。 比传输较小的页面更有效(这一条直接翻译的,我没弄懂,内存页通过网络传输吗?)
- TLB条目的数量受到限制,所以一个更大的页代表着更多的内存会更有效率的分配,因此会减少TLB miss的数量
再提一下小页对性能影响(其实就是默认页大小,对比巨页来说😂)
- 较小页面大小的主要动机是节省存储空间,当虚拟内存的连续区域的大小不等于页面大小的倍数时小的页大小会浪费较少的空间,页面中未使用的内存的术语是内部碎片
- 当页大小非常大时(超过32KiB),存储(包括主存储和二级存储)都会被浪费,I/O带宽也相同
- 由于大部分进程都是比较小的,所以巨页会增加启动进程的时间