使用巨大的页面TLB分配一些索引和Bloom过滤器

什么时候需要

当DB使用大量gigabytes(gb)的内存时,程序在访问内存中的数据时很可能会丢失TLB数据,同时也会丢失缓存来检索映射。 当使用一些mem表和表读取器提供的基于哈希表的索引和bloom过滤器时,用户更容易使用它,因为数据局部性更差。 这些索引和花是在巨大的TLB页面中分配的完美候选项。当您在支持该特性的数据结构中看到高数据TLB开销时,请考虑尝试一下。

目前,它只在Linux中受支持。

如何使用它

征用

  • 您需要在linux中预先预留大量页面

  • 找出要分配的巨大页面大小

有关详细信息,请参阅Linux文档 /vm/hugetlbpage.txt。

配置

以下是该功能可用的地方,以及如何使用:

  1. memtable的bloom过滤器: 设置Options.memtable_prefix_bloom_huge_page_tlb_size 为大页面大小
  2. 散列链表memtable的索引和bloom过滤器: 当调用NewHashLinkListRepFactory()为memtable创建工厂对象时,将巨大的页面大小传递给参数huge_page_tlb_size。
  3. PlainTableReader的索引和bloom过滤器. 当使用NewPlainTableFactory()或NewTotalOrderPlainTableFactory()为普通表创建表工厂时,将参数huge_page_tlb_size设置为巨大的页面大小。