Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
b2bb11f
Fixed minor bug in compilation of EE with debug log enabled. Using ge…
Atreyee Jan 24, 2014
a6170c1
Merge pull request #151 from Atreyee/master
apavlo Jan 29, 2014
9d79330
test placeholder
mettamara Feb 20, 2014
34a05fb
naive round robin splitting of reconfiguration plan
mettamara Feb 21, 2014
58c7c3a
wip
aaronelmore Feb 21, 2014
303db76
Merge branch 'partitioning-planner' of https://github.com/rytaft/h-st…
mettamara Feb 21, 2014
e16afa4
Merge remote-tracking branch 'reb/split-planner' into split-planner
mettamara Feb 21, 2014
c59486e
Added code to ensure split plans are deterministic
Feb 21, 2014
01aac43
Merge remote-tracking branch 'reb/split-planner' into split-planner
mettamara Feb 21, 2014
5a42b66
rc with multi-plans
mettamara Feb 21, 2014
c0acee2
fixed bugs
Feb 23, 2014
e5d0f11
slowing down async pulls
Feb 23, 2014
03a7cf1
testing..
Feb 23, 2014
25ca188
increased thread sleep for next plan
Feb 23, 2014
3543191
pull down many hevents
mettamara Feb 25, 2014
f865e19
fixes to make elastic controller work without shared disk
Feb 25, 2014
48fe089
forgot to add this file
Feb 25, 2014
98bcf4a
added sysproc for remote reconfig
Feb 25, 2014
c8eb1b1
reconfig fixes
Feb 25, 2014
22f5c4e
added fixed monitoring code
marcoserafini Feb 25, 2014
3dda6af
some tweaks to reconfiguration
Feb 26, 2014
967936d
minor fix
Feb 26, 2014
618835e
fix ordering of splits
Feb 26, 2014
45c5edb
fixed sorting of reconfig pairs
Feb 26, 2014
bdbf06a
fixing reconfig util
Feb 26, 2014
a65a64f
grrr
Feb 26, 2014
4089a43
finally... sorting the pairs for the reconfig splits works
Feb 26, 2014
2b7aa0c
Merge remote-tracking branch 'becca/split-planner' into split-planner
marcoserafini Feb 26, 2014
7b028eb
fixed variable rate generator script
marcoserafini Feb 26, 2014
cf45c11
fixed merge from Marco
Feb 26, 2014
093b773
Merge remote branch 'marco/split-planner' into split-planner
Feb 26, 2014
35cec0e
precise cpu utilization per partition
marcoserafini Feb 27, 2014
910fc17
changed a comment
marcoserafini Feb 27, 2014
07d547f
poll all partitions anyway before starting reconfiguration, even if i…
marcoserafini Feb 27, 2014
d123055
Merge remote branch 'marco/split-planner-cpu' into split-planner
Feb 27, 2014
17d3374
change hstore home
Feb 27, 2014
8d1d95f
prints all CPU utilizations before triggering reconfiguration
marcoserafini Feb 27, 2014
d4aef5c
Merge remote branch 'marco/split-planner' into split-planner
Feb 27, 2014
cf0552a
fixed hstore home
Feb 27, 2014
33e6f2d
restored yscb.properties to correct value
marcoserafini Feb 27, 2014
54721bc
scripts in the controller now use the HSTORE_HOME variable
marcoserafini Feb 28, 2014
bb5b7b0
reverted to variables for hstore home (for the moment)
marcoserafini Feb 28, 2014
6ed74c4
works on barhee
marcoserafini Feb 28, 2014
558ea3c
better output messages
marcoserafini Feb 28, 2014
3c7efe1
added a comment
marcoserafini Mar 2, 2014
e92e944
change hstore home
Mar 4, 2014
262d9b9
added a new planner for greedy extended one tier
Mar 4, 2014
ea859de
fixed compile issues
Mar 4, 2014
4f14597
making polling more efficient
Mar 5, 2014
d97b2de
fixed compile error
Mar 5, 2014
823d626
Merge remote-tracking branch 'becca/split-planner' into split-planner
Mar 6, 2014
3b32a05
removed an extra set of calls to top
Mar 6, 2014
bed9075
fixed compile error
Mar 6, 2014
bd9abef
Merge remote-tracking branch 'becca/split-planner' into split-planner
Mar 7, 2014
8ec4da3
fixed cpu monitoring script for pids with only 3 digits
Mar 7, 2014
b4220fc
added two scripts to load data faster
Mar 10, 2014
5593398
Merge remote-tracking branch 'becca/split-planner' into split-planner
marcoserafini Mar 11, 2014
ddac9d8
using variable to call scripts
marcoserafini Mar 11, 2014
2991da1
Merge branch 'split-planner' of ssh://github.com/marcoserafini/h-stor…
marcoserafini Mar 11, 2014
d0ae5e3
make gcc 4.8.* happy
wanghaobuaa-creator Mar 12, 2014
648d965
fixed bug with null pointer reference for greedy extended one tiered
Mar 13, 2014
86e5e83
adding test case for reconfig pairs
Mar 14, 2014
6d5ae04
fixed bug with reconfiguration pairs
Mar 14, 2014
f2a6cc1
Fixed reconfiguration bugs!
Mar 15, 2014
53b89c0
Merge branch 'master' of https://github.com/apavlo/h-store into split…
marcoserafini Mar 16, 2014
fbd1b9a
small fixes to load.sh
marcoserafini Mar 16, 2014
2abd0d6
Merge remote branch 'becca/split-planner' into split-planner
marcoserafini Mar 21, 2014
e865f0d
Merge branch 'split-planner' of ssh://github.com/marcoserafini/h-stor…
marcoserafini Mar 21, 2014
af8213f
suppressed error messages from perl when getting cpu util data
marcoserafini Mar 21, 2014
c507daf
some fixes of the controller
marcoserafini Mar 23, 2014
afed61d
changes to HSTORE-HOME
Mar 26, 2014
75f9e95
Merge branch 'split-planner' of ssh://github.com/marcoserafini/h-stor…
marcoserafini Mar 26, 2014
ae4f384
iss153 added
jmeehan16 Apr 14, 2014
7346860
Fixed simple materialized views. We weren't initializing the fields w…
apavlo Apr 18, 2014
726c623
Removed materialized view in the Voter benchmark that is only needed …
apavlo Apr 18, 2014
4f01a1a
Merge remote-tracking branch 'andy/master' into split-planner
Apr 28, 2014
1b3e694
merged with Becca
marcoserafini Jun 15, 2014
b46c813
merged with becca/split-planner
marcoserafini Jun 17, 2014
3214191
Merged snapshot-related classes from jarulraj/master. It compiles now…
marcoserafini Jun 17, 2014
4a030d6
minor fixes
marcoserafini Jun 17, 2014
bd82314
added new testing files from the snapshotting branch
marcoserafini Jul 3, 2014
ea98063
fixed solved some problems with the TPCC regression test
marcoserafini Jul 8, 2014
426e73c
TPCC loading unit test without WAL recovery passes successfully
marcoserafini Jul 8, 2014
736901f
disabled the assertion that did not make me restore the snapshot
marcoserafini Jul 10, 2014
5f49fdf
made runOnce method public to enable TestYCSBLogicalRecovery
marcoserafini Jul 10, 2014
abc9a14
new ycsb properties
Jul 14, 2014
cc06e6e
fix null pointer issue
Jul 21, 2014
72b4308
fixed TransactionRTStats
Jul 27, 2014
3fee0e3
new plan
Jul 27, 2014
abd043c
deleted plan
Aug 4, 2014
b9bec31
new properties
Aug 4, 2014
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 119 additions & 0 deletions load.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
#!/bin/bash

