-
Notifications
You must be signed in to change notification settings - Fork 40
/
README
116 lines (92 loc) · 4.66 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
SETUP
-----------------------------
== Dependencies ==
nanomsg (nanomsg.org)
jemalloc (www.canonware.com/jemalloc)
HOW TO RUN
-----------------------------
Create a file called ifconfig.txt with IP addresses for the servers and clients, one per line.
$ make
$ ./rundb -nid[unique server ID] &
$ ./runcl -nid[unique client ID] &
DBMS BENCHMARK
------------------------------
== General Features ==
ddbms is a OLTP database benchmark with the following features.
1. Seven different concurrency control algorithms are supported.
NO_WAIT[1] : no wait two phase locking
WAIT_DIE[1] : wait and die two phase locking
TIMESTAMP[1] : basic T/O
MVCC[2] : multi-version T/O
OCC[3] : optimistic concurrency control (MaaT)
CALVIN[4] : Calvin
[1] Phlip Bernstein, Nathan Goodman, "Concurrency Control in Distributed Database Systems", Computing Surveys, June 1981
[2] Phlip Bernstein, Nathan Goodman, "Multiversion Concurrency Control -- Theory and Algorithms", Transactions on Database Systems, Dec 1983
[3] H. Mahmoud et al, "MaaT: Effective and Scalable Coordination of Distributed Transactions in the Cloud", VLDB 2014
[4] A. Thomson et al, "Calvin: Fast Distributed Transactions for Partitioned Database Systems", SIGMOD 2012
2. Three benchmarks are supported.
2.1 YCSB[5]
2.2 TPCC[6]
Only Payment and New Order transactions are modeled.
2.2 Product-Parts-Supplier (PPS)
[5] B. Cooper et al, "Benchmarking Cloud Serving Systems with YCSB", SoCC 201
[6] http://www.tpc.org/tpcc/
== Config File ==
dbms benchmark has the following parameters in the config file. Parameters with a * sign should not be changed.
CORE_CNT : number of cores modeled in the system.
NODE_CNT : number of computation nodes modeled in the system
PART_CNT : number of logical partitions in the system; Should equal CORE_CNT * NODE_CNT
THREAD_CNT : number of worker threads
REM_THREAD_CNT : number of message receiver threads
SEND_THREAD_CNT : number of message sender threads
TPORT_TYPE : communication protocol (TCP, IPC)
ENVIRONMENT_EC2 : true if running on Amazon EC2
PAGE_SIZE : memory page size
CL_SIZE : cache line size
DONE_TIMER : number of nanoseconds to run experiment
WARMUP_TIMER : number of nanoseconds to run for warmup
SEQ_BATCH_TIMER : number of nanoseconds between CALVIN batches
WORKLOAD : workload supported (TPCC, YCSB, or PPS)
CC_ALG : concurrency control algorithm (WAIT_DIE, NO_WAIT, TIMESTAMP, MVCC, CALVIN, or MAAT)
ISOLATION_LEVEL : system isolation level (SERIALIZABLE, READ_COMMITTED, READ_UNCOMMITTED, or NOLOCK)
THREAD_ALLOC : per thread allocator.
* MEM_PAD : enable memory padding to avoid false sharing.
MEM_ALLIGN : allocated blocks are alligned to MEM_ALLIGN bytes
* ROLL_BACK : roll back the modifications if a transaction aborts.
ENABLE_LATCH : enable latching in btree index
* CENTRAL_INDEX : centralized index structure
* CENTRAL_MANAGER : centralized lock/timestamp manager
INDEX_STRCT : data structure for index.
BTREE_ORDER : fanout of each B-tree node
TS_TWR : enable Thomas Write Rule (TWR) in TIMESTAMP
HIS_RECYCLE_LEN : in MVCC, history will be recycled if they are too long.
MAX_WRITE_SET : the max size of a write set in OCC.
MAX_ROW_PER_TXN : max number of rows touched per transaction.
QUERY_INTVL : the rate at which database queries come
MAX_TXN_PER_PART : maximum transactions to run per partition.
// for YCSB Benchmark
SYNTH_TABLE_SIZE : table size
ZIPF_THETA : theta in zipfian distribution (rows accessed follow zipfian distribution)
READ_PERC :
WRITE_PERC :
SCAN_PERC : percentage of read/write/scan queries. they should add up to 1.
SCAN_LEN : number of rows touched per scan query.
PART_PER_TXN : number of logical partitions to touch per transaction
PERC_MULTI_PART : percentage of multi-partition transactions
REQ_PER_QUERY : number of queries per transaction
FIRST_PART_LOCAL : with this being true, the first touched partition is always the local partition.
// for TPCC Benchmark
NUM_WH : number of warehouses being modeled.
PERC_PAYMENT : percentage of payment transactions.
DIST_PER_WH : number of districts in one warehouse
MAX_ITEMS : number of items modeled.
CUST_PER_DIST : number of customers per district
ORD_PER_DIST : number of orders per district
FIRSTNAME_LEN : length of first name
MIDDLE_LEN : length of middle name
LASTNAME_LEN : length of last name
// for PPS Benchmark
MAX_PPS_PART_KEY : number of parts in the parts table
MAX_PPS_PRODUCT_KEY : number of products in the products table
MAX_PPS_SUPPLIER_KEY : number of suppliers in the suppliers table
MAX_PPS_PARTS_PER : number of parts per product or supplier