Docker Container Example : Scalability 10K Workload with RDF4J

By Theofilos Ioannidis (tioannid [at] di [dot] uoa [dot] gr), created on , last updated on


Caution

Containers are not ideal for benchmarking purposes similar to the one GeoRDFBench Framework performs, because they do not allow clearing system caches. The reason for this is that:

Therefore, in the following example, although the user can verify that the experiments run properly and results are correctly calculated and reported, the COLD cache response times will not be accurate. However, for experiments that do not require COLD cache response time measurements, e.g., macro benchmark scenarios, response times should be accurate enough for drawing basic conclusions.

Key Features

This example, features:

Docker Image

The geordfbench_nuc_rdf4j_v2.zip is a zipped file which contains a docker image. When run, the image will generate a container which will execute the Scalability-10K workload with RDF4J on the NUC8i7BEH host (for simplicity reasons, in this example, we do not allocate memory, cpus, IP and hostname for the container). We assume that we have the ~/Downloads/geordfbench_nuc_rdf4j_v2.zip. Then we uncompress in /data and build the geordfbench_nuc_rdf4j:v2 docker image from within the /data/geordfbench_nuc_rdf4j_v2 folder: </p>

/data$ unzip -qq ~/Downloads/geordfbench_nuc_rdf4j_v2.zip; cd geordfbench_nuc_rdf4j_v2
/data/geordfbench_nuc_rdf4j_v2$ docker build -t geordfbench_nuc_rdf4j:v2 .
[+] Building 123.0s (14/14) FINISHED                                                                                                                                                                                                                     docker:default
 => [internal] load build definition from Dockerfile                                                                                                                                                                                                               0.0s
 => => transferring dockerfile: 1.27kB                                                                                                                                                                                                                             0.0s
 => [internal] load metadata for docker.io/library/ubuntu:jammy                                                                                                                                                                                                    0.0s
 => [internal] load .dockerignore                                                                                                                                                                                                                                  0.0s
 => => transferring context: 2B                                                                                                                                                                                                                                    0.0s
 => CACHED [1/8] FROM docker.io/library/ubuntu:jammy                                                                                                                                                                                                               0.0s
 => [internal] load build context                                                                                                                                                                                                                                  5.2s
 => => transferring context: 1.06GB                                                                                                                                                                                                                                5.0s
 => CACHED [internal] preparing inline document                                                                                                                                                                                                                    0.0s
 => [2/8] RUN apt-get update && apt-get install -y     openjdk-11-jdk     rsync     maven                                                                                                                                                                         62.9s
 => [3/8] RUN apt-get update && apt-get install -y --no-install-recommends     ca-certificates     wget     gnupg     lsb-release     curl     tree                                                                                                                8.5s 
 => [4/8] RUN apt-get update && apt-get install -y      postgresql                                                                                                                                                                                                44.5s 
 => [5/8] COPY <<EOF /etc/systemd/system/postgresql.service                                                                                                                                                                                                        0.0s 
 => [6/8] WORKDIR /data                                                                                                                                                                                                                                            0.0s 
 => [7/8] COPY . .                                                                                                                                                                                                                                                 1.4s 
 => [8/8] RUN locale-gen en_US.UTF-8                                                                                                                                                                                                                               1.7s 
 => exporting to image                                                                                                                                                                                                                                             3.9s 
 => => exporting layers                                                                                                                                                                                                                                            3.9s 
 => => writing image sha256:d1a8e83cfc005efa62aee4dc0ef057eb76b736f78dca11106a306d61bb441640                                                                                                                                                                       0.0s
 => => naming to docker.io/library/geordfbench_nuc_rdf4j:v2

We can now create a docker container based on the new image. The configuration of the image will instruct the container to automatically run the /data/startUpScript.sh. Below we see the initial part of the experiment output, in which the PostgreSQL server is started, the RDF4J environment variables are setup, the RDF4J scalability_10K repository is created and data loaded to it: </p>