if [ $# -lt 6 ]
then
echo "Load benchmark in the cluster (EStore project)"
echo "Parameters"
echo "1) benchmark type (e.g. ycsb, voter)"
echo "2) skew (uniform, high-skew, low-skew)"
echo "3) number of tuples"
echo "4) number of partitions per server"
echo "5) first server"
echo "6) initial number of servers"
echo "7) maximum number of servers"
echo "8) servers to skip (optional)"
echo
echo "Type DEF to continue with default parameters"
read command
if [ "$command" != "DEF" ]
then
exit
fi
fi

if [ -z "$1" ]
then
bench="ycsb"
else
bench=$1
fi

if [ -z "$2" ]
then
skew="high-skew"
else
skew=$2
fi

if [[ $2 =~ '(uniform|high-skew|low-skew)' ]]
then
echo "incorrect skew"
exit
fi

if [[ $2 == "uniform" ]]
then
sed -i".bak" '/requestdistribution/d' properties/benchmarks/ycsb.properties
sed -i".bak" '/skew_factor/d' properties/benchmarks/ycsb.properties
sed -i".bak" '/num_hot_spots/d' properties/benchmarks/ycsb.properties
sed -i".bak" '/percent_accesses_to_hot_spots/d' properties/benchmarks/ycsb.properties
echo "requestdistribution=uniform" >> properties/benchmarks/ycsb.properties
fi

if [[ $2 == "low-skew" ]]
then
sed -i".bak" '/requestdistribution/d' properties/benchmarks/ycsb.properties
sed -i".bak" '/skew_factor/d' properties/benchmarks/ycsb.properties
sed -i".bak" '/num_hot_spots/d' properties/benchmarks/ycsb.properties
sed -i".bak" '/percent_accesses_to_hot_spots/d' properties/benchmarks/ycsb.properties
echo "requestdistribution=zipfian" >> properties/benchmarks/ycsb.properties
echo "skew_factor = 0.65" >> properties/benchmarks/ycsb.properties
fi

if [[ $2 == "high-skew" ]]
then
sed -i".bak" '/requestdistribution/d' properties/benchmarks/ycsb.properties
sed -i".bak" '/skew_factor/d' properties/benchmarks/ycsb.properties
sed -i".bak" '/num_hot_spots/d' properties/benchmarks/ycsb.properties
sed -i".bak" '/percent_accesses_to_hot_spots/d' properties/benchmarks/ycsb.properties
echo "requestdistribution=zipfian" >> properties/benchmarks/ycsb.properties
echo "skew_factor = 0.65" >> properties/benchmarks/ycsb.properties
echo "num_hot_spots=30" >> properties/benchmarks/ycsb.properties
echo "percent_accesses_to_hot_spots=0.80" >> properties/benchmarks/ycsb.properties
fi

if [ -z "$3" ]
then
tuples=60000000
else
tuples=$3
fi
sed -i".bak" '/num_records/d' properties/benchmarks/ycsb.properties
echo "num_records = $tuples" >> properties/benchmarks/ycsb.properties

if [ -z "$4" ]
then
part_per_server=6
else
part_per_server=$4
fi

if [ -z "$5" ]
then
init_server=5
else
init_server=$5
fi

if [ -z "$6" ]
then
num_servers=5
else
num_servers=$6
fi

if [ -z "$7" ]
then
max_servers=5
else
max_servers=$7
fi

skip_list="${@:8}"
partitions=$(( $part_per_server * $num_servers ))

python scripts/reconfiguration/plan-generator.py -t ycsb -s $tuples -p $partitions > plan.json
echo "./prepare.sh $bench $init_server $max_servers $part_per_server $skip_list"
./prepare.sh $bench $init_server $max_servers $part_per_server $skip_list

ant hstore-benchmark -Dproject=$bench -Dglobal.hasher_plan=plan.json -Dglobal.hasher_class=edu.brown.hashing.TwoTieredRangeHasher -Dnoshutdown=true -Dnoexecute=true -Dsite.txn_restart_limit_sysproc=100 -Dsite.jvm_asserts=false -Dsite.reconfig_live=false | tee load.log
49 changes: 49 additions & 0 deletions prepare.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
#!/bin/bash


if [ $# -lt 4 ]
then
echo "Allocates partitions starting from server da${init_server}"
echo "Parameters"
echo "1) benchmark type (e.g. tpcc, ycsb)"
echo "2) initial server"
echo "3) number of servers"
echo "4) number of partitions per server"
echo "5) servers to skip (optional)"
exit
fi

cmd="ant hstore-prepare -Dproject=$1 -Dhosts=\""
init_server=$2
num_servers=$3
part_per_server=$4
skip_list="${@:5}"

curr_host=0
curr_part=0
first_loop=""

for (( var=1; var<=$num_servers; var++ ))
do
end_part=`expr $curr_part + $part_per_server - 1`
curr_server=`expr $init_server + $curr_host`
if [[ $skip_list =~ $curr_server ]]
then
var=`expr $var - 1`
curr_host=`expr $curr_host + 1`
else
if [ "$curr_server" -lt "10" ]
then
cmd="${cmd}${first_loop}da0${curr_server}:${curr_host}:${curr_part}-${end_part}"
else
cmd="${cmd}${first_loop}da${curr_server}:${curr_host}:${curr_part}-${end_part}"
fi
curr_part=`expr $curr_part + $part_per_server`
curr_host=`expr $curr_host + 1`
first_loop=";"
fi
done

echo "$cmd\""
set -x
eval "$cmd\""
17 changes: 6 additions & 11 deletions properties/benchmarks/ycsb.properties
Original file line number Diff line number Diff line change
Expand Up @@ -5,33 +5,28 @@
builder = edu.brown.benchmark.ycsb.YCSBProjectBuilder

# If 'fixed_size' is set to true, then then the YCSBLoader will
# only add the number of tuples defined in 'num_records'

# Specify the distribution for key selection
#requestdistribution=custom
#requestdistribution=uniform
requestdistribution=zipfian

# Override operation weights
ReadRecordProportion=0.85
UpdateRecordProportion=0.15
#ScanRecordProportion=0.30

fixed_size = true
num_records = 60000000
loadthreads = 1
#loadthreads = 1

# Zipfian skew factor for tuple access
# for 95% of accesses -> 5% of tuples
#skew_factor = 1.27
# something in the middle
#skew_factor = 0.96
# for 2/3 of accesses -> 1/3 of tuples
skew_factor = 0.65
#scrambled=true
#mirrored=true
#interval=3000
#shift=5
#random_shift=false
num_hot_spots=30
percent_accesses_to_hot_spots=0.80
requestdistribution=zipfian
skew_factor = 0.65
num_records = 600000
num_hot_spots=40
percent_accesses_to_hot_spots=0.60
16 changes: 16 additions & 0 deletions scripts/partitioning/cpu_partition_monitor.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/bin/bash

if [ $# -eq 0 ]
then
echo ""
echo "enter site ID (two digits) and partition ID (three digits)"
echo "the site and the partitions must be local"
echo "example: ${0} 00 001 checks site 0 and partition 1"
echo ""
exit
fi

PID=$(top -n1 | grep -m1 java | perl -pe 's/\e\[?.*?[\@-~] ? ?//g' 2> /dev/null | cut -f1 -d' ')
#PID=$(top -n1 | grep -m1 java | cut -f1 -d' ')
NID=$(printf '%d' $(jstack $PID | grep -m1 "H${1}-${2}" | cut -d '=' -f 4 | cut -d ' ' -f 1))
top -H -n1 | grep java | grep -m1 $NID
24 changes: 15 additions & 9 deletions scripts/partitioning/verticalskew.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,13 @@ def sinewave(steps, max_factor, frequency = 2.0):
print "ERROR: frequency must be greater than one"
exit(1)

for current in range(steps):
lastRate = 1.0
for current in range(1, steps+1):
ampl = (max_factor - 1.0) / 2.0
radians = math.pi * 2 * (frequency * float(current)/float(steps))
res.append(ampl * math.sin(radians + 1.5 * math.pi) + ampl + 1.0)
currentRate = ampl * math.sin(radians + 1.5 * math.pi) + ampl + 1.0
res.append(currentRate/lastRate)
lastRate = currentRate

return res

Expand All @@ -50,9 +53,12 @@ def linear(steps, max_factor):
print "ERROR: steps must be greater than one"
exit(1)

increment = (max_factor - 1.0) / float(steps)
for current in range(steps):
res.append(1.0 + float(current) * increment);
lastRate = 1.0
stepIncrement = (max_factor - 1.0) / (float(steps) - 1)
for current in range(1, steps+1):
currentRate = 1.0 + float(current) * stepIncrement
res.append(currentRate / lastRate);
lastRate = currentRate

return res

Expand Down Expand Up @@ -85,16 +91,16 @@ def spike(steps, max_factor, period, duration):
exit(1)

in_spike = False
last_spike = 0
for current in range(1,steps+1):
if not in_spike and current % period == 0:
if not in_spike and (current - last_spike) % period == 0:
in_spike = True
spike_started = current
res.append(max_factor)
elif in_spike and (current - spike_started) < duration:
res.append(max_factor)
elif in_spike and (current - spike_started) >= duration:
in_spike = False
res.append(1.0)
last_spike = current
res.append(1.0 / max_factor)
else:
res.append(1.0)

Expand Down
32 changes: 32 additions & 0 deletions scripts/reconfiguration/slurp-hevent.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#! /bin/bash
#The file to pull
hevent_file=~/git/h-store/hevent.log

#clean up
rm -rf err
while read line
do
name=$line
rm -rf $name
done < hosts.txt

#get files
touch hevent-merge.log
parallel-slurp -h hosts.txt -e err -o out $hevent_file hevent.log
while read line
do
name=$line
cat $name/hevent.log >> hevent-merge.log
done < hosts.txt

#merge
sort hevent-merge.log > hevent.log
rm hevent-merge.log

#clean up downloaded individual files
rm -rf out
while read line
do
name=$line
rm -rf $name
done < hosts.txt
3 changes: 2 additions & 1 deletion src/benchmarks/edu/brown/benchmark/voter/voter-ddl.sql
Original file line number Diff line number Diff line change
Expand Up @@ -64,4 +64,5 @@ AS
FROM votes
GROUP BY contestant_number
, state
;
;

2 changes: 1 addition & 1 deletion src/benchmarks/edu/brown/benchmark/ycsb/YCSBClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ public void runLoop() {
}

@Override
protected boolean runOnce() throws IOException {
public boolean runOnce() throws IOException {
// pick random transaction to call, weighted by txnWeights
final Transaction target = this.txnWeights.nextValue();

Expand Down
2 changes: 1 addition & 1 deletion src/benchmarks/org/voltdb/benchmark/tpcc/TPCCClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -565,7 +565,7 @@ protected int getExpectedOutgoingMessageSize() {
}

@Override
protected boolean runOnce() throws NoConnectionsException {
public boolean runOnce() throws NoConnectionsException {
m_blockOnBackpressure = false;
// will send procedures to first connection w/o backpressure
// if all connections have backpressure, will round robin across
Expand Down
10 changes: 5 additions & 5 deletions src/ee/indexes/indexkey.h
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ class IntsKey {
* in this next uint64_t.
*/
if (intraKeyOffset < 0) {
intraKeyOffset = sizeof(uint64_t) - 1;
intraKeyOffset = (int)sizeof(uint64_t) - 1;
keyOffset++;
}
}
Expand All @@ -174,7 +174,7 @@ class IntsKey {
retval |= (0xFF & (data[keyOffset] >> (intraKeyOffset * 8))) << (ii * 8);
intraKeyOffset--;
if (intraKeyOffset < 0) {
intraKeyOffset = sizeof(uint64_t) - 1;
intraKeyOffset = (int)sizeof(uint64_t) - 1;
keyOffset++;
}
}
Expand All @@ -184,7 +184,7 @@ class IntsKey {
std::string debug( const voltdb::TupleSchema *keySchema) const {
std::ostringstream buffer;
int keyOffset = 0;
int intraKeyOffset = sizeof(uint64_t) - 1;
int intraKeyOffset = (int)sizeof(uint64_t) - 1;
const int columnCount = keySchema->columnCount();
for (int ii = 0; ii < columnCount; ii++) {
switch(keySchema->columnType(ii)) {
Expand Down Expand Up @@ -222,7 +222,7 @@ class IntsKey {
const TupleSchema *keySchema = tuple->getSchema();
const int columnCount = keySchema->columnCount();
int keyOffset = 0;
int intraKeyOffset = sizeof(uint64_t) - 1;
int intraKeyOffset = (int)sizeof(uint64_t) - 1;
for (int ii = 0; ii < columnCount; ii++) {
switch(keySchema->columnType(ii)) {
case voltdb::VALUE_TYPE_BIGINT: {
Expand Down Expand Up @@ -260,7 +260,7 @@ class IntsKey {
::memset(data, 0, keySize * sizeof(uint64_t));
const int columnCount = keySchema->columnCount();
int keyOffset = 0;
int intraKeyOffset = sizeof(uint64_t) - 1;
int intraKeyOffset = (int)sizeof(uint64_t) - 1;
for (int ii = 0; ii < columnCount; ii++) {
switch(keySchema->columnType(ii)) {
case voltdb::VALUE_TYPE_BIGINT: {
Expand Down
Loading