1. THP(Transparent Huge Page)在 Linux 内核的角色?
透明大页(Transparent Huge Page,THP)在内核中扮演什么角色?它如何工作?
- THP 与 hugetlbfs 显式大页的区别
- khugepaged 后台扫描与 collapse 机制
- THP 对 TLB 命中率与内存分配的影响
THP 是内核自动将 4KB 小页合并为 2MB 大页的机制,对应用透明,无需显式调用 mmap 或 MAP_HUGETLB。它由内核后台线程 khugepaged 周期性扫描进程的映射,将满足条件的连续小页(多为匿名页)合并(collapse)为 2MB 大页,从而减少页表层级,降低 TLB miss。同时,THP 也支持在分配时直接使用大页(madvise 或 always 模式)。它通过 /sys/kernel/mm/transparent_hugepage/enabled 控制,可选 always、madvise、never 三种模式。
THP 的核心价值在于以最低的改造成本获得大页的 TLB 收益,同时避免显式大页需要预留和调整的复杂度。缺点是当部分页被访问时,大页可能被分裂回小页,以及 collapse 过程本身有 CPU 开销。