/data/geordfbench_nuc_rdf4j_v2$ docker run -it --name rdf4jscal10k geordfbench_nuc_rdf4j:v2
 * Starting PostgreSQL 14 database server                                                                                                                                                                                                                        [ OK ] 
Running script with syntax: source prepareRunEnvironment.sh NUC8I7BEH RDF4JSUT CreateRepo_Scalability10K_RDF4J
All SUTs
--------
Environment = NUC8I7BEH
EnvironmentBaseDir = /data
GeoRDFBenchScriptsDir = /data/geordfbench/scripts
GeoRDFBenchJSONLibDir = /data/geordfbench/json_defs
DatasetBaseDir = /data/Geographica2_Datasets
QuerysetBaseDir = /data/Geographica2_Datasets/QuerySets
ResultsBaseDir = /data
ResultsDirName = 00#_2025-05-18_RDF4JSUT_CreateRepo_Scalability10K_RDF4J
ActiveSUT = RDF4JSUT
ExperimentResultDir = /data/RDF4JSUT/00#_2025-05-18_RDF4JSUT_CreateRepo_Scalability10K_RDF4J
ExperimentDesc = 00#_2025-05-18_RDF4JSUT_CreateRepo_Scalability10K_RDF4J
CompletionReportDaemonIP = 192.168.1.44
CompletionReportDaemonPort = 3333
ScalabilityGenScriptName = /data/Geographica2_Datasets/Scalability/scalabilityDSGen.sh
ScalabilityGzipRefDSName = /data/Geographica2_Datasets/Scalability/scalability500MRefDS.nt.gz
SystemMemorySizeInGB = 32 GBs
JVM_Xmx = -Xmx24g

RDF4J SUT
---------
RDF4JRepoBaseDir = /data/RDF4J_4.3.15_Repos/server
EnableLuceneSail = false
RDF4JLuceneReposPrefix = 
Version = 4.3.15

All of the following environment variables (geordfbench/scripts/prepareRunEnvironment.sh) are defined: 
	{DatasetBaseDir, RDF4JRepoBaseDir, JVM_Xmx, EnableLuceneSail, CompletionReportDaemonIP, CompletionReportDaemonPort, ScalabilityGenScriptName, ScalabilityGzipRefDSName}
Running script with syntax: 
	./createAllRDF4JRepos.sh false /data/Geographica2_Datasets /data/RDF4J_4.3.15_Repos/server -Xmx24g false 192.168.1.44 3333 /data/Geographica2_Datasets/Scalability/scalabilityDSGen.sh /data/Geographica2_Datasets/Scalability/scalability500MRefDS.nt.gz
Script start time: Sun May 18 09:00:58 UTC 2025
/data/RDF4J_4.3.15_Repos/server dir does not exist.
	Creating it now ...
Checking/Creating scalability 10K dataset ...
	Scalability 10K dataset already exists
Generating scalability 10K repository ...
	./createRDF4JRepo.sh /data/RDF4J_4.3.15_Repos/server scalability_10K false "spoc,posc" N-TRIPLES /data/Geographica2_Datasets/Scalability/10K -Xmx24g false "http://www.opengis.net/ont/geosparql#asWKT" 192.168.1.44 3333
