Property Configuration

Last updated on 22nd April 2024

Whether it's via a simudyneSDK.properties file or directly via Java and loading system properties the Simudyne SDK offers a variety of configurations that can be accessed during your model run (by prepending simudyne.) and will ultimately be used internally by the SDK in order to configure your simulation. The below is a brief explanation of these settings, often enhanced by other parts of the reference guide to explain the core topic, but is meant to serve as an easy to refer to table.

Property Values Explanation Example/Notes
console.scenario-file Directory & File Point to a JSON file to load as a default scenario Example: scenario/testScenario.json
core-abm-spark.checkpoint-directory Directory Refer to: Spark Configuration Example: /var/tmp
core-abm-spark.log-level ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF, TRACE Which logs will be made visible when using Spark Log4J Levels
core-abm-spark.master-url URL, or Local Refer to: Spark Configuration Example: local[*], sd-node-master0.simudyne.cloudera.site
core-abm-spark.spark.executor.memory RAM Refer to: Spark Configuration Example: 2g
core-abm-spark.spark.sql.shuffle.partitions Integer Refer to: Spark Configuration 24
core-abm.backend-implementation simudyne.core.graph.experimental.dig.treelike.backend.NoClusterBackend Tells the SDK Backend which implementation to use for distribution EXPERIMENTAL: Akka Backend
core-abm.backend-implementation simudyne.core.graph.experimental.dig.treelike.backend.SubprocessBackend Tells the SDK Backend which implementation to use for distribution EXPERIMENTAL: Akka Backend
core-abm.backend-implementation simudyne.core.graph.spark.SparkGraphBackend Tells the SDK Backend which implementation to use for distribution For Usage with a Distributed Spark Graph
core-abm.debug true, false Not Currently Used
core-abm.local-blocksize Integer Creates the blocksize for message inboxes on the local graph Example: 256
core-abm.local-parallelism 0, 1 Sets whether the local graph should be using parallel threads Note: This is a non-boolean value due to potential parallelism mode changes
core-abm.max-messaging-phases 50 This will repeat the 'phase' of processing messages until the block is empty. Set higher to avoid dead letters. Example: 50
core-abm.serialize.accumulators true, false Serializes the internal data structure in order to show on console and I/O channel outputs.
core-abm.serialize.activities true, false Serializes the internal data structure in order to show on console and I/O channel outputs.
core-abm.serialize.agents true, false Serializes the internal data structure in order to show on console and I/O channel outputs.
core-abm.serialize.links true, false Serializes the internal data structure in order to show on console and I/O channel outputs.
core-abm.serialize.sections true, false Serializes the internal data structure in order to show on console and I/O channel outputs.
core-abm.sort-inboxes true This will sort the inboxes within a block Note: This will NOT sort all messages recieved to avoid determinism issues as it only works within a block.
core-graph-akka.executor.memory RAM Refer to Akka Configuration Example: 2g
core-graph-akka.master-url URL Refer to Akka Configuration Example: local[*]
core-graph-akka.partitions 24 Refer to Akka Configuration Example: 24
core-graph-akka.task.cpus Integer Refer to Akka Configuration Example: 4
core-runner-spark.executor.memory RAM Refer to: Spark Configuration Example: 2g
core-runner-spark.log-level ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF, TRACE Which logs will be made visible when using Spark Log4J Levels
core-runner-spark.master-url URL Refer to: Spark Configuration Example: local[*], sd-node-master0.simudyne.cloudera.site
core-runner-spark.partitions Integer Refer to: Spark Configuration Example: 24
core-runner-spark.task.cpus Integer Refer to: Spark Configuration Example: 4
core-runner.runner-backend simudyne.core.exec.runner.spark.SparkRunnerBackend Enables to the runner backend to use Spark over the default local
core.graph.experimental.clusterSize Integer The size of your Akka cluster nodes Example: 3
core.graph.experimental.distributed.log-level ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF, TRACE Which logs will be made visible when using Akka Log4J Levels
core.graph.experimental.timeouts.base Integer Actor timeout time in seconds Example: 240
core.sql-export-path URL Where your MySQL table is made available Example: jdbc:mysql://localhost:3306/sdk
core.hive-export-path URL Where your Hive table is made available Example: hive2://localhost:10000/default
core.hive-export.enabled true, false Enables the SDK to try and push data to Hive, must set path/username/password
core.export.password String Hive/SQL Password You may instead opt to provide this as part of the Java OPTS at runtime using the property configuration to avoid stored passwords
core.export.username String Hive/SQL Username You may instead opt to provide this as part of the Java OPTS at runtime using the property configuration to avoid stored passwords
core.export.output-interval default, abridged, Integer Set when the export should occur. default = Every Tick, abridged = setup, kickoff, and end, or set a number value for how many steps
core.model-export-path String Location of where you want your model configuration output to be placed (see core.export-path for actual output location) Example: output
core.parquet-compression-format UNCOMPRESSED, SNAPPY, GZIP, LZO Set the compression format of your parquet file output
core.export-path String Where you want the output of your files to be placed. You may also use an HDFS URL format here. MUST enable corresponding output format Example: output
core.parquet-export.enabled true, false Enables the SDK to automatically output parquet for available data and serialized values
core.csv-export.enabled true, false Enables the SDK to automatically output CSV for available data and serialized values
core.json-export.enabled true, false Enables the SDK to automatically output JSON files for available data and serialized values
core.sql-export.enabled true, false Enables the SDK to automatically output to MySQL tables for available data and serialized values. Requires usage of core.sql-export-path, core.export.username, and core.export.password
core.export.folder-structure group-by-type, group-by-run Refer to: Output Directory Structure
core.parquet-page.size Integer Refer to: Parquet Configuration
core.parquet-row-group.size Integer Refer to: Parquet Configuration
core.prng-seed Integer The values of the seed for the internal Programmable Random Number Generator Note: For Batch Runs each run will have a seed set from this core seed. Example: 1640702558671097951
core.return-data true, false Sets whether the simulation should return any data via JSON/Console. Useful if output is defined by your model code
core.run-id Integer The interal id of the simulation's run used by the REST API and internal processess Note: It can be risky to set this value manually
core.sparse-output true, false Similar to `core.return-data` however this will emit metadata Note: This is more useful than `core.return-data` as it will simply remove any scheme or values
core.uiconfig.readonly true, false This is an internal setting useful for Simudyne demos
feature.immutable-schema true, false Right now the schema is mutable, this disables it for potential future features that would require a strict schema
feature.interactive-parquet-output true, false This is deprecated, but for assurance purposes if enabling parquet output you should also set this to true.
feature.io-channels true, false Enables the usages of I/O channels see more here
feature.scenario-file true, false Enables the ability to load a Scenario File of JSON elements for your simulations
nexus-server.autocompile-root String Very Experimental: Allows you to set a root folder such that changes to the a model file will be caught, compiled, and re-served to the user. Example: sandbox/src/main/scala/sandbox/models
nexus-server.batchrun-lifetime Minutes State Timeout for the Batch Runner Example: 10
nexus-server.batchrun-runs-limit Integer Demo Purposes: This blocks the console from running more than the number of listed runs. Useful to avoid malicious users taking CPU/Mem Example: 100
nexus-server.batchrun-tick-limit true, false Demo Purposes: This blocks the console from running more than the number of ticks in model settings. Useful to avoid malicious users taking CPU/Mem
nexus-server.health-check true, false Enables the Determinism Health Check which creates two examples of your registered models and compares a short run to see if they match results. For more see here
nexus-server.health-check-ticks Integer Determines how many ticks the health check should run before comparing. Example: 5
nexus-server.hostname URL/IP Where you tell the console or REST API to point too Example: 127.0.0.1 (local only), 0.0.0.0 (available on network), nameofdomain.com
nexus-server.nexus-lifetime Minutes State Timeout for the Nexus Server Example: 10
nexus-server.parallel-batchrun-limit Integer Demo Purposes: This blocks the console from running more than the number of listed runs. Useful to avoid malicious users taking CPU/Mem Example: 100
nexus-server.parallel-nexus-limit Integer Demo Purposes: Blocks the creation of multiple instances of models. Useful to avoid malicious users taking CPU/Mem Example: 2
nexus-server.port 0-65535 The port the simulation will be made available on the defined URL in `nexus-server.hostname` Note: Simply setting port 80 may not work with all firewalls. It's often best to create a re-route from a port like 8080
nexus-server.rate-limit Integer Inactive: Meant as another configuration for Demo purposes to limit the rate of REST API calls per second Example: 5
nexus-server.run-past-end true, false Using the defined `ticks` in `@ModelSettings` allows whether the user can initiate a run past that set time.
nexus-server.webserver-root String Path to a built webapp folder, useful for a custom webapp or internally for a customized demo Example: console/src/main/resources/webapp