• Stars
    star
    203
  • Rank 192,890 (Top 4 %)
  • Language
    C
  • Created over 10 years ago
  • Updated almost 9 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

MICA: A Fast In-memory Key-Value Store (see isca2015 branch for the ISCA2015 version)

MICA

A fast in-memory key-value store.

Hardware Requirements

  • Dual CPU system
  • Intel 10 GbE NICs
  • Note: The current codebase has several assumptions on the hardware configuration of the server and clients. It runs ideally on a dual octa-core server with 4 dual-port 10 GbE NICs, and clients with 2 dual-port 10 GbE NICs.

Software Requrements

  • linux x86_64 >= 3.2.0
  • gcc >= 4.6.0
  • Python >= 2.7.0
  • Intel DPDK >= 1.5.0
  • bash >= 4.0.0
  • cmake >= 2.6.0
  • Hugepage (2 GiB) support

Executables

  • build/netbench_server: MICA server in cache mode (use with netbench_client)
  • build/netbench_server_store: MICA server in store mode (use with netbench_client)
  • build/netbench_server_latency: MICA server in cache mode modified for end-to-end latency measurement (use with netbench_client_latency)
  • build/netbench_server_soft_fdir: MICA server in cache mode using software-based request direction (use with netbench_client_soft_fdir)
  • build/netbench_client*: MICA clients
  • build/netbench_analysis: workload analyzer (used for generating preset configurations)
  • build/microbench: a local microbenchmark for MICA in cache mode
  • build/microbench_store: a local microbenchmark for MICA in store mode
  • build/test: a simple feature test program
  • build/load: a load factor experiment

Compiling Executables

# unpack DPDK as "DPDK" to the directory containing mica
$ cd mica/build
$ ../scripts/setup_dkdp_env.sh	# this uses sudo
$ ../configure_all.sh
$ make

Generating Configuration Files

# conf_* files determine how MICA uses system resources. build/gen_confs.py generates a preset of configuration files for a 16-core server and 12-core clients
# in mica
$ ./run_analysis_for_conf.py	# this uses sudo
$ ./gen_confs.py

Running a Server

# in mica/build
$ sudo ./netbench_server conf_machines_DATASET_CMODE_0.5 server 0 0 conf_prepopulation_empty
# DATASET=0,1,2 (used to determine how much memory to allocate); CMODE=EREW,CREW,CRCWS (specifies the data access mode)

Running a Client (e.g., client0)

# in mica/build
$ sudo ./netbench_client conf_machines_DATASET_CMODE_0.5 client0 0 0 conf_workload_DATASET_SKEW_GET_PUT_0.00_1
# DATASET=0,1,2 (specifies the dataset to use); SKEW=uniform,skewed,single (specifies the workload skew); GET/PUT=0.00,0.50,0.95,1.00 (specifies the read/write ratio)

Running a Local Microbenchmark

# in mica/build
$ sudo ./microbench CMODE SKEWNESS 0.5
# CMODE=EREW,CREW,CRCWS (specifies the data acces mode); SKEWNESS=0(uniform),0.99(skewed),99(single) (specifies the workload skew)

License

Copyright 2014 Carnegie Mellon University

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

More Repositories

1

libcuckoo

A high-performance, concurrent hash table
C++
1,540
star
2

cuckoofilter

C++
937
star
3

epaxos

Go
610
star
4

SuRF

First Practical and General-purpose Range Filter
C++
533
star
5

rdma_bench

A framework to understand RDMA
C
367
star
6

memc3

MemC3
C
150
star
7

HOPE

Order-preserving key encoder
C++
122
star
8

fasst

Source code for our OSDI 2016 paper
C++
106
star
9

HERD

Java
62
star
10

cicada-engine

The Cicada engine
C++
56
star
11

paper_skel

A LaTeX paper skeleton for CS systems conference formats
Python
55
star
12

ffbf

Feed-forward Bloom filters
C
52
star
13

rankselect

Space-Efficient, High-Performance Rank & Select Structures on Uncompressed Bit Sequences
C++
51
star
14

mica2

A fast in-memory key-value store
C++
49
star
15

libcuckoo-c

High-performance Concurrent Cuckoo Hashing Library
47
star
16

gopt

Fast packet processing using CPUs
C
38
star
17

go-cuckoo

A high-performance, memory-efficient concurrent hash table
Go
36
star
18

cuckooswitch

A software-based Ethernet switch design built around a memory-efficient, high-performance, and highly-concurrent hash table for compact and fast FIB lookup
C
34
star
19

fast-succinct-trie

C++
25
star
20

nvram

Tools for safe management of persistent main memory.
C
25
star
21

libinger

https://www.usenix.org/conference/atc20/presentation/boucher
Rust
24
star
22

qlease

Go
22
star
23

cicada

Dependably fast multi-core in-memory transactions
19
star
24

gobin-codegen

Automatic codegen for encoding/binary marshaling
Go
17
star
25

cicada-exp-sigmod2017

Cicada SIGMOD 2017 evaluation
Python
16
star
26

microservices_microbenchmarks

Code for the benchmarks presented in https://www.usenix.org/conference/atc18/presentation/boucher
Rust
12
star
27

ARF

C++
11
star
28

msls-eval

Accurate and Fast Evaluation of Multi-Stage Log-Structured Designs
C++
10
star
29

catbench

CATBench, the Intel Cache Allocation Technology benchmarking suite described in our tech report, "Simple Cache Partitioning for Networked Workloads"
C
10
star
30

cicada-exp-sigmod2017-DBx1000

A fork of DBx1000 for Cicada SIGMOD 2017 evaluation
C++
9
star
31

SuRF-demo

SuRF demo
C++
5
star
32

biblio

TeX
5
star
33

libas-safe

POSIX async-signal safety without thinking about it
C
3
star
34

mica2-catbench

MICA 2 and gRPC for CATBench
C++
1
star
35

cicada-exp-sigmod2017-silo

A fork of Silo for Cicada SIGMOD 2017 evaluation
C++
1
star
36

tokio

Forked from tokio-rs/tokio
Rust
1
star
37

cicada-exp-sigmod2017-silo-masstree-beta

A fork of masstree-beta (referenced by Silo) for Cicada SIGMOD 2017 evaluation
C++
1
star
38

cicada-exp-sigmod2017-ermia

A fork of ermia for Cicada SIGMOD 2017 evaluation
C++
1
star