CREATE_REPO_ARGS = createman "/data/RDF4J_4.3.15_Repos/server" "scalability_10K" "FALSE" "false" "spoc,posc" "http://www.opengis.net/ont/geosparql#asWKT"
LOAD_REPO_ARGS = dirloadman "/data/RDF4J_4.3.15_Repos/server" "scalability_10K" "N-TRIPLES" "/data/Geographica2_Datasets/Scalability/10K" true
log4j:ERROR Could not connect to remote log4j server at [localhost]. We will try again later.
0    [main] INFO  RDF4JSystem  - No LocalRepositoryManager instance present, creating a new one.
78   [main] INFO  RDF4JSystem  - Creating NativeStore base sail with spoc,posc indexes
253  [main] INFO  RDF4JSystem  - Creating new repository object for repo id = scalability_10K
362  [main] INFO  RDF4JSystem  - Initialing new repository object for repo id = scalability_10K
389  [main] INFO  RepoUtil  - RDF4J created with manager repo "/data/RDF4J_4.3.15_Repos/server/repositories/scalability_10K" in 92 msecs
389  [main] INFO  RDF4JSystem  - Closing connection...
390  [main] INFO  RDF4JSystem  - Repository closed.
log4j:ERROR Could not connect to remote log4j server at [localhost]. We will try again later.
0    [main] INFO  RDF4JSystem  - Loading file scalability_10K.nt ...
437  [main] INFO  RDF4JSystem  - Finished loading file scalability_10K.nt in 433 msecs
447  [main] INFO  RepoUtil  - RDF4J loaded with manager all files from "/data/Geographica2_Datasets/Scalability/10K" to repo "/data/RDF4J_4.3.15_Repos/server/repositories/scalability_10K" in 440 msecs
447  [main] INFO  RDF4JSystem  - Closing connection...
448  [main] INFO  RDF4JSystem  - Repository closed.
RDF4J repository "/data/RDF4J_4.3.15_Repos/server/repositories/scalability_10K" has size: 4MB
Script end time: Sun May 18 09:01:00 UTC 2025
...

The experiment proceeds with running the workloads queryset against the new repository. Initially the arguments are read and validated, then JSON specification files are deserialized to benchmark and experiment environment components, the RDF4J system is initialized and the experiment starts with the first query execution. The last part is the reporting of results and statistics. The initial and final parts of the run log are shown below:


...
ARGS = -rbd RDF4J_4.3.15_Repos/server -expdesc 2025-05-18_RDF4JSUT_RunWL_Scal10K -wl /data/geordfbench/json_defs/workloads/scalabilityFunc10K_WLoriginal.json \
-h /data/geordfbench/json_defs/hosts/nuc8i7behHOSToriginal.json -rs /data/geordfbench/json_defs/reportspecs/simplereportspec_original.json \
-rpsr /data/geordfbench/json_defs/reportsources/nuc8i7behHOSToriginal.json
log4j:ERROR Could not connect to remote log4j server at [localhost]. We will try again later.
0    [main] INFO  RunRDF4JExperimentWorkload  - args[0] = -rbd
1    [main] INFO  RunRDF4JExperimentWorkload  - args[1] = RDF4J_4.3.15_Repos/server
1    [main] INFO  RunRDF4JExperimentWorkload  - args[2] = -expdesc
1    [main] INFO  RunRDF4JExperimentWorkload  - args[3] = 2025-05-18_RDF4JSUT_RunWL_Scal10K
1    [main] INFO  RunRDF4JExperimentWorkload  - args[4] = -wl
1    [main] INFO  RunRDF4JExperimentWorkload  - args[5] = /data/geordfbench/json_defs/workloads/scalabilityFunc10K_WLoriginal.json
1    [main] INFO  RunRDF4JExperimentWorkload  - args[6] = -h
1    [main] INFO  RunRDF4JExperimentWorkload  - args[7] = /data/geordfbench/json_defs/hosts/nuc8i7behHOSToriginal.json
2    [main] INFO  RunRDF4JExperimentWorkload  - args[8] = -rs
2    [main] INFO  RunRDF4JExperimentWorkload  - args[9] = /data/geordfbench/json_defs/reportspecs/simplereportspec_original.json
2    [main] INFO  RunRDF4JExperimentWorkload  - args[10] = -rpsr
2    [main] INFO  RunRDF4JExperimentWorkload  - args[11] = /data/geordfbench/json_defs/reportsources/nuc8i7behHOSToriginal.json
5    [main] INFO  RunRDF4JExperimentWorkload  - |==> Experiment related options
9    [main] INFO  RunRDF4JExperimentWorkload  - Experiment description:	2025-05-18_RDF4JSUT_RunWL_Scal10K
9    [main] INFO  RunRDF4JExperimentWorkload  - |==> Workload, Host, Report related options
9    [main] INFO  RunRDF4JExperimentWorkload  - Workload specs configuration JSON file:	/data/geordfbench/json_defs/workloads/scalabilityFunc10K_WLoriginal.json
10   [main] INFO  RunRDF4JExperimentWorkload  - List of queries to include in the run:	all
10   [main] INFO  RunRDF4JExperimentWorkload  - Host configuration JSON file:	/data/geordfbench/json_defs/hosts/nuc8i7behHOSToriginal.json
11   [main] INFO  RunRDF4JExperimentWorkload  - Report specs configuration JSON file:	/data/geordfbench/json_defs/reportspecs/simplereportspec_original.json
11   [main] INFO  RunRDF4JExperimentWorkload  - Report source specs configuration JSON file:	/data/geordfbench/json_defs/reportsources/nuc8i7behHOSToriginal.json
11   [main] INFO  RunRDF4JExperimentWorkload  - |==> System options
11   [main] INFO  RunRDF4JExperimentWorkload  - BaseDir:	RDF4J_4.3.15_Repos/server
320  [main] INFO  RunRDF4JExperimentWorkload  - {SimpleGeospatialWL: ScalabilityFunc, ,
	{GeographicaDS: scalability_10K, Scalability/10K,
	{GenericGeospatialSimpleDS: scalability_10K, N-TRIPLES}}
	{StaticTempParamQS: scalabilityFunc, ,false, SimpleES{ COLD=3, WARM=3, action=RUN, maxduration=604800 secs, repmaxduration=86400 secs, func=QUERY_MEDIAN }}}
823  [main] INFO  RDF4JSUT  - Initializing..
1003 [main] INFO  ExperimentWorkload  - RDF4JBasedGeographicaSystem-dependent translation of the queryset scalabilityFunc
1003 [main] INFO  ExperimentWorkload  - RDF4JBasedGeographicaSystem-dependent namespace prefixes merged with the prefixes of queryset scalabilityFunc
1004 [main] INFO  RDF4JSUT  - Closing..
1004 [main] INFO  RDF4JBasedGeographicaSystem  - Closing connection...
1006 [main] INFO  RDF4JBasedGeographicaSystem  - Repository closed.
6019 [main] INFO  RDF4JSUT  - Closed (caches not cleared)
6202 [main] INFO  RunRDF4JExperimentWorkload  - Start ScalabilityFunc
6240 [main] INFO  ExperimentWorkload  - |==> Executing query [0, SC1_Geometries_Intersects_GivenPolygon] (COLD, 0): 
PREFIX geo: <http://www.opengis.net/ont/geosparql#> 
PREFIX geo-sf: <http://www.opengis.net/ont/sf#> 
PREFIX geof: <http://www.opengis.net/def/function/geosparql/> 
PREFIX lgo: <http://data.linkedeodata.eu/ontology#> 
PREFIX owl: <http://www.w3.org/2002/07/owl#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 

