-
Notifications
You must be signed in to change notification settings - Fork 12
Benchmarking Scripts
The */benchmark/ folder is organized as follows:
| Folder | Description |
|---|---|
common/ |
common scripts sourced by other benchmarking scripts |
datasets/ |
load-file.sh and format converters
|
<system>/ |
system-specific scripts (including Hadoop) |
parsers/ |
log checker and log parser |
| File | Description |
|---|---|
init-all.sh |
initializes Hadoop, HDFS, and calls each system's init.sh
|
bench-all.sh |
runs each system's benchall.sh script |
local-init.sh |
initializes Hadoop, HDFS, and all systems for local testing |
The scripts in */benchmark/common do the following:
| File | Description |
|---|---|
bench-finish.sh |
completes a run by pulling logs from the worker machines (to the master) and terminating sar/free instances |
bench-init.sh |
starts a run by starting sar/free instances on all machines |
cleanup-bench.sh |
terminates sar/free instances on all machines (intended to be used manually, in the event bench-finish.sh fails to run
|
get-configs.sh |
contains configuration settings for each of the systems: Giraph and GPS max JVM heap size, number of threads per worker, number of workers per machine |
get-dirs.sh |
specifies directories/locations of system folders |
ssh-check.sh |
checks SSH connectability to worker machines |
For get-config.sh, if GIRAPH_XMX is updated, re-initialize and restart Hadoop to put those changes into effect (also done automatically with */benchmark/init-all.sh or */benchmark/local-init.sh). If MIZAN_WPM is changed, be sure to re-run Mizan's graph partitioner.
Note: Paths in get-dirs.sh are only used by the benchmarking scripts. Some systems still expect, e.g., paths in ~/.bashrc.
See Dataset Scripts.
Hadoop has two scripts:
| File | Description |
|---|---|
init.sh |
generates the required Hadoop config files (masters, slaves, core-site.xml, hdfs-site.xml, mapred-site.xml) and copies them to worker machines |
restart-hadoop.sh |
restarts Hadoop; specifying 1 as an argument will make it wait until HDFS is up (i.e., hadoop dfsadmin -safemode wait) |
All systems (giraph, gps, graphlab, mizan) have:
| File | Description |
|---|---|
benchall.sh |
system-specific batch benching script (only for 4, 8, 16, 32, 64, 128 machines) |
<alg>.sh |
algorithm-specific benching script (where <alg> is pagerank, sssp, wcc, mst, or dimest) |
recompile-<system>.sh |
recompiles the system |
Here, mst is DMST and dimest is diameter estimation. Look in benchall.sh for how a particular <alg>.sh script should be used (or try ./<alg>.sh to get a usage message). These scripts must be ran from their system directory: cd */benchmark/<system> before ./<alg>.sh!
In general, the <alg>.sh scripts require at least input-graph, the name of the input file (e.g., orkut-adj.txt), and machines, the number of slave/worker machines. For GraphLab, input-graph can be a directory (e.g., orkut-adj-split/) containing the split parts of an input file. (See also: Datasets.)
Note: Mizan's graph partitioner ("premizan") must be ran before running its <alg>.sh.
Each system also has its own additional scripts.
| File | Description |
|---|---|
prtolfinder.sh |
finds PageRank error tolerance used in GraphLab |
kill-java-job.sh |
cleans up lingering Java instances on worker machines |
| File | Description |
|---|---|
debug-site.sh |
starts GPS's debug monitoring webpage (http://<public-ip>:4444/debugmonitoring.html) |
disable-dimest-fix.sh |
disables a patch that fixes GPS to run with diameter estimation and recompiles GPS (patch is disabled by default) |
enable-dimest-fix.sh |
enables the dimest patch and recompiles GPS |
init.sh |
initializes GPS by creating slaves and uploading machine.cfg to HDFS |
start-nodes.sh |
starts GPS master and workers (replaces GPS's */gps-rev-110/master-scripts/start_gps_nodes.sh) |
stop-nodes.sh |
stops GPS master and workers (replaces GPS's */gps-rev-110/master-scripts/stop_gps_nodes.sh) |
| File | Description |
|---|---|
init.sh |
initializes GraphLab by creating machines file |
| File | Description |
|---|---|
init.sh |
initializes Mizan by creating slaves file |
premizan.sh |
runs Mizan's separate prepartitioner (must be done before running any algorithms) |
The naming convention for log files is
<algorithm>_<graph>_<num-machines>_<mode>_<date-time>[_<machine-id>]_<stat>.txt
where
-
algorithmcan be pagerank, sssp, wcc, mst, dimest, or premizan -
graphis the full filename of the graph (e.g., orkut-mst-adj.txt) -
modeis system-dependent (see below) -
date-timeis yyyymmdd-hhmmss (e.g., 20140501-123040) -
statcan be time, mem, nbt, cpu, or net
When statistic is time, there is no machine-id. For all the other statistics, machine-id will range from 0 (the master) to the total number of slave/worker machines. Specifically, mem, cpu, and net are per-second memory/CPU/network usage from free and sar, while nbt is content from /proc/net/dev before and after a run.
mode is a system-specific digit specified as follows:
- For Giraph, 0 is byte array, 1 is hashmap.
- For GPS, 0 is none (no optimizations), 1 is LALP, 2 is dynamic migration, 3 is LALP + dynamic.
- For GraphLab, 0 is synchronous, 1 is asynchronous.
- For Mizan, 0 is static, 1 is delayed, 2 is mixed (the latter two do not work). Additionally, for premizan, 1 is hash partitioning while 2 is range partitioning.
All log files located in */benchmark/<system>/logs/.
Logs can be parsed "interactively" and collectively for raw data (for plotting).
Additionally, you can also check for missing logs caused by failed runs.