Page Table Memory Consumption
4 days ago
- Linus Torvalds 认为树形结构的页表允许通过将相邻的条目存储在内存中的相邻位置来实现高效的TLB预取,这与哈希表将它们分散存储的方式不同。
- 尽管早期的Linux采用多级页表以优先考虑延迟,但后来的案例(例如Shakeel Butt 2020)表明,当许多进程映射同一内存时,每个进程都需要自己的页表,内存效率变得至关重要。
- 历史实例(Andrea Arcangeli 2002, Khalid Aziz 2022, Qi Zheng 2021)表明,随着进程数量增加或不当的内存释放,页表内存可能急剧增长,导致即使有充足RAM也会发生OOM崩溃。
- 数据库工作负载(Percona Postgres, ClickHouse)表明,当许多连接共享大缓冲区时,页表可能会膨胀到数十GB,而使用大页面可以缓解这一问题。
- NUMA机器引入了一个权衡:将页表保留在本地以实现低延迟,与在节点间复制页表但增加同步开销之间进行选择。