267 lines
8.9 KiB
Perl
Executable file
267 lines
8.9 KiB
Perl
Executable file
#!/usr/bin/perl -w
|
|
|
|
use strict;
|
|
|
|
my $num_threads = 50;
|
|
|
|
#
|
|
# Script to generate benchmarking scripts for the SOSP submission.
|
|
#
|
|
# This supports the following graphs:
|
|
#
|
|
# * Comparison with Berkeley DB:
|
|
#
|
|
# - Single-threaded raw throughput for LLADD's opeartions and
|
|
# Berkeley DB's storage methods.
|
|
#
|
|
# - Multithreaded hash-based transactions per second.
|
|
#
|
|
# - Multithreaded response time distributions
|
|
#
|
|
# * Object serialization benchmarks:
|
|
#
|
|
# - OASYS memory footprint (@todo: How to limit berkeley db's
|
|
# memory footprint?)
|
|
# o Three graphs (fixed memory pool size)
|
|
#
|
|
# 100% object changed / update
|
|
# 50%
|
|
# 10%
|
|
#
|
|
# o Three lines per Graph: LLADD diff, LLADD naive, Berkeley DB
|
|
#
|
|
# * Validation of flexibilty / ability to perform optimizations
|
|
#
|
|
# - Load burst absorption (LLADD w/ async vs LLADD w/out async)
|
|
#
|
|
# - Transitive closure (oo7 subset) (LLADD naive vs LLADD
|
|
# optimized: async + TsetRange())
|
|
#
|
|
# - CHT: Throughput vs number of replica groups: Disk Force vs
|
|
# Two sites in RAM.
|
|
#
|
|
#
|
|
|
|
|
|
## This perl script generates the input to timer.pl, which in turn
|
|
## generates the input to plotting.pl, which generates performance
|
|
## graphs. :)
|
|
|
|
|
|
## Single threaded raw-throughput graph:
|
|
|
|
open(LLADD_NTA_HASH, ">LLADD_NTA_HASH.script");
|
|
open(LLADD_FAST_HASH, ">LLADD_FAST_HASH.script");
|
|
open(LLADD_ARRAY_LIST, ">LLADD_ARRAY_LIST.script");
|
|
open(LLADD_LINKED_LIST, ">LLADD_LINKED_LIST.script");
|
|
open(LLADD_RECORDID, ">LLADD_RECORDID.script");
|
|
open(BDB_HASH, ">BDB_HASH.script");
|
|
open(BDB_RAW, ">BDB_RAW.script");
|
|
open(BULK_LOAD, ">BULK_LOAD.script");
|
|
open(BULK_LOAD_RAW, ">BULK_LOAD_RAW.script");
|
|
|
|
warn "cp ../berkeleyDB/bdbHashThreaded ../berkeleyDB/bdbRawThreaded";
|
|
#print BULK_LOAD "cp ../berkeleyDB/bdbHashThreaded ../berkeleyDB/bdbRawThreaded";
|
|
#print BULK_LOAD_RAW "cp ../berkeleyDB/bdbHashThreaded ../berkeleyDB/bdbRawThreaded";
|
|
|
|
for(my $i = 0; $i <= 2.5; $i +=0.25) {
|
|
my $insert_count = $i * 100000;
|
|
|
|
if($insert_count == 0) { $insert_count = 1; }
|
|
|
|
my $thread_count = 200;
|
|
my $threaded_insert_count = $insert_count / 200;
|
|
|
|
print LLADD_NTA_HASH "../linearHashNTAThreaded 1 $insert_count\n";
|
|
print LLADD_FAST_HASH "../logicalHash 1 $insert_count\n"; # could do ./naiveHash instead...
|
|
print BDB_HASH "../berkeleyDB/bdbHashThreaded 1 $insert_count 0 1\n";
|
|
|
|
print BULK_LOAD "../linearHashNTAThreaded 1 $insert_count\n";
|
|
print BULK_LOAD "../logicalHash 1 $insert_count\n"; # could do ./naiveHash instead...
|
|
print BULK_LOAD "../berkeleyDB/bdbHashThreaded 1 $insert_count 0 1\n";
|
|
}
|
|
for(my $i = 0; $i <= 10; $i++) {
|
|
|
|
my $insert_count = $i * 200000;
|
|
|
|
if($insert_count == 0) { $insert_count = 1; }
|
|
|
|
print LLADD_ARRAY_LIST "../arrayListSet 1 $insert_count\n";
|
|
print LLADD_LINKED_LIST "../pageOrientedListNTA 1 $insert_count\n"; # could do ./linkedList instead...
|
|
print LLADD_RECORDID "../rawSet 1 $insert_count\n";
|
|
print BDB_RAW "../berkeleyDB/bdbRawThreaded 1 $insert_count 0 0\n";
|
|
|
|
print BULK_LOAD_RAW "../arrayListSet 1 $insert_count\n";
|
|
if($i <= 1000000) {
|
|
print BULK_LOAD_RAW "../pageOrientedListNTA 1 $insert_count\n";
|
|
}
|
|
print BULK_LOAD_RAW "../linkedListNTA 1 $insert_count\n";
|
|
print BULK_LOAD_RAW "../rawSet 1 $insert_count\n";
|
|
print BULK_LOAD_RAW "../berkeleyDB/bdbHashThreaded 1 $insert_count 0 0\n";
|
|
}
|
|
|
|
close(LLADD_NTA_HASH);
|
|
close(LLADD_FAST_HASH);
|
|
close(LLADD_ARRAY_LIST);
|
|
close(LLADD_LINKED_LIST);
|
|
close(LLADD_RECORDID);
|
|
close(BDB_HASH);
|
|
close(BDB_RAW);
|
|
close(BULK_LOAD);
|
|
close(BULK_LOAD_RAW);
|
|
|
|
## Throughput vs. number of transactions
|
|
|
|
open(LLADD_HASH_TPS, ">LLADD_HASH_TPS.script");
|
|
open(BDB_HASH_TPS, ">BDB_HASH_TPS.script");
|
|
|
|
open(LLADD_RECNO_TPS, ">LLADD_RECNO_TPS.script");
|
|
open(BDB_RECNO_TPS, ">BDB_RECNO_TPS.script");
|
|
|
|
open(TPS, ">TPS.script");
|
|
|
|
for(my $i = 0; $i <= 80; $i +=5 ) {
|
|
my $insert_threads = $i ;
|
|
if($insert_threads == 0) {
|
|
$insert_threads = 1;
|
|
}
|
|
|
|
my $insert_per_thread = 500; # / $insert_threads;
|
|
|
|
# print LLADD_HASH_TPS "../linearHashNTAThreaded $insert_threads $insert_per_thread 1\n";
|
|
print BDB_HASH_TPS "../berkeleyDB/bdbHashThreaded $insert_threads $insert_per_thread 1 1\n";
|
|
|
|
print TPS "../linearHashNTAThreaded $insert_threads $insert_per_thread 1\n";
|
|
print TPS "../berkeleyDB/bdbHashThreaded $insert_threads $insert_per_thread 1 1\n";
|
|
|
|
}
|
|
|
|
for(my $i = 0; $i <= 800; $i += 50 ) {
|
|
my $insert_threads = $i;
|
|
if($insert_threads == 0) {
|
|
$insert_threads = 1;
|
|
}
|
|
|
|
my $insert_per_thread = 50; # / $insert_threads;
|
|
|
|
print LLADD_HASH_TPS "../linearHashNTAThreaded $insert_threads $insert_per_thread 1\n";
|
|
# print BDB_HASH_TPS "../berkeleyDB/bdbHashThreaded $insert_threads $insert_per_thread 1 1\n";
|
|
|
|
# print TPS "../linearHashNTAThreaded $insert_threads $insert_per_thread 1\n";
|
|
# print TPS "../berkeleyDB/bdbHashThreaded $insert_threads $insert_per_thread 1 1\n";
|
|
|
|
}
|
|
|
|
|
|
|
|
close(TPS);
|
|
|
|
## Response time degradation
|
|
|
|
open(LLADD_SEDA, ">LLADD_SEDA.script");
|
|
open(BDB_SEDA, ">BDB_SEDA.script");
|
|
|
|
open(SEDA, ">SEDA.script");
|
|
|
|
for(my $i = 1; $i <= 20; $i ++) {
|
|
# my $insert_count = $i * 100000;
|
|
my $num_threads = $i * 20;
|
|
my $tps_per_thread = 10;
|
|
print LLADD_SEDA "../linearHashNTAWriteRequests $num_threads $tps_per_thread 1\n";
|
|
print BDB_SEDA "../berkeleyDB/bdbHashWriteRequests $num_threads $tps_per_thread 1\n";
|
|
|
|
print SEDA "../linearHashNTAWriteRequests $num_threads $tps_per_thread 1\n";
|
|
print SEDA "../berkeleyDB/bdbHashWriteRequests $num_threads $tps_per_thread 1\n";
|
|
|
|
}
|
|
|
|
close LLADD_SEDA;
|
|
close BDB_SEDA;
|
|
close SEDA;
|
|
|
|
exit;
|
|
## ---------------- OASYS STUFF ---------------------------
|
|
|
|
# blah blah blah
|
|
|
|
## ---------------- ASYNC STUFF --------------------------
|
|
|
|
# load bursts
|
|
|
|
# trans closure
|
|
|
|
|
|
## ---------------- CHT STUFF -----------------------------
|
|
|
|
#cht vs # hosts.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#open(LLADD_THREADED, ">LLADD_THREADED.script" );
|
|
#open(LLADD_LOGICAL, ">LLADD_LOGICAL.script" );
|
|
#open(LLADD_PHYSICAL, ">LLADD_PHYSICAL.script" );
|
|
#open(LLADD_RAW_PHYSICAL, ">LLADD_RAW_PHYSICAL.script");
|
|
#open(BDB_RAW_INSERT, ">BDB_RAW_INSERT.script" );
|
|
#open(BDB_HASH_INSERT, ">BDB_HASH_INSERT.script" );
|
|
|
|
# New tests
|
|
|
|
#open(LLADD_NTA, ">LLADD_NTA.script");
|
|
#open(LLADD_LINKED_LIST, ">LLADD_LINKED_LIST.script");
|
|
#open(LLADD_PAGED_LIST, ">LLADD_PAGED_LIST.script");
|
|
#open(BDB_HASH_THREADED, ">BDB_HASH_THREADED.script");
|
|
|
|
#open(EVERYTHING, ">EVERYTHING.script" );
|
|
|
|
|
|
|
|
for(my $i = 1; $i <= 10; $i += .5) {
|
|
my $insert_count = $i * 100000;
|
|
|
|
my $threaded_insert_count = $insert_count / $num_threads;
|
|
|
|
print LLADD_THREADED "./linearHashNTAThreaded $num_threads $threaded_insert_count\n";
|
|
print LLADD_LOGICAL "./logicalHash 1 $insert_count\n";
|
|
print LLADD_PHYSICAL "./naiveHash 1 $insert_count\n";
|
|
print LLADD_RAW_PHYSICAL "./arrayListSet 1 $insert_count\n";
|
|
print BDB_RAW_INSERT "./berkeleyDB/bdbRaw 1 $insert_count\n";
|
|
print BDB_HASH_INSERT "./berkeleyDB/bdbHash 1 $insert_count\n";
|
|
|
|
print LLADD_NTA "./linearHashNTA 1 $insert_count\n";
|
|
print LLADD_LINKED_LIST "./linkedListNTA 1 $insert_count\n";
|
|
print LLADD_PAGED_LIST "./pageOrientedListNTA 1 $insert_count\n";
|
|
|
|
print BDB_HASH_THREADED "./berkeleyDB/bdbHashThreaded $num_threads $threaded_insert_count\n";
|
|
|
|
|
|
print EVERYTHING "./linearHashNTAThreaded $num_threads $threaded_insert_count\n";
|
|
print EVERYTHING "./logicalHash 1 $insert_count\n";
|
|
print EVERYTHING "./naiveHash 1 $insert_count\n";
|
|
print EVERYTHING "./arrayListSet 1 $insert_count\n";
|
|
print EVERYTHING "./berkeleyDB/bdbRaw 1 $insert_count\n";
|
|
|
|
print EVERYTHING "./linearHashNTA 1 $insert_count\n";
|
|
print EVERYTHING "./linkedListNTA 1 $insert_count\n";
|
|
print EVERYTHING "./pageOrientedListNTA 1 $insert_count\n";
|
|
|
|
if($i < 4) {
|
|
print EVERYTHING "./berkeleyDB/bdbHashThreaded $num_threads $threaded_insert_count\n";
|
|
print EVERYTHING "./berkeleyDB/bdbHash 1 $insert_count\n";
|
|
}
|
|
|
|
}
|
|
|
|
close(LLADD_THREADED);
|
|
close(LLADD_LOGICAL);
|
|
close(LLADD_PHYSICAL);
|
|
close(LLADD_RAW_PHYSICAL);
|
|
close(BDB_RAW_INSERT);
|
|
close(BDB_HASH_INSERT);
|
|
close(EVERYTHING);
|
|
close(LLADD_NTA);
|
|
close(LLADD_LINKED_LIST);
|
|
close(LLADD_PAGED_LIST);
|
|
close(BDB_HASH_THREADED);
|