Command-line options
The drasi system consist of a small set of executables, controlled by various command-line options.
It is a general goal to keep the amount of needed options to a minimum, thanks to the system employing sane defaults and heuristics for most configurable parameters.
The relationships between options describing data flow and trigger bus topology are shown in pictures here and here.
Common options
- --gdb
Run in GDB (must be the first argument).
(This is actually performed by a wrapper script.)
- --help
Show help message.
- --xxx=help
Show detailed help message for options that take suboptions.
Options for main data-pump
The readout and merger is to a large extent the same program, and thus share many options.
- --port=[+]PORT
Network TCP/IP port to bind to. Default is 56583. With the +N, N is added to the default port number. This is useful for running multiple instances on the same machine.
- --server=[drasi|trans[:PORT]][,[no]hold][,forcemap][,clients=N][,bufsize=N][,dest=HOST]
Network data server (output).
Note that a data server can be started at any node, but would usually be at the final event builder or time sorter.
- drasi
Native protocol data server [hold].
- trans[:PORT]
Transport protocol data server [weakhold].
- stream[:PORT]
Stream protocol data server [nohold].
- hold|nohold
All data must be sent to one client. (No data is discarded due to slow clients.)
- weakhold
All data must be sent when some client connected.
- spilldelay|nospilldelay
Force delayed data transmission off/on. (Default is on when only one CPU core available.)
- flush=N
Flush data every N seconds.
- forcemap
Only allow transport data connections through portmapped port. (Does not work with legacy clients.)
- clients=N
Serve data to (at most) N clients (default 1).
- bufsize=N
Deliver data in LMD buffers of size N (Mi|raw hex).
- dest=HOST
Allowed destinations using the drasi protocol.
- readout
Use readout/merge buffer as source. (Matters if a filter stage is in use.)
- filter
Use filter buffer as source (only when available).
- final
Use filter buffer as source (when available, otherwise readout buffer). (This is the default.)
- --log-ack-wait
For each log message, wait for acknowlegde of receipt from the log client before proceeding. This can be used to debug hard lock-ups in readout code, since the readout will not proceed before each message has been successfuly sent over the network.
- --log-no-rate-limit
Do not rate-limit log messages.
- --file-writer
File writer thread.
Note that a file writer can be started at any node, but would usually be at the final event builder or time sorter.
- bufsize=N
Deliver data in LMD buffers of size N (Mi|raw hex).
- output=FILENAME
Destination LMD file at start. (Useful for testing.)
- max-events=N
Close initial LMD file after N events written.
- terminate-on-close
Terminate entire program after closing LMD file. (Useful for testing.)
- --buf=[size=N][,direct|physmmap|physpexor@off]
Size of data buffer (Mi|raw hex).
- size=N
Size of buffer.
- nohint
Do not warn/hint about small buffer size.
- valloc
Aligned memory allocation (using
valloc()
, for systems where this is useful).
- direct@OFF
Direct mapping memory offset.
- physmmap@OFF
Physical mapping memory offset.
- physpexor@OFF
Physical mapping memory offset (via PEXOR driver).
- input=N|frac|%
Size or fraction to use for merge input buffers (default 75%).
- filter=N|frac|%
Size or fraction to use for (optional) filter output buffer (default 50%). The fraction excludes input buffers.
- --max-ev-size=N
Maximum event size (default 0x1000).
- --max-ev-interval=Ns
Specify the maximum time between events.
Specifying this options implies a promise to at least deliver some periodic ‘keep-alive’ event (e.g. a synchronisation trigger) every so often.
Warnings will be printed when this promise is not fulfilled.
This is required for any data that eventually goes to a timesorter which uses the
ts-disable
option, see this.
- --[triva|trimi|trixor]=(master|slave),[@0xADDR][,ctime=n][,fctime=n][,spill1213]
Trigger module, being either a
triva
,trimi
ortrixor
module.- master
Operate as trigger bus / deadtime domain master.
- slave
Operate as trigger bus / deadtime domain slave.
- @0xADDR
Physical address (bits 31-24 on VME bus) of trigger module.
- ctime=N
Conversion time (in 100 ns units).
- fctime=N
Fast clear time (in 100 ns units).
- spill1213
Spill on/off marked by trigger 12/13 for delayed EB.
- sim=MOD[@HOST]
Simulated trigger bus.
- multi-word-trig-clear
Do deadtime/trigger clear using multiple word writes.
- --inspill-stuck-timeout=Ns
Timeout to regard inspill status as stuck. Delayed event-building will not hold data transport when status is stuck.
- --master=HOST[:[+]PORT]
TRIVA/MI master instance. Used when this instance is a slave.
- --slave=HOST[:[+]PORT]
TRIVA/MI slave instance. Used (multiple times) when this instance is master.
- --eb-master=HOST[:[+]PORT]
Event builder master instance (=TRIVA/MI master). Used when this instance is an event builder.
- --eb=host[:[+]PORT]
Event builder (actual) instance. Used when this instance is a master.
- --label=STRING
Use the given label for the tree view monitor.
- --ntp=HOST
NTP server (use when local clock has sloppy discipline). The received times are only used for monitoring of timestamps.
- --no-filter
Disable filter stage (if compiled in).
- --[action|info|log|debug|spam]
Minimum severity of messages to print on console (default is info).
- --debug=MASK
Enable debug messages.
- --insomniac
Disable debugger sleep.
Options for readout
Additional options for (f_user-based) readout:
- --max-sticky-size=N
Maximum sticky (after) event size (def 0x1000).
- --max-sticky-before-size=N
Maximum sticky (before) event size (def 0x100).
Options for merger / time-sorter
Input and control options for merger:
- --drasi=[bufsize=N,]HOST[:[+]PORT]
Network data source (native protocol).
- inbufsize=N
Size of buffer to use for incoming data (Mi|raw hex|frac|%%). The buffer allowance is taken from the main data buffer, and can also be specified as a fraction of that.
- max-ev-size=N
Give maximum event length smaller than automatically determined. Will be checked for each event.
- ts-disable=N
Time to wait (seconds) until this time sorter source is disabled due to no data. Default is 0, no automatic disable.
Caution
This option can cause data to be sorted out-of-order if sources are misbehaving.
Do not use this option unless the implications are clear.
- keepalive=Ns
Time to wait (seconds) until this time sorter source is reconnected due to no data.
- HOST[:PORT]
The actual data source.
- --trans=[bufsize=N,]HOST[:PORT]
Network data source (MBS transport protocol).
The same options as for
--drasi
are available. In addition:- label=STRING
Use the given label for the tree view monitor.
- --file=
Read data from file (useful for filter testing).
- --merge-mode=(wr|titris|event)
Merge mode:
- event
Do event-building. Events from multiple sources are merged. Events must have matching event and trigger numbers.
- wr
Time sort using white rabbit-formatted timestamps.
- titris
Time sort using titris-formatted timestamps.
- --merge-no-validate
Do not validate sources. (Disables reconnects.) (Use only for testing!)
- --merge-ts-disable=N
Time to wait (seconds) until time sorter complains about sources with no data.
Caution
This option can cause data to be sorted out-of-order if sources are misbehaving.
Do not use this option unless the implications are clear.
- --merge-ts-wr-check
Check that White Rabbit (WR) timestamps are reasonable compared to the local PC time. Timestamps more than 5 s into the future and timestamps older than 10 times the missing timestamp disable timeout are considered as faulty and sorted as if they were 0. (The values in the data are not modified.)
Caution
This option can cause data to be sorted out-of-order if sources are misbehaving.
Do not use this option unless the implications are clear.
- --merge-keepalive=N
Time to wait (seconds) until time sorter sources are reconnected due to no data. (Default is 30 s.)
- --merge-ts-analyse-ref=N
Use time-stamp ID N a reference for online time-stamp alignment analysis.
- --merge-ts-analyse-sync-trig=N
Trigger number for sync triggers used for online time-stamp alignment analysis.
- --merge-ts-analyse-sync-trig-id=ID:N
Trigger number for sync triggers used for online time-stamp alignment analysis for data from timestamp white rabbit ID.
Options for monitor: lwrocmon
- HOST[:PORT]
Drasi instance(s) to monitor.
- --rate[=N]
Show rate for given systems (every N s).
- --no-down-up
Do not search up in tree after destinations.
- --no-ts-analysis
Do not show timestamp analysis in tree view.
- --no-lookup
Do not do hostname lookup.
- --raw-ts
Show raw timestamp values.
- --buf-size
Show buffer sizes instead of fill ratios.
- --detail
Show ncurses detailed system status.
- --monbuf
Dump raw monitor buffer data.
- --count=N
Quit after showing N reports (only –rate).
- --influxdb
Produce entries for InfluxDB line protocol (requires –rate).
- --expire-time=N
Expire stale data (lost connection) after N s.
- --nz-rate-success
Exit status 0 if event increase seen (only –rate).
- --dt-trace
Store deadtime trace files (requires –tree).
- --log[=FILENAME]
Record log messages from systems. Default filename lwlog.l.
- --raw
Show raw values.
Options for log pretty-printer: lwroclog
- --info|--log|--debug|--spam
Minimum severity of messages to show.
- --us
Show fractional time (us) of log messages.
- --file
Show source location of log message.
- --full
Show all log fields.
- --colour=yes|no
Force use of coloured output.
Options for control: lwrocctrl
Control commands beginning with --file-
are issued to a file
writer node, usually an event builder or time sorter. Control
commands beginning with --acq-
are issued to the master node
of a dead-time domain.
- HOSTNAME[:PORT]
Drasi instance to control.
- --file-open [=[auto=SIZE,]NAME]
Open a new file.
- auto=SIZE
Open a new file after SIZE bytes written. Automatic file names will increment the last number in the filename. If none exist, a number will be added.
- time=Ns
Open a new file after a given time. Automatic file names as above.
- events=N
Open a new file after a given number of events have been written. Atomatic file names as above.
- NAME
Name of file.
- --file-new[=[auto=SIZE,]NAME]
Continue recording of data to a new file, with no events lost in-between. Opens file is closed.
The same options as for
--file-open
are available.
- --file-close
Close current file.
- --file-hold
Hold data for file collection.
- --file-unjam
Close file with write failure (sets hold).
- --file-status
Report file writing status.
- --acq-start
Start acq (trigger 14).
- --acq-stop
Stop acq (trigger 15), and/or hold.
- --acq-status
Report acq status.
- --acq-meas-dt
Do live dead-time accounting for systems within a dead-time domain.
Results (in microseconds) are shown in the tree view monitor.
- --merge-try-reconnect
Request merger to reconnect disabled sources.
- --debug[=NUM|0xMASK]
Enable / disable (0) debug messages.