更新时间:2026-03-30 GMT+08:00
THP与内存膨胀说明
正常情况下,Linux内存页大小是4KB。开启THP后,内核会尝试把多个4KB页合并成2MB的大页,这样可以减少TLBmiss,提高性能。在小对象场景下开启THP可能会出现内存膨胀(内部碎片),并增加OOM风险。
THP内存膨胀的原因
- 内部碎片。
- 一个2MB的大页如果只用了很小一部分,其余空间仍然被进程占用,不能给其他进程使用。
- 普通小页:申请8KB → 用两个4KB页 → 基本无浪费。
- THP:申请8KB → 内核分配一个2MB大页 → 实际只用8KB,剩下2MB 全算“已用”。
- 一个2MB的大页如果只用了很小一部分,其余空间仍然被进程占用,不能给其他进程使用。
- 分配粒度变大。
- THP以2MB为单位分配,容易让内存占用迅速膨胀。
- 内存回收不及时。
- THP的回收和迁移比4KB页更复杂,有时候会导致不能及时回收,从而表现为内存一直上涨。

膨胀的部分不会被统计进top的进程输出里面。
父主题:透明大页相关调优方法

