ZhangJiaQiao / 2019-DBMS-Project

This is the programmin project of DBMS course in 2019

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

fptree的期望性能

penhison opened this issue · comments

请问fptree的期望性能有多高?
我使用ycsb同样的代码测试leveldb和fptree,发现在load阶段fptree比leveldb慢了一倍,在run阶段两者性能差不多

在我们的实现中,每次修改叶子后都会立即调用LeafNode::persist,我们每次都判断叶子是否是pmem地址,若是则用pmem_persist持久化,如不是则用pmme_msync持久化,其实现代码为:

void LeafNode::persist() {
    if (pmem_is_pmem(this->pmem_addr, calLeafSize())) {
        pmem_persist(this->pmem_addr, calLeafSize());
    } else {
        pmem_msync(this->pmem_addr, calLeafSize());
    }
}

看官方文档,pmem_is_pmem非常费时,最好调用一次后将结果缓存起来

的确是pmem_is_pmem的问题,将结果提前缓存下来后在220w的测试结果中fptree的load阶段比leveldb快了20%,run阶段fptree比leveldb快3倍

一次修改对应持久化对应修改的位置即可,不用持久化整个叶子

叶子节点没有相对应的成员函数,是否可以自己添加必要的成员函数?