确定mapkeeper使用的leverdb库路径

目前libleveldb的a或so库有三个路径,/usr/lib, /usr/lib/x86_64-linux-gnu , /usr/local/lib

 使用

ls -d -1 /usr/lib/*  /usr/lib/x86_64-linux-gnu/*  /usr/local/lib/* |grep leveldb

列出他们的全路径。

(1)/usr/lib/x86_64-linux-gnu/libleveldb.a会起作用,注意重新编译时清空缓存已保证结果正确。编译出的

(2)/usr/lib/x86_64-linux-gnu/xxxlibleveldb.so不起作用

(3)/usr/local/lib/libleveldb.a会起作用,编译出的mapkeeper_leveldb大小为945KB。

 

leveldb1.8编译出的a库大小为797K, leveldb2.0编译出的a库为815K

 

*********注意***********, 如果mapkeeper服务端leveldb提示status: IO error: lock data/usertable/LOCK: already held by process,则操作是不成功的,即使ycsb这端显示成功。实际上leveldb数据库里没有任何变动。发现这一点是因为发现leveldb库的put函数没有被调用。

 

正常情况下,leveldb插入函数被调用的顺序是

dbimpl.cc, DBImpl::Put,begin
dbimpl.cc, DB::Put, begin
dbimpl.cc, DBImpl::Write begin

dbimpl.cc, MakeRoomForWrite, begin

 

经过打印发现,在mapkeeper下,options_.write_buffer_size=1073741824, 而在db_bench下,options_.write_buffer_size=4194304

而mapkeeper这个设置是在LevelDbServer.cpp里面的,options.write_buffer_size = writeBufferSizeMb_ * 1024 * 1024;

 cache size, kNoCompression等也是在这里设置的。

 

经过设置与db_bench一样的配置,ycsb单线程结果 

[OVERALL], RunTime(ms), 544708.0                  相比db_bench是200多秒,差了一倍多
[OVERALL], Throughput(ops/sec), 18358.45994551209

ycsb 8线程结果

[OVERALL], RunTime(ms), 458383.0
[OVERALL], Throughput(ops/sec), 21815.817776837273

16线程

[OVERALL], RunTime(ms), 433804.0
[OVERALL], Throughput(ops/sec), 23051.88518317028

 

转载于:https://www.cnblogs.com/bettersky/p/7628685.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值