leveldb和mapkeeper相連參數設置

首先在測試時爲了保證參數和你的數據庫保持一致。比如options.max_file_size,options.block_size等等參數,需要在mapkeeper/leveldb下的leveldbserver.cpp中修改相應的參數或者是添加相應的參數。值得注意的是,在調用filter_policy方法的時候,單純的調用是會報錯的,所以需要在前面添加兩行:

#include <leveldb/filter_policy.h>
using namespace leveldb;

我設置的參數如下:

  leveldb::Options options;
        options.create_if_missing = true;
        options.error_if_exists = false;
        options.max_file_size = 64 * 1024 * 1024;
        options.block_size = 4096;
        options.write_buffer_size = 64 * 1024 * 1024; // 64MB write buffer
        options.block_cache = leveldb::NewLRUCache(10000L * 1048576L);  // 1.5GB cache
        options.compression = leveldb::kNoCompression;
        const FilterPolicy *filter_policy_ = NewBloomFilterPolicy(10);
        options.filter_policy = filter_policy_;

在輸入指令進行參數設置時,有我改進了之前網上的leveldbserver,改進後的leveldbserver可以在“我的下載”中下載。改進之後在指令執行的後面加上了四種參數,包括sync(是否進行同步,我設置的0表示不同步),blindinsert(是否盲插,設置的是1),blindupdate(是否盲更新,設置的是1),path(數據庫數據log路徑)。如果設置成sync = 1的話在進行load100M數據時,執行一天左右的時間(我的內存是32g,centos7)。

 ./mapkeeper_leveldb 0 1 1 /home/hsk/kvstore/software/mapkeeper/leveldb/data

這是我在mapkeeper下執行的命令,如果下載了我優化後的leveldbserver,需要重新執行make操作,生成新的mapkeeper_leveldb,然後再執行上面的操作。

然後在ycsb文件夾中新建一個批量load,run工作負載文件的腳本,記住在每次run完一個工作負載文件之後清空數據庫數據log路徑,(因爲不清空的話很有可能會報錯)。

bin/ycsb load mapkeeper -s -P workloads/workloada -p "mapkeeper.host=127.0.0.1" -p "mapkeeper.port=9090" > /home/hsk/kvstore/test_data/YCSB_leveldb/1_load.txt 2>&1
bin/ycsb run mapkeeper -s -P workloads/workloada -p "mapkeeper.host=127.0.0.1" -p "mapkeeper.port=9090" > /home/hsk/kvstore/test_data/YCSB_leveldb/1_run.txt 2>&1
rm -rf /home/hsk/kvstore/software/mapkeeper/leveldb/data/*
bin/ycsb load mapkeeper -s -P workloads/workloadb -p "mapkeeper.host=127.0.0.1" -p "mapkeeper.port=9090" > /home/hsk/kvstore/test_data/YCSB_leveldb/2_load.txt 2>&1
bin/ycsb run mapkeeper -s -P workloads/workloadb -p "mapkeeper.host=127.0.0.1" -p "mapkeeper.port=9090" > /home/hsk/kvstore/test_data/YCSB_leveldb/2_run.txt 2>&1
rm -rf /home/hsk/kvstore/software/mapkeeper/leveldb/data/*
bin/ycsb load mapkeeper -s -P workloads/workloadc -p "mapkeeper.host=127.0.0.1" -p "mapkeeper.port=9090" > /home/hsk/kvstore/test_data/YCSB_leveldb/3_load.txt 2>&1
bin/ycsb run mapkeeper -s -P workloads/workloadc -p "mapkeeper.host=127.0.0.1" -p "mapkeeper.port=9090" > /home/hsk/kvstore/test_data/YCSB_leveldb/3_run.txt 2>&1
rm -rf /home/hsk/kvstore/software/mapkeeper/leveldb/data/*
bin/ycsb load mapkeeper -s -P workloads/workloadd -p "mapkeeper.host=127.0.0.1" -p "mapkeeper.port=9090" > /home/hsk/kvstore/test_data/YCSB_leveldb/4_load.txt 2>&1
bin/ycsb run mapkeeper -s -P workloads/workloadd -p "mapkeeper.host=127.0.0.1" -p "mapkeeper.port=9090" > /home/hsk/kvstore/test_data/YCSB_leveldb/4_run.txt 2>&1
rm -rf /home/hsk/kvstore/software/mapkeeper/leveldb/data/*
bin/ycsb load mapkeeper -s -P workloads/workloade -p "mapkeeper.host=127.0.0.1" -p "mapkeeper.port=9090" > /home/hsk/kvstore/test_data/YCSB_leveldb/5_load.txt 2>&1
bin/ycsb run mapkeeper -s -P workloads/workloade -p "mapkeeper.host=127.0.0.1" -p "mapkeeper.port=9090" > /home/hsk/kvstore/test_data/YCSB_leveldb/5_run.txt 2>&1
rm -rf /home/hsk/kvstore/software/mapkeeper/leveldb/data/*
bin/ycsb load mapkeeper -s -P workloads/workloadf -p "mapkeeper.host=127.0.0.1" -p "mapkeeper.port=9090" > /home/hsk/kvstore/test_data/YCSB_leveldb/6_load.txt 2>&1
bin/ycsb run mapkeeper -s -P workloads/workloadf -p "mapkeeper.host=127.0.0.1" -p "mapkeeper.port=9090" > /home/hsk/kvstore/test_data/YCSB_leveldb/6_run.txt 2>&1
rm -rf /home/hsk/kvstore/software/mapkeeper/leveldb/data/*

然後執行:

chmod 777 run.sh
./run.sh

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章