使用巨大的页面TLB分配一些索引和Bloom过滤器
什么时候需要
当DB使用大量gigabytes(gb)的内存时,程序在访问内存中的数据时很可能会丢失TLB数据,同时也会丢失缓存来检索映射。 当使用一些mem表和表读取器提供的基于哈希表的索引和bloom过滤器时,用户更容易使用它,因为数据局部性更差。 这些索引和花是在巨大的TLB页面中分配的完美候选项。当您在支持该特性的数据结构中看到高数据TLB开销时,请考虑尝试一下。
目前,它只在Linux中受支持。
如何使用它
征用
您需要在linux中预先预留大量页面
找出要分配的巨大页面大小
有关详细信息,请参阅Linux文档 /vm/hugetlbpage.txt。
配置
以下是该功能可用的地方,以及如何使用:
- memtable的bloom过滤器: 设置Options.memtable_prefix_bloom_huge_page_tlb_size 为大页面大小
- 散列链表memtable的索引和bloom过滤器: 当调用NewHashLinkListRepFactory()为memtable创建工厂对象时,将巨大的页面大小传递给参数huge_page_tlb_size。
- PlainTableReader的索引和bloom过滤器. 当使用NewPlainTableFactory()或NewTotalOrderPlainTableFactory()为普通表创建表工厂时,将参数huge_page_tlb_size设置为巨大的页面大小。