
# THP与内存膨胀说明
正常情况下，Linux内存页大小是4KB。开启THP后，内核会尝试把多个4KB页合并成2MB的大页，这样可以减少TLB miss，提高性能。在小对象场景下开启THP可能会出现内存膨胀（内部碎片），并增加OOM风险。
#### THP内存膨胀的原因
1. 内部碎片。
   - 一个2MB的大页如果只用了很小一部分，其余空间仍然被进程占用，不能给其他进程使用。
     - 普通小页：申请8KB → 用两个4KB页 → 基本无浪费。
     
     - THP：申请8KB → 内核分配一个2MB大页 → 实际只用8KB，剩下2MB 全算"已用"。
      
    
2. 分配粒度变大。
   - THP以2MB为单位分配，容易让内存占用迅速膨胀。
    
3. 内存回收不及时。
   - THP的回收和迁移比4KB页更复杂，有时候会导致不能及时回收，从而表现为内存一直上涨。
    
 
![](https://support.huaweicloud.com/usermanual-hce/public_sys-resources/caution_3.0-zh-cn.png)
膨胀的部分不会被统计进top的进程输出里面。