SELECT ?s1 ?o1 WHERE { 
 ?s1 geo:asWKT ?o1 . 
  FILTER(geof:sfIntersects(?o1, "POLYGON((23.708496093749996 37.95719224376526,22.906494140625 40.659805938378526,11.524658203125002 48.16425348854739,-0.1181030273437499 51.49506473014367,-3.2189941406250004 55.92766341247031,-5.940856933593749 54.59116279530599,-3.1668090820312504 51.47967237816337,23.708496093749996 37.95719224376526))"^^<http://www.opengis.net/ont/geosparql#wktLiteral>)). 
} 

6241 [main] INFO  UbuntuJammyOS  - Syncing...
6338 [main] INFO  UbuntuJammyOS  - Clearing caches...
6340 [main] ERROR UbuntuJammyOS  - Something went wrong while clearing caches of system Ubuntu-jammy
11345 [main] INFO  UbuntuJammyOS  - Caches cleared after delay of 5000 msecs
11345 [main] INFO  RDF4JSUT  - Initializing..
11365 [main] INFO  RDF4JSUT  - Starting QueryExecutor thread
11369 [main] INFO  RDF4JSUT  - Waiting for QueryExecutor thread to finish
11370 [Thread-3] INFO  QueryRepResult  - Transitioning (NOTSTARTED => STARTED)
11371 [Thread-3] INFO  QueryRepResult  - Transitioning (STARTED => PREPARING)
11375 [main] INFO  RDF4JSUT  - Timeout progress step is 21600000 msecs
11440 [Thread-3] INFO  QueryRepResult  - Transitioning (PREPARING => EVALUATING)
11521 [Thread-3] INFO  QueryRepResult  - Transitioning (EVALUATING => EVALUATED)
11523 [Thread-3] INFO  RDF4JbasedExecutor  - 	s1		o1		
11523 [Thread-3] INFO  RDF4JbasedExecutor  - ------------------------------------>
11523 [Thread-3] INFO  QueryRepResult  - Transitioning (EVALUATED => SCANNING)
11584 [Thread-3] INFO  RDF4JbasedExecutor  - http://data.linkedeodata.eu/osm/wales/transport/Geometry/111686299	"MULTIPOLYGON (((-4.0803447 53.0841743, -4.0803 53.0841838, -4.080264 53.084123, -4.0803086 53.0841134, -4.0803447 53.0841743)))"^^<http://www.opengis.net/ont/geosparql#wktLiteral>	
11586 [Thread-3] INFO  RDF4JbasedExecutor  - http://data.linkedeodata.eu/osm/wales/transport/Geometry/111686304	"MULTIPOLYGON (((-4.1180155 53.1046596, -4.1179132 53.1046853, -4.1177627 53.1044688, -4.117865 53.1044432, -4.1180155 53.1046596)))"^^<http://www.opengis.net/ont/geosparql#wktLiteral>	
11587 [Thread-3] INFO  RDF4JbasedExecutor  - http://data.linkedeodata.eu/osm/wales/transport/Geometry/111686306	"MULTIPOLYGON (((-4.0960447 53.0956141, -4.0960086 53.0956258, -4.0959763 53.0955897, -4.0960124 53.0955781, -4.0960447 53.0956141)))"^^<http://www.opengis.net/ont/geosparql#wktLiteral>	
11983 [Thread-3] INFO  QueryRepResult  - Transitioning (SCANNING => SCANNED)
11983 [Thread-3] INFO  RDF4JbasedExecutor  - <------------------------------------
11983 [Thread-3] INFO  QueryRepResult  - Transitioning (SCANNED => COMPLETED)
11985 [main] INFO  RDF4JSUT  - Percentage of expired timeout is 0.0 %
12021 [main] INFO  ExperimentWorkload  - |<== Executed query [0, SC1_Geometries_Intersects_GivenPolygon] (COLD, 0): <COMPLETED-NONE> 82052585 + 459795469 = 541848054 nsecs, 554 results, 0 scan errors - ACCURACY NOT DETERMINED
12030 [main] INFO  RDF4JSUT  - Closing..
12031 [main] INFO  RDF4JBasedGeographicaSystem  - Closing connection...
12031 [main] INFO  RDF4JBasedGeographicaSystem  - Repository closed.
17049 [main] INFO  RDF4JSUT  - Closed (caches not cleared)

...
142168 [main] INFO  PostgreSQLRepSrc  - Deferred mode for PostgreSQLRepSrc was enabled. 18 records were flushed
142175 [main] INFO  GenericExprerimentResultsCollector  - Export statistics in "/data/Results_Store/RDF4JSUT/2025-05-18_RDF4JSUT_RunWL_Scal10K/Scalability/10K/RDF4JSUT-ExperimentWorkload"
142177 [main] INFO  GenericExprerimentResultsCollector  - Created non existing directory
142184 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/RDF4JSUT/2025-05-18_RDF4JSUT_RunWL_Scal10K/Scalability/10K/RDF4JSUT-ExperimentWorkload/00-SC1_Geometries_Intersects_GivenPolygon-cold
142190 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/RDF4JSUT/2025-05-18_RDF4JSUT_RunWL_Scal10K/Scalability/10K/RDF4JSUT-ExperimentWorkload/00-SC1_Geometries_Intersects_GivenPolygon-cold-long
142190 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/RDF4JSUT/2025-05-18_RDF4JSUT_RunWL_Scal10K/Scalability/10K/RDF4JSUT-ExperimentWorkload/01-SC2_Intensive_Geometries_Intersect_Geometries-cold
142190 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/RDF4JSUT/2025-05-18_RDF4JSUT_RunWL_Scal10K/Scalability/10K/RDF4JSUT-ExperimentWorkload/01-SC2_Intensive_Geometries_Intersect_Geometries-cold-long
142191 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/RDF4JSUT/2025-05-18_RDF4JSUT_RunWL_Scal10K/Scalability/10K/RDF4JSUT-ExperimentWorkload/02-SC3_Relaxed_Geometries_Intersect_Geometries-cold
142191 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/RDF4JSUT/2025-05-18_RDF4JSUT_RunWL_Scal10K/Scalability/10K/RDF4JSUT-ExperimentWorkload/02-SC3_Relaxed_Geometries_Intersect_Geometries-cold-long
142191 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/RDF4JSUT/2025-05-18_RDF4JSUT_RunWL_Scal10K/Scalability/10K/RDF4JSUT-ExperimentWorkload/00-SC1_Geometries_Intersects_GivenPolygon-warm
142191 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/RDF4JSUT/2025-05-18_RDF4JSUT_RunWL_Scal10K/Scalability/10K/RDF4JSUT-ExperimentWorkload/00-SC1_Geometries_Intersects_GivenPolygon-warm-long
142192 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/RDF4JSUT/2025-05-18_RDF4JSUT_RunWL_Scal10K/Scalability/10K/RDF4JSUT-ExperimentWorkload/01-SC2_Intensive_Geometries_Intersect_Geometries-warm
142192 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/RDF4JSUT/2025-05-18_RDF4JSUT_RunWL_Scal10K/Scalability/10K/RDF4JSUT-ExperimentWorkload/01-SC2_Intensive_Geometries_Intersect_Geometries-warm-long
142192 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/RDF4JSUT/2025-05-18_RDF4JSUT_RunWL_Scal10K/Scalability/10K/RDF4JSUT-ExperimentWorkload/02-SC3_Relaxed_Geometries_Intersect_Geometries-warm
142192 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/RDF4JSUT/2025-05-18_RDF4JSUT_RunWL_Scal10K/Scalability/10K/RDF4JSUT-ExperimentWorkload/02-SC3_Relaxed_Geometries_Intersect_Geometries-warm-long
142193 [main] INFO  GenericExprerimentResultsCollector  - Cache COLD
142193 [main] INFO  GenericExprerimentResultsCollector  - 	Query 0
142194 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 0	<COMPLETED-NONE> 82052585 + 459795469 = 541848054 nsecs, 554 results, 0 scan errors
142194 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 1	<COMPLETED-NONE> 2826831 + 196664627 = 199491458 nsecs, 554 results, 0 scan errors
142194 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 2	<COMPLETED-NONE> 3041041 + 165867317 = 168908358 nsecs, 554 results, 0 scan errors
142194 [main] INFO  GenericExprerimentResultsCollector  - 	Query 1
142194 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 0	<COMPLETED-NONE> 11498612 + 194095955 = 205594567 nsecs, 2 results, 0 scan errors
142195 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 1	<COMPLETED-NONE> 6347521 + 136679225 = 143026746 nsecs, 2 results, 0 scan errors
142195 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 2	<COMPLETED-NONE> 6300864 + 131235819 = 137536683 nsecs, 2 results, 0 scan errors
142195 [main] INFO  GenericExprerimentResultsCollector  - 	Query 2
142195 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 0	<COMPLETED-NONE> 5628345 + 126592038 = 132220383 nsecs, 2 results, 0 scan errors
142195 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 1	<COMPLETED-NONE> 6881147 + 117171146 = 124052293 nsecs, 2 results, 0 scan errors
142195 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 2	<COMPLETED-NONE> 7562990 + 118327652 = 125890642 nsecs, 2 results, 0 scan errors
142195 [main] INFO  GenericExprerimentResultsCollector  - Cache WARM
142195 [main] INFO  GenericExprerimentResultsCollector  - 	Query 0
142195 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 0	<COMPLETED-NONE> 503180 + 166952924 = 167456104 nsecs, 554 results, 0 scan errors
142195 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 1	<COMPLETED-NONE> 752219 + 148889351 = 149641570 nsecs, 554 results, 0 scan errors
142195 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 2	<COMPLETED-NONE> 512101 + 117840229 = 118352330 nsecs, 554 results, 0 scan errors
142195 [main] INFO  GenericExprerimentResultsCollector  - 	Query 1
142195 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 0	<COMPLETED-NONE> 1621045 + 105342840 = 106963885 nsecs, 2 results, 0 scan errors
142195 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 1	<COMPLETED-NONE> 1245780 + 104247188 = 105492968 nsecs, 2 results, 0 scan errors
142195 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 2	<COMPLETED-NONE> 1427373 + 103369655 = 104797028 nsecs, 2 results, 0 scan errors
142195 [main] INFO  GenericExprerimentResultsCollector  - 	Query 2
142196 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 0	<COMPLETED-NONE> 1252881 + 115920912 = 117173793 nsecs, 2 results, 0 scan errors
142196 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 1	<COMPLETED-NONE> 1054289 + 104801772 = 105856061 nsecs, 2 results, 0 scan errors
142196 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 2	<COMPLETED-NONE> 1103119 + 104729648 = 105832767 nsecs, 2 results, 0 scan errors
142196 [main] INFO  RunRDF4JExperimentWorkload  - End ScalabilityFunc
Start time = Sun May 18 09:01:00 UTC 2025
End time = Sun May 18 09:03:23 UTC 2025

Afterwards we can verify the result files generated in the filesystem:

/data$ docker exec -it rdf4jscal10k /bin/bash
root@f9a1d01d4750:/data# tree /data/Results_Store
/data/Results_Store
`-- RDF4JSUT
    `-- 2025-05-18_RDF4JSUT_RunWL_Scal10K
        `-- Scalability
            `-- 10K
                `-- RDF4JSUT-ExperimentWorkload
                    |-- 00-SC1_Geometries_Intersects_GivenPolygon-cold
                    |-- 00-SC1_Geometries_Intersects_GivenPolygon-cold-long
                    |-- 00-SC1_Geometries_Intersects_GivenPolygon-warm
                    |-- 00-SC1_Geometries_Intersects_GivenPolygon-warm-long
                    |-- 01-SC2_Intensive_Geometries_Intersect_Geometries-cold
                    |-- 01-SC2_Intensive_Geometries_Intersect_Geometries-cold-long
                    |-- 01-SC2_Intensive_Geometries_Intersect_Geometries-warm
                    |-- 01-SC2_Intensive_Geometries_Intersect_Geometries-warm-long
                    |-- 02-SC3_Relaxed_Geometries_Intersect_Geometries-cold
                    |-- 02-SC3_Relaxed_Geometries_Intersect_Geometries-cold-long
                    |-- 02-SC3_Relaxed_Geometries_Intersect_Geometries-warm
                    `-- 02-SC3_Relaxed_Geometries_Intersect_Geometries-warm-long

5 directories, 12 files

When you are done with the docker container, you can terminate it with:

/data$ tioannid@NUC8i7BEH:~$ docker ps -a
CONTAINER ID   IMAGE                   COMMAND                  CREATED         STATUS                       PORTS     NAMES
1686c4836d3a   geordfbench_nuc_rdf4j   "/bin/sh -c '/data/s…"   5 minutes ago   Exited (130) 4 seconds ago             rdf4jscal10k
/data$ docker rm -f rdf4jscal10k
rdf4jscal10k

Explanation of what happened?

The more interested user, can look at the simple Bash script, /data/startUpScript.sh, which is the entry point of the docker description file. The simple actions taken are: