Balancing CPU and Network in the Cell Distributed B-Tree Store

  • Christopher Mitchell ,
  • Kate Montgomery ,
  • Lamont Nelson ,
  • Jinyang Li

Proc. USENIX Annual Technical Conference (ATC) |

In traditional client-server designs, all requests are processed
at the server storing the state, thereby maintaining
strict locality between computation and state. The adoption
of RDMA (Remote Direct Memory Access) makes
it practical to relax locality by letting clients fetch server
state and process requests themselves. Such client-side
processing improves performance when the server CPU,
instead of the network, is the bottleneck.We observe that
combining server-side and client-side processing allows
systems to balance and adapt to the available CPU and
network resources with minimal configuration, and can
free resources for other CPU-intensive work.
We present Cell, a distributed B-tree store that combines
client-side and server-side processing. Cell distributes
a global B-tree of “fat” (64MB) nodes across
machines for server-side searches. Within each fat node,
Cell organizes keys as a local B-tree of RDMA-friendly
small nodes for client-side searches. Cell clients dynamically
select whether to use client-side or server-side processing
in response to available resources and the current
workload. Our evaluation on a large RDMA-capable
cluster show that Cell scales well and that its dynamic
selector effectively responds to resource availability and
workload properties.