Git Product home page Git Product logo

xstore's Introduction

XStore: an RDMA-based Ordered Key-Value Store

XStore is an RDMA-enabled ordered key-value store targeted at a client-sever setting. Specifically, the server has an in-memory B+Tree; and the client uses one-sided RDMA READs to traverse the B+Tree. To accelerate the lookup, we deploy a learned cache (xcache) at the client to accomplish the traversal in one round-trip (if the learned cache is all cached). Even if the xcahe is not cached, XStore client only needs at most 2 round-trips for the traversal.

Feature Highlights

  • High-performance & scalable in-memory ordered key-value store
  • High-performance learned index with a two-layer RMI structure as a cache
  • Various machine learning models pre-built
  • Fast communication by leveraging RDMA feature of InfiniBand network

Features not supported yet

This codebase has the basic functionality of XStore, including basic XCache training, deployment, various learned models. It also provides various benchmark code for XCache analysis and static benchmark code. Other features will be released soon.

Getting Started

XStore is a header-only library. Basically, git clone https://github.com/SJTU-IPADS/xstore.git xstore-open --recursive is all you need to use XStore. To use XStore, just include the required header to your project. For instance, xkv_core/src/xtree/mod.hh provides the implementation of XTree.

XStore also provides various benchmark and unit tests code. To build these, please check the following documents:

License

XStore uses SATA License (Star And Thank Author License, originally here) :)

If you use XStore in your research, please cite our paper:

@inproceedings {xstore2020,
    author = {Xingda Wei and Rong Chen and Haibo Chen},
    title = {Fast RDMA-based Ordered Key-Value Store using Remote Learned Cache},
    booktitle = {14th {USENIX} Symposium on Operating Systems Design and Implementation ({OSDI} 20)},
    year = {2020},
    isbn = {978-1-939133-19-9},
    pages = {117--135},
    url = {https://www.usenix.org/conference/osdi20/presentation/wei},
    publisher = {{USENIX} Association},
    month = nov,
}

Academic and Reference Papers

[OSDI] Fast RDMA-based Ordered Key-Value Store using Remote Learned Cache. Xingda Wei and Rong Chen and Haibo Chen. Proceedings of 14th USENIX Symposium on Operating Systems Design and Implementation, Nov, 2020.

xstore's People

Contributors

projectmitosisos avatar wxdwfc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

xstore's Issues

About running workload YCSB-A/B/E

I setup the system and run workload YCSB-C/D successfully.
But when I tried to reproduce the YCSB-A/B/E results with the command from ./ae_scripts, it didn't work well.

  1. For YCSB-A/B:
    ./fserver -db_type ycsb --id 0 -ycsb_num=1000000 --no_train=false --step=2 --model_config=ae_scripts/ycsb-model.toml --threads 1
    ./ycsb -workloads ycsba -server_host 192.168.0.4 --id 1 -total_accts=1000000 -eval_type=sc --threads 1 -need_hash=false --cache_sz_m=327680 --eval_type=sc --concurrency=1 --undefok=concurrency,workloads,eval_type,total_accts,server_host,cache_sz_m,need_hash
    All logs that ./ycsb print show below. It print nothing after the last log in [clients.hpp:304].
    [mem_region.hpp:68] region manager alloc memory: 0x7f7576dff010
    [allocator_master.hpp:50] allocator master register memory: 2147483648
    [allocator_master.hpp:43] AllocatorMaster<0> inited multiple times
    [main.cc:121] 192.168.0.48888
    [main.cc:132] starting threads, using workload: ycsba
    [controler.hpp:28] controler main loop starts
    [rdma_ctrl.hpp:110] rdma ctrl started!
    [lib.hpp:43] fetch mr done
    [lib.hpp:50] create ud done
    [controler.hpp:118] controler start listening
    [clients.hpp:304] update second layer done using : 406277 msec

  2. For YCSB-E:
    ./fserver --id 0 -db_type dummy -ycsb_num 1000000 --model_config=ae_scripts/ycsb-dynamic-model.toml --threads 1
    ./micro -server_host 192.168.0.4 -id 1 -total_accts=1000000 --force_rpc=false --workloads=dynamic_scan --threads=1 --concurrency=1 --undefok=concurrency,force_rpc,threads,workloads,total_accts
    All logs that ./micro print show below.
    [mem_region.hpp:68] region manager alloc memory: 0x7fe7231ff010
    [allocator_master.hpp:50] allocator master register memory: 2147483648
    [allocator_master.hpp:43] AllocatorMaster<0> inited multiple times
    [dynamic_scan.hpp:27] client use dynamic changing workloads, V2
    [main.cc:295] starting 1 threads, using workload: dynamic_scan
    [main.cc:299] all threads start done
    [controler.hpp:28] micro controler main loop starts
    [rdma_ctrl.hpp:110] rdma ctrl started!
    [controler.hpp:40] memory regsiter done 75
    [lib.hpp:43] fetch mr done
    [lib.hpp:50] create ud done
    [controler.hpp:47] controler adapter done
    [controler.hpp:143] Micro controler starts.
    [dynamic_scan.hpp:478] start to bootstrap xcache!!!!!!!!!!!!!!!!!!
    [single_op.hpp:129] poll till completion error: 12 transport retry counter exceeded
    [seralize.hh:211] page entries: 0
    [seralize.hh:212] Assertion! seq: 0 0
    Aborted (core dumped)

  3. Did I run ./ycsb or ./micro with the right commands? What should I do to run YCSB-A/B/E?

About the machine setup

Hi Xingda,

Thanks for your quick response. I really appreciate it. I am a newbie in distributed computing, so I am stuck at the initial machine setup for this project.

Specifically, I have three machines with different IP addresses and they are connected via IB switch. I want to use one machine as the server and the other two as clients. But now I don't know how to modify the scripts and configuration files (e.g., /ae_scripts/ycsba.toml, cs.toml) to make this project work on my cluster.

BTW, I am using the 'legacy' branch of this project since the 'master' branch seems have less information about the benchmark.

Could you give me some specific guidance about the machine setup? Thank you very much.

Best,
Baotong

I cannot run ycsbd workload with the command written in the ycsbd.toml

Sorry,it is still me...
I have one machine for server and one machine for client. They are connected well with RoCE.
I run ycsbc and ycsba successfully. However when I try to run ycsbd, the client cannot response.
Because of something wrong in SSH when running bootstrap.py, I just use the commands in ycsbd.toml to reproduce.
Do the commands be used in the right way?
./fserver --threads 24 --id 0 -ycsb_num=20000 -db_type dummy -ycsb_num 20000000 --model_config=ae_scripts/ycsb-dynamic-model.toml
./micro --threads 24 -concurrency 1 -workloads dynamic2 -server_host 192.168.0.4 -id 1 -total_accts=10000000 -need_hash=true
client terminal prints below , after which prints nothing at all

[mem_region.hpp:68] region manager alloc memory: 0x7fcecb3ff010
[allocator_master.hpp:50] allocator master register memory: 2147483648
[allocator_master.hpp:43] AllocatorMaster<0> inited multiple times
[dynamic_expan.hh:23] client use dynamic changing workloads, V4
[main.cc:295] starting 24 threads, using workload: dynamic2
[main.cc:299] all threads start done
[controler.hpp:28] micro controler main loop starts
[rdma_ctrl.hpp:110] rdma ctrl started!
[controler.hpp:40] memory regsiter done 75
[lib.hpp:43] fetch mr done
[lib.hpp:50] create ud done
[controler.hpp:47] controler adapter done
[controler.hpp:143] Micro controler starts.

[ud_msg.cc:43] Assertion! when running ycsbc

I reproduce the experiment(XStore-legacy) at two different machines because of some accidents happened.
After well compiled, something went wrong while running ycsbc workload.
[ud_msg.cc:43] Assertion!
Ycsb client meets assertion when create ah, while never happens before.
Should I modify something at the new two machines?

./ycsb -workloads ycsbc -server_host 192.168.0.3 --id 1 -total_accts=1000000 --use_master=false --eval_type=sc --threads 1
[mem_region.hpp:68] region manager alloc memory: 0x7fe284fff010
[allocator_master.hpp:50] allocator master register memory: 2147483648
[allocator_master.hpp:43] AllocatorMaster<0> inited multiple times
[main.cc:131] starting threads, using workload: ycsbc
[main.cc:137] wait for thread to be ready
[rdma_ctrl.hpp:110] rdma ctrl started!
[ud_msg.cc:43] Assertion!
Aborted (core dumped)

ud_msg.cc:43
auto ah = create_ah(qp_, fetched_attr);
if (ah == nullptr)
{
ASSERT(false);
return ERR;
}
static ibv_ah *create_ah(UDQP *qp, const QPAttr &attr)
{
struct ibv_ah_attr ah_attr;
ah_attr.is_global = 1;
ah_attr.dlid = attr.lid;
ah_attr.sl = 0;
ah_attr.src_path_bits = 0;
ah_attr.port_num = attr.port_id;

ah_attr.grh.dgid.global.subnet_prefix = attr.addr.subnet_prefix;
ah_attr.grh.dgid.global.interface_id = attr.addr.interface_id;
ah_attr.grh.flow_label = 0;
ah_attr.grh.hop_limit = 255;
ah_attr.grh.sgid_index = qp->rnic_p->addr.local_id;
return ibv_create_ah(qp->rnic_p->pd, &ah_attr);
}

run ./fserver error with undefined symbol "omp_get_num_procs" in libmkl_intel_thread.so.1

After "make fserver" successfully, I try to run fserver.
But when I run fserver with "./fserver -db_type ycsb -model_config=ae_scripts/ycsb-model.toml", the terminal tells me that there is something wrong like below.
I have modified the "build-config.toml" , and make all successfully.

modified in build-config.toml
[externals]
mkl = { path = "/opt/intel/oneapi/mkl/latest", exports = ["mkl_rt"],lib = "lib/intel64",include="include"}

run fserver error
./fserver -db_type ycsb -model_config=ae_scripts/ycsb-model.toml
[main.cc:257] use configuration: Server config:
using memory for leaf nodes: 20.0000 GB;
allocated RDMA heap size: 8.0000 GB;
server communication type: ud.
of config file: server/config.toml
[memory_util.hpp:37] huge page alloc failed!
[memory_util.hpp:45] use default malloc for allocating page
[main.cc:271] use page mem: 21474836480
[allocator_master.hpp:50] allocator master register memory: 8587836416
[main.cc:277] Memory layout of the server: | meta 0x0:0x0+2MB | page 0x200000:0x200000+20GB | Heap 0x500200400:0x500200400+7.99805GB |
[main.cc:305] server wait for threads to join ...
[main.cc:307] Start populating DB: ycsb with num: 10000
[main.cc:167] B+tree load done, leaf sz: 384 rdma base: 140674674454544
[main.cc:183] start training!
[model_config.hpp:29] load second stage num: 2
[mod.hh:45] init XCache using 100000 sub models
[worker.hpp:98] Server: 0 use nic id: 1
./fserver: symbol lookup error: /opt/intel/oneapi/mkl/latest/lib/intel64/libmkl_intel_thread.so.1: undefined symbol: omp_get_num_procs

"ldd fserver" to find if the libmkl path is right
libmkl_rt.so.1 => /opt/intel/oneapi/mkl/latest/lib/intel64/libmkl_rt.so.1 (0x00007ff6527d9000)
"nm -D /opt/intel/oneapi/mkl/latest/lib/intel64/libmkl_rt.so.1" find that omp_get_num_procs is actually undefined
0000000002b27580 T mkl_vsl_serv_threader_sections
U omp_get_max_threads
U omp_get_nested
U omp_get_num_procs
U omp_get_num_threads
U omp_get_thread_num
U omp_in_parallel
U omp_set_nested
U pthread_getspecific
U pthread_key_create
U pthread_key_delete
U pthread_setspecific
U sin

编译make fserver遇到的问题以及解决方式

问题是在编译legacy分支时产生的;

能够解决的问题

function相关的问题

make fserver时候产生的报错:

/home/tyleryin/worker/xstore/deps/rlib/rpc_handler.hpp:15:30: error: ‘function’ in namespace ‘std’ does not name a template type
   15 |   using req_handler_f = std::function<Buf_t(const Buf_t& req)>;
      |                              ^~~~~~~~
/home/tyleryin/worker/xstore/deps/rlib/rpc_handler.hpp:1:1: note: ‘std::function’ is defined in header ‘<functional>’; did you forget to ‘#include <functional>’?
  +++ |+#include <functional>
    1 | #pragma once

这部分的解决方案是在/deps/rlib/rpc_handler.hpp的头文件或者include的头文件中加入#include <functional>

_xbegin相关的问题

接下来遇到的问题与issue3一样,如果能够保证MKL安装的没有问题(可能的验证方案参考回答),只需要在xstore/src/stores/utils/rtm_scope.hpp部分添加#include <immintrin.h>即可;

绑定类型相关的问题

目前我难以解决类型绑定相关的问题,报错如下:

In file included from /home/tyleryin/worker/xstore/src/stores/mod.hpp:3,
                 from /home/tyleryin/worker/xstore/server/controler/../internal/table.hpp:6,
                 from /home/tyleryin/worker/xstore/server/controler/../internal/tables.hpp:3,
                 from /home/tyleryin/worker/xstore/server/controler/handlers.hpp:8,
                 from /home/tyleryin/worker/xstore/server/startup.hpp:8,
                 from /home/tyleryin/worker/xstore/server/worker.hpp:14,
                 from /home/tyleryin/worker/xstore/server/main.cc:6:
/home/tyleryin/worker/xstore/src/stores/naive_tree.hpp: In instantiation of ‘VAL* fstore::store::NaiveTree<KEY, VAL, P>::insert(KEY, fstore::Option<std::pair<_FIter, _FIter> >&) [with KEY = long unsigned int; VAL = fstore::OpaqueData<8>; P = fstore::BlockPager; fstore::Option<std::pair<_FIter, _FIter> > = std::experimental::fundamentals_v1::optional<std::pair<long unsigned int, long unsigned int> >]’:
/home/tyleryin/worker/xstore/src/stores/naive_tree.hpp:185:16:   required from ‘std::pair<VAL*, std::experimental::fundamentals_v1::optional<std::pair<_FIter, _FIter> > > fstore::store::NaiveTree<KEY, VAL, P>::safe_get_with_insert_check_split(fstore::u64) [with KEY = long unsigned int; VAL = fstore::OpaqueData<8>; P = fstore::BlockPager; fstore::u64 = long unsigned int]’
/home/tyleryin/worker/xstore/server/controler/handlers.hpp:372:67:   required from here
/home/tyleryin/worker/xstore/src/stores/naive_tree.hpp:220:39: error: cannot bind packed field ‘new_leaf->fstore::store::LeafNode<long unsigned int, fstore::OpaqueData<8>, fstore::BlockPager>::keys[0]’ to ‘long unsigned int&’
  220 |         root = new Node(new_leaf->keys[0], root, new_leaf);
      |                         ~~~~~~~~~~~~~~^
/home/tyleryin/worker/xstore/src/stores/naive_tree.hpp: In instantiation of ‘VAL* fstore::store::NaiveTree<KEY, VAL, P>::insert(KEY, fstore::Option<std::pair<_FIter, _FIter> >&) [with KEY = long unsigned int; VAL = fstore::sources::tpcc::order_value*; P = fstore::MallocPager; fstore::Option<std::pair<_FIter, _FIter> > = std::experimental::fundamentals_v1::optional<std::pair<long unsigned int, long unsigned int> >]’:
/home/tyleryin/worker/xstore/src/stores/naive_tree.hpp:172:12:   required from ‘VAL* fstore::store::NaiveTree<KEY, VAL, P>::get_with_insert(fstore::u64) [with KEY = long unsigned int; VAL = fstore::sources::tpcc::order_value*; P = fstore::MallocPager; fstore::u64 = long unsigned int]’
/home/tyleryin/worker/xstore/src/stores/naive_tree.hpp:165:14:   required from ‘VAL* fstore::store::NaiveTree<KEY, VAL, P>::safe_get_with_insert(fstore::u64) [with KEY = long unsigned int; VAL = fstore::sources::tpcc::order_value*; P = fstore::MallocPager; fstore::u64 = long unsigned int]’
/home/tyleryin/worker/xstore/server/tpcc/./bootstrap.hpp:40:39:   required from here
/home/tyleryin/worker/xstore/src/stores/naive_tree.hpp:220:39: error: cannot bind packed field ‘new_leaf->fstore::store::LeafNode<long unsigned int, fstore::sources::tpcc::order_value*, fstore::MallocPager>::keys[0]’ to ‘long unsigned int&’
/home/tyleryin/worker/xstore/src/stores/naive_tree.hpp: In instantiation of ‘VAL* fstore::store::NaiveTree<KEY, VAL, P>::insert(KEY, fstore::Option<std::pair<_FIter, _FIter> >&) [with KEY = long unsigned int; VAL = fstore::sources::tpcc::ol_value*; P = fstore::MallocPager; fstore::Option<std::pair<_FIter, _FIter> > = std::experimental::fundamentals_v1::optional<std::pair<long unsigned int, long unsigned int> >]’:
/home/tyleryin/worker/xstore/src/stores/naive_tree.hpp:172:12:   required from ‘VAL* fstore::store::NaiveTree<KEY, VAL, P>::get_with_insert(fstore::u64) [with KEY = long unsigned int; VAL = fstore::sources::tpcc::ol_value*; P = fstore::MallocPager; fstore::u64 = long unsigned int]’
/home/tyleryin/worker/xstore/src/stores/naive_tree.hpp:165:14:   required from ‘VAL* fstore::store::NaiveTree<KEY, VAL, P>::safe_get_with_insert(fstore::u64) [with KEY = long unsigned int; VAL = fstore::sources::tpcc::ol_value*; P = fstore::MallocPager; fstore::u64 = long unsigned int]’
/home/tyleryin/worker/xstore/server/tpcc/tpcc_handlers.hpp:138:60:   required from here
/home/tyleryin/worker/xstore/src/stores/naive_tree.hpp:220:39: error: cannot bind packed field ‘new_leaf->fstore::store::LeafNode<long unsigned int, fstore::sources::tpcc::ol_value*, fstore::MallocPager>::keys[0]’ to ‘long unsigned int&’
In file included from /home/tyleryin/worker/xstore/src/model_config.hpp:4,
                 from /home/tyleryin/worker/xstore/server/controler/../internal/table.hpp:4,
                 from /home/tyleryin/worker/xstore/server/controler/../internal/tables.hpp:3,
                 from /home/tyleryin/worker/xstore/server/controler/handlers.hpp:8,
                 from /home/tyleryin/worker/xstore/server/startup.hpp:8,
                 from /home/tyleryin/worker/xstore/server/worker.hpp:14,
                 from /home/tyleryin/worker/xstore/server/main.cc:6:

我查看了这部分代码,这部分代码的error来自于类型转换的问题,可能可以的解决方案是在/xtore/src/stores/naive_tree.hpp中的第220行进行强制类型转换,修改成root = new Node((long unsigned int&)new_leaf->keys[0], root, new_leaf);;
不是很清楚这块应该如何正确的修改,因为这部分参数是KEY& k,其中KEY来自于template ;

compile error when make fserver

I have installed mkl, modify the build-toml, generate CMakeList.txt, make jemalloc and boost successfully,
but when do "make fserver", the terminal report errors like below.
Does it occur because of disable intel RTM?
How can I check the reason and re-enable it?

root@fs232:/home/wty/xstore-legacy# make fserver
Scanning dependencies of target gflags_nothreads_static
[ 5%] Building CXX object deps/ggflags/CMakeFiles/gflags_nothreads_static.dir/src/gflags.cc.o
[ 10%] Building CXX object deps/ggflags/CMakeFiles/gflags_nothreads_static.dir/src/gflags_reporting.cc.o
[ 10%] Building CXX object deps/ggflags/CMakeFiles/gflags_nothreads_static.dir/src/gflags_completions.cc.o
[ 15%] Linking CXX static library libgflags_nothreads.a
[ 15%] Built target gflags_nothreads_static
[ 45%] Built target boost
[ 75%] Built target jemalloc
Scanning dependencies of target fserver
[ 80%] Building CXX object CMakeFiles/fserver.dir/server/main.cc.o
In file included from /home/wty/xstore-legacy/server/config.hpp:3:0,
from /home/wty/xstore-legacy/server/main.cc:3:
/home/wty/xstore-legacy/src/common.hpp:16:32: warning: unknown option after ‘#pragma GCC diagnostic’ kind [-Wpragmas]
#pragma GCC diagnostic ignored "-W#warnings"
^~~~~~~~~~~~~
In file included from /home/wty/xstore-legacy/src/stores/naive_tree.hpp:8:0,
from /home/wty/xstore-legacy/src/stores/mod.hpp:3,
from /home/wty/xstore-legacy/server/controler/../internal/table.hpp:6,
from /home/wty/xstore-legacy/server/controler/../internal/tables.hpp:3,
from /home/wty/xstore-legacy/server/controler/handlers.hpp:8,
from /home/wty/xstore-legacy/server/startup.hpp:8,
from /home/wty/xstore-legacy/server/worker.hpp:14,
from /home/wty/xstore-legacy/server/main.cc:6:
/home/wty/xstore-legacy/src/stores/../utils/rtm_scope.hpp: In constructor ‘fstore::utils::RTMScope<MAX_NESTED, MAX_CAPACITY, MAX_CONFLICT>::RTMScope(fstore::utils::SpinLock*)’:
/home/wty/xstore-legacy/src/stores/../utils/rtm_scope.hpp:25:23: error: there are no arguments to ‘_xbegin’ that depend on a template parameter, so a declaration of ‘_xbegin’ must be available [-fpermissive]
unsigned stat = _xbegin();
^~~~~~~
/home/wty/xstore-legacy/src/stores/../utils/rtm_scope.hpp:25:23: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
/home/wty/xstore-legacy/src/stores/../utils/rtm_scope.hpp:27:18: error: ‘_XBEGIN_STARTED’ was not declared in this scope
if(stat == _XBEGIN_STARTED) {
^~~~~~~~~~~~~~~
/home/wty/xstore-legacy/src/stores/../utils/rtm_scope.hpp:31:11: error: there are no arguments to ‘_xabort’ that depend on a template parameter, so a declaration of ‘_xabort’ must be available [-fpermissive]
_xabort(fallback_abort_flag);
^~~~~~~
/home/wty/xstore-legacy/src/stores/../utils/rtm_scope.hpp:34:20: error: ‘_XABORT_NESTED’ was not declared in this scope
if((stat & _XABORT_NESTED) != 0)
^~~~~~~~~~~~~~
/home/wty/xstore-legacy/src/stores/../utils/rtm_scope.hpp:34:20: note: suggested alternative: ‘MAX_NESTED’
if((stat & _XABORT_NESTED) != 0)
^~~~~~~~~~~~~~
MAX_NESTED
/home/wty/xstore-legacy/src/stores/../utils/rtm_scope.hpp:38:25: error: ‘_XABORT_CONFLICT’ was not declared in this scope
else if((stat & _XABORT_CONFLICT) != 0) {
^~~~~~~~~~~~~~~~
/home/wty/xstore-legacy/src/stores/../utils/rtm_scope.hpp:38:25: note: suggested alternative: ‘MAX_CONFLICT’
else if((stat & _XABORT_CONFLICT) != 0) {
^~~~~~~~~~~~~~~~
MAX_CONFLICT
/home/wty/xstore-legacy/src/stores/../utils/rtm_scope.hpp:41:25: error: ‘_XABORT_CAPACITY’ was not declared in this scope
else if((stat & _XABORT_CAPACITY) != 0)
^~~~~~~~~~~~~~~~
/home/wty/xstore-legacy/src/stores/../utils/rtm_scope.hpp:41:25: note: suggested alternative: ‘MAX_CAPACITY’
else if((stat & _XABORT_CAPACITY) != 0)
^~~~~~~~~~~~~~~~
MAX_CAPACITY
/home/wty/xstore-legacy/src/stores/../utils/rtm_scope.hpp:43:21: error: ‘_XABORT_EXPLICIT’ was not declared in this scope
if ((stat & _XABORT_EXPLICIT) && _XABORT_CODE(stat) == fallback_abort_flag) {
^~~~~~~~~~~~~~~~
/home/wty/xstore-legacy/src/stores/../utils/rtm_scope.hpp:43:42: error: there are no arguments to ‘_XABORT_CODE’ that depend on a template parameter, so a declaration of ‘_XABORT_CODE’ must be available [-fpermissive]
if ((stat & _XABORT_EXPLICIT) && _XABORT_CODE(stat) == fallback_abort_flag) {
^~~~~~~~~~~~
/home/wty/xstore-legacy/src/stores/../utils/rtm_scope.hpp:45:13: error: there are no arguments to ‘_mm_pause’ that depend on a template parameter, so a declaration of ‘_mm_pause’ must be available [-fpermissive]
_mm_pause();
^~~~~~~~~
/home/wty/xstore-legacy/src/stores/../utils/rtm_scope.hpp: In destructor ‘fstore::utils::RTMScope<MAX_NESTED, MAX_CAPACITY, MAX_CONFLICT>::~RTMScope()’:
/home/wty/xstore-legacy/src/stores/../utils/rtm_scope.hpp:66:7: error: there are no arguments to ‘_xend’ that depend on a template parameter, so a declaration of ‘_xend’ must be available [-fpermissive]
_xend();
^~~~~

./fserver run-time error

when I run the following command: "./fserver -db_type ycsb -model-config=ycsb-model.toml", I get the following error:

[main.cc:257] use configuration: Server config:
using memory for leaf nodes: 5.0000 GB;
allocated RDMA heap size: 2.0000 GB;
server communication type: ud.
of config file: server/config.toml
[memory_util.hpp:37] huge page alloc failed!
[memory_util.hpp:45] use default malloc for allocating page
[main.cc:271] use page mem: 5368709120
[allocator_master.hpp:50] allocator master register memory: 2145385472
Segmentation fault (core dumped)

Does anybody know why this error happens?

Thanks in advance

Reduce #cores in the server side

Hi,

I know that currently #threads in the server side and client side must be equal for the benchmark.

But I want to decrease the #threads in the server, i.e., #threads in server < #threads in client. For example, only one thread is allowed in the server and all threads in the client are connected to this server thread.

Could you give some suggestions on how to modify the code to achieve this goal?

Baotong

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.