Skip to main content
Version: 2.8.0

Server Configuration File

ChronoLog server executables share a single JSON configuration file. The repository ships a template at default_conf.json.in; a fully expanded example is installed as conf/default-chrono-conf.json and is used by tools/deploy/deploy_local.sh.

As of ChronoLog v2.8.0 the file is organized into two shared blocks (clock, authentication) and four per-component sections (chrono_visor, chrono_keeper, chrono_grapher, chrono_player). See the Overview page for the loader architecture behind these sections.

{
"clock": { ... },
"authentication": { ... },
"chrono_visor": { ... },
"chrono_keeper": { ... },
"chrono_grapher": { ... },
"chrono_player": { ... }
}

Shared Blocks

These blocks are parsed once by ConfigurationManager and are visible to every process.

clock

Controls the clock source used for event timestamping. See Performance Tuning → Clock Source for the effect of each option.

FieldTypeDefaultDescription
clocksource_typestring"CPP_STYLE"One of "C_STYLE", "CPP_STYLE", "TSC".
drift_cal_sleep_secinteger10Seconds between clock drift calibrations.
drift_cal_sleep_nsecinteger0Additional nanoseconds added to the calibration interval.

Backed by ClockConf in src/chrono-common/include/ConfigurationBlocks.h.

authentication

FieldTypeDefaultDescription
auth_typestring"RBAC"Authentication mechanism. Currently only "RBAC" is used.
module_locationstring""Path to the authentication module shared object.

Backed by AuthConf in src/chrono-common/include/ConfigurationBlocks.h.


Common Per-Component Sub-Blocks

Several JSON sub-blocks appear in more than one component. They always have the same shape, parsed by the same C++ building block.

rpc — Thallium endpoint

Every service endpoint is described by an rpc block, parsed by RPCProviderConf.

FieldTypeExampleDescription
protocol_confstring"ofi+sockets"Thallium/Mercury transport string. See Network & RPC.
service_ipstring"127.0.0.1"IP the service binds to (servers) or connects to (clients).
service_base_portinteger5555TCP port.
service_provider_idinteger55Thallium provider ID; multiplexes services on the same address.

Monitoring — logging

Per-component log sink. Wrapped under a monitor key and parsed by LogConf.

"Monitoring": {
"monitor": {
"type": "file",
"file": "chrono-visor-1.log",
"level": "debug",
"name": "ChronoVisor",
"filesize": 104857600,
"filenum": 3,
"flushlevel": "warning"
}
}
FieldTypeDescription
typestringLog sink type. Currently only "file" is supported.
filestringLog file name.
levelstringMinimum log level: trace, debug, info, warning, error, critical, off.
namestringLogger name that appears in log lines.
filesizeintegerMaximum file size in bytes before rotation.
filenumintegerNumber of rotated files to keep.
flushlevelstringMinimum level that triggers an immediate flush to disk.

DataStoreInternals — story-chunk tuning

Appears in chrono_keeper, chrono_grapher, and chrono_player. Parsed by DataStoreConf. See Performance Tuning → Story Chunk Settings for the semantics of each field.

FieldTypeDescription
max_story_chunk_sizeintegerMaximum number of events in a single chunk.
story_chunk_duration_secsintegerHow long a chunk remains open.
acceptance_window_secsintegerMaximum allowed age of an incoming event relative to wall-clock time.
inactive_story_delay_secsintegerIdle time before an in-memory story is evicted.

ExtractionModule

Present under chrono_keeper and chrono_grapher. Parsed by ExtractionModuleConfiguration (src/chrono-common/include/ExtractionModuleConfiguration.h). Defines the configurable pipeline of extractors that drains retired StoryChunks. See Architecture → ChronoKeeper for the concept and Performance Tuning → Extraction Pipeline for tuning guidance.

FieldTypeDescription
extraction_stream_countintegerNumber of parallel extraction-stream threads draining the extraction queue. Default: 2.
extraction_protocolstringThallium protocol used by RDMA-based extractors. Default: "ofi+sockets".
extractorsobjectMap of extractor instances keyed by an arbitrary label. Each entry must set "type" to one of the supported extractor types listed below; additional fields depend on the type.

Supported extractor types

typeAvailable inRequired fieldsBehavior
csv_extractorkeeper, graphercsv_archive_dir (string)Writes each StoryChunk as a CSV file under csv_archive_dir.
single_endpoint_rdma_extractorkeeper, grapherreceiving_endpoint (object: protocol_conf, service_ip, service_base_port, service_provider_id)Drains each StoryChunk to one RDMA endpoint (typically a ChronoGrapher's KeeperGrapherDrainService).
dual_endpoint_rdma_extractorkeeperTwo receiving_endpoint entriesFans each StoryChunk out to two RDMA endpoints simultaneously (e.g. ChronoGrapher + ChronoPlayer).
hdf5_extractorgrapherhdf5_archive_dir (string)Serializes each StoryChunk into the HDF5 archive under hdf5_archive_dir.

See the keeper and grapher blocks in conf/default_conf.json.in for fully expanded examples.

ArchiveReaders — story files directory

Present under chrono_player. Parsed by ExtractorReaderConf.

FieldTypeDescription
story_files_dirstringFilesystem directory where archived story files are read from by the player.

IngestionThreadCount — ingestion-thread parallelism

A scalar field that sits inside the ingestion service object of each component:

ComponentPathDefaultDescription
ChronoKeeperchrono_keeper.KeeperRecordingService.IngestionThreadCount4Number of worker threads serving the Keeper recording RPC.
ChronoGrapherchrono_grapher.KeeperGrapherDrainService.IngestionThreadCount1Number of worker threads serving the Grapher drain RPC.
ChronoPlayerchrono_player.PlaybackQueryService.IngestionThreadCount1Number of worker threads serving the Player playback-query RPC.

chrono_visor

Parsed by VisorConfiguration (src/chrono-visor/include/ChronoVisorConfiguration.h).

FieldTypeDescription
VisorClientPortalServiceobject{ "rpc": { ... } } — endpoint used by clients to connect to ChronoVisor.
VisorKeeperRegistryServiceobject{ "rpc": { ... } } — endpoint where ChronoKeeper/Grapher/Player register and heartbeat.
MonitoringobjectSee Monitoring.
delayed_data_admin_exit_in_secsintegerShutdown grace period for the data administration service. Clamped to (0, 60); default 5.

chrono_keeper

Parsed by KeeperConfiguration (src/chrono-keeper/include/ChronoKeeperConfiguration.h).

FieldTypeDescription
RecordingGroupintegerLogical group this keeper belongs to. Must match its paired ChronoGrapher.
KeeperRecordingServiceobject{ "rpc": { ... } } — endpoint that receives events from ChronoVisor for recording.
KeeperDataStoreAdminServiceobject{ "rpc": { ... } } — endpoint for admin actions on the keeper's data store.
VisorKeeperRegistryServiceobject{ "rpc": { ... } } — endpoint on ChronoVisor where this keeper registers.
KeeperGrapherDrainServiceobject{ "rpc": { ... } } — endpoint on ChronoGrapher where drained chunks are delivered.
MonitoringobjectSee Monitoring.
DataStoreInternalsobjectSee DataStoreInternals.
ExtractionModuleobjectSee ExtractionModule.

KeeperRecordingService carries an IngestionThreadCount field — see IngestionThreadCount.

chrono_grapher

Parsed by GrapherConfiguration (src/chrono-grapher/include/ChronoGrapherConfiguration.h).

FieldTypeDescription
RecordingGroupintegerLogical group this grapher serves.
KeeperGrapherDrainServiceobject{ "rpc": { ... } } — endpoint where this grapher receives drained chunks from a keeper.
DataStoreAdminServiceobject{ "rpc": { ... } } — endpoint for admin actions on the grapher's data store.
VisorRegistryServiceobject{ "rpc": { ... } } — endpoint on ChronoVisor where this grapher registers.
MonitoringobjectSee Monitoring.
DataStoreInternalsobjectSee DataStoreInternals.
ExtractionModuleobjectSee ExtractionModule.

KeeperGrapherDrainService carries an IngestionThreadCount field — see IngestionThreadCount.

chrono_player

Parsed by PlayerConfiguration (src/chrono-player/include/ChronoPlayerConfiguration.h).

FieldTypeDescription
RecordingGroupintegerLogical group this player serves.
PlayerStoreAdminServiceobject{ "rpc": { ... } } — endpoint for admin actions on the player's data store.
PlaybackQueryServiceobject{ "rpc": { ... } } — endpoint that receives playback queries from clients.
VisorRegistryServiceobject{ "rpc": { ... } } — endpoint on ChronoVisor where this player registers.
MonitoringobjectSee Monitoring.
DataStoreInternalsobjectSee DataStoreInternals.
ArchiveReadersobjectSee ArchiveReaders.

PlaybackQueryService carries an IngestionThreadCount field — see IngestionThreadCount.


Full Example

The repository ships a fully expanded example at conf/default_conf.json.in. Default values for every field are defined in the constructors of the configuration classes listed above.