@jbr-experiment/ldbc-snb-decentralized
v1.0.2
Published
LDBC SNB Decentralized experiment handler for JBR
Downloads
18
Maintainers
Readme
JBR Experiment - LDBC SNB Decentralized
A jbr experiment type for the decentralized LDBC SNB social network benchmark.
Requirements
- Node.js (1.12 or higher)
- Docker (required for invoking LDBC SNB generator)
- jbr (required for initializing, preparing, and running experiments on the command line)
Quick start
1. Install jbr
jbr is a command line tool that enables experiments to be initialized, prepared, and started. It can be installed from the npm registry:
$ npm install -g jbr
or
$ yarn global add jbr
2. Initialize a new experiment
Using the jbr
CLI tool, initialize a new experiment:
$ jbr init ldbc-snb-decentralized my-experiment
$ cd my-experiment
This will create a new my-experiment
directory with default configs for this experiment type.
3. Configure the required hooks
This experiment type requires you to configure a certain SPARQL endpoint to send queries to for the hookSparqlEndpoint
.
A value for this hook can be set as follows, such as sparql-endpoint-comunica
:
$ jbr set-hook hookSparqlEndpoint sparql-endpoint-comunica
4. Prepare the experiment
In order to run all preprocessing steps, such as creating all required datasets, invoke the prepare step:
$ jbr prepare
All prepared files will be contained in the generated/
directory.
5. Run the experiment
Once the experiment has been fully configured and prepared, you can run it:
$ jbr run
Once the run step completes, results will be present in the output/
directory.
Output
The following output is generated after an experiment has run.
output/query-times.csv
:
name;id;results;time;timestamps
interactive-short-4;0;0;7;
interactive-short-4;1;0;5;
interactive-short-4;2;0;6;
interactive-short-4;3;0;3;
interactive-short-4;4;0;3;
interactive-short-5;0;0;0;
interactive-short-5;1;0;0;
interactive-short-5;2;0;0;
interactive-short-5;3;0;0;
interactive-short-5;4;0;0;
output/stats-server.csv
: Per second of the experiment: CPU percentage, memory usage (bytes), memory percentage, received bytes, transmitted bytes.
cpu_percentage,memory,memory_percentage,received,transmitted
9.915362228116711,10489856,0.5024267940030527,488,0
9.863725050505051,17354752,0.8312308965993495,648,0
9.64850952141058,19116032,0.915589944401502,738,0
9.345685076142132,23072768,1.105103526208198,738,0
10.029959365079364,26759168,1.2816689750964243,738,0
10.25411566137566,30363648,1.45431074734269,738,0
output/logs/server.txt
: Logs of the Solid Community Server.
Configuration
The default generated configuration file (jbr-experiment.json
) for this experiment looks as follows:
{
"@context": [
"https://linkedsoftwaredependencies.org/bundles/npm/jbr/^1.0.0/components/context.jsonld",
"https://linkedsoftwaredependencies.org/bundles/npm/@jbr-experiment/ldbc-snb-decentralized/^1.0.0/components/context.jsonld"
],
"@id": "urn:jrb:my-experiment",
"@type": "ExperimentLdbcSnbDecentralized",
"scale": "0.1",
"configGenerateAux": "input/config-enhancer.json",
"configFragment": "input/config-fragmenter.json",
"configFragmentAux": "input/config-fragmenter-auxiliary.json",
"configQueries": "input/config-queries.json",
"configServer": "input/config-server.json",
"directoryQueryTemplates": "input/templates/queries",
"overwriteFilesDuringPrepare": false,
"hadoopMemory": "4G",
"dockerfileServer": "input/dockerfiles/Dockerfile-server",
"serverPort": 3000,
"serverLogLevel": "info",
"serverResourceConstraints": {
"@type": "DockerResourceConstraints",
"cpu_percentage": 10
},
"endpointUrl": "http://localhost:3001/sparql",
"queryRunnerReplication": 3,
"queryRunnerWarmupRounds": 1,
"queryRunnerRecordTimestamps": true,
"hookSparqlEndpoint": {
"@id": "urn:jrb:cc:hookSparqlEndpoint",
"@type": "HookNonConfigured"
}
}
Any config changes require re-running the prepare step.
More background information on these config options can be found in the README of the decentralized LDBC SNB social network benchmark.
Configuration fields
scale
: The SNB scale factorconfigGenerateAux
: Path to enhancement config forldbc-snb-enhancer
.configFragment
: Path to fragmentation config forrdf-dataset-fragmenter
.configFragmentAux
: Path to enhancement's fragmentation config forrdf-dataset-fragmenter
.configQueries
: Path to query instantiation config forsparql-query-parameter-instantiator
.configServer
: Path to server config for Solid Community Server.directoryQueryTemplates
: Path to the directory containing SPARQL query templates forsparql-query-parameter-instantiator
.overwriteFilesDuringPrepare
A flag to indicate whether or not the fragmentations should always be fully recreated during the prepare step. Otherwise they will be cached until deleted manually.hadoopMemory
: Memory limit for Hadoop for LDBC SNB.dockerfileServer
: Path to a Dockerfile for Solid Community Server.serverPort
: HTTP Port for Solid Community Server.serverLogLevel
: Logging level for Solid Community Server.serverResourceConstraints
: Resource constraints for the Solid Community Server Docker container.endpointUrl
: URL through which the SPARQL endpoint of thehookSparqlEndpoint
hook will be exposed.queryRunnerReplication
: Number of replication runs forsparql-benchmark-runner
.queryRunnerWarmupRounds
: Number of warmup runs forsparql-benchmark-runner
.queryRunnerRecordTimestamps
: Flag to indicate if result arrival timestamps must be recordedsparql-benchmark-runner
.
License
jbr.js is written by Ruben Taelman.
This code is copyrighted by Ghent University – imec and released under the MIT license.