Geneos ["Geneos"]
You are currently viewing an older version of the documentation. End of life for version 5.x.x is scheduled for 30 September 2025.
If you are currently using version 5.x.x, we advise you to upgrade to the latest version before the EOL date. You can find the latest documentation here.


This plug-in is deprecated and is no longer supported by Geneos.
We recommend that you not use any deprecated features, as these may be removed in future releases.

For more information, see Deprecated and removed features in Geneos Compatibility Matrix.

Triarch Latency Plug-In - Technical Reference

Introduction

The Geneos Triarch Latency Plug-in monitors the latency between a SRC-DIST and a P2PS market feed. The RFA5 version of the plug-in uses the MarketFeed data format, the RFA6 version of the plug-in can use either MarketFeed or the more optimised RWF data format but can only be run on Solaris 10.

Views

View

The Triarch Latency plug-in produces one view, TRIARCH_LATENCY, which shows the User the time taken for market messages to pass through the system:

triarch-latency2

Headline Legend

Name Description
numSamplingReporters Number of places that the message is run
publishingInstrument Name of the publishing element that the system is publishing and then reading

Table Legend

Name Description
reporter Name of the individual reporters that are reading the Market data feed.
status Status of the connection (OK or TimedOut).
lastTurnAround Time to deliver the last message.
lastSampleTime The time that the last message was received by the reporter.
aveTurnAround5Min Average turn-around over the last 5 minutes.
aveTurnAround15Min Average turn-around over the last 15 minutes.
aveTurnAround60Min Average turn-around over the last 60 minutes.

Plug-in Configuration

The following parameters can be configured for this plug-in:

config

Variable to store the Refinitiv RFA configuration data. This will be in the Refinitiv RFA configuration file format (see section Latency Configuration File for details on the format). On initialization the probe will save this to the file specified in configFilename.

Mandatory: No

configFilename

Full path to the latency configuration file (see section Latency Configuration Filefor details on the format). This is a Refinitiv RFA configuration file. If the config setting has been specified, then this file will be overwritten with the contents of the config setting every time the plug-in is initialized.

Mandatory: No
Default: latency.cfg

responseTimeout

Timeout period on waiting for a message

Units: Seconds
Mandatory: No
Default: 10s

publishInterval

Interval between publishing events.

Units: Seconds
Mandatory: No
Default: 20s

private

The private configuration section holds settings used for debugging the plug-in.
Please contact ITRS support if you require assistance with this plug-in.

Latency Configuration File

The latency configuration file is a flat file Refinitiv config database (for full details see Refinitiv Foundation API C++ Edition The Configuration Guide).

An RFA Session needs to be defined for each Reporter and the Originator. The following additional fields must be defined to bind the Originator and Reporters to the defined RFA Sessions.

Defining the Originator of the data:

Geneos\Originator\<NAME>\Session = <SessionName>Geneos\Originator\<NAME>\Subject = <SubjectName>Geneos\Originator\<NAME>\FieldName = <ItemName>Geneos\Originator\<NAME>\Type = "ManagedMarketDataPublisher"

Defining the Reporter of the data (multiple reporters can be defined I the latency at multiple points is being measured):

Geneos\Reporter\<NAME>\Session = "Session1"
Geneos\Reporter\<NAME>\Subject = <4 part Item name>Geneos\Reporter\<NAME>\Type = " MarketDataSubscriber"

In order to use the RWF data format (available with the RFA v6 version of the plug-in), use the following Reporter and Originator types instead:

Geneos\Originator\<NAME>\Type = "RDMProvider"
Geneos\ Reporter\<NAME>\Type = " RDMConsumer"

The low latency CallbackThreadModel can be enabled in the OMMConsumer with the following line:

Geneos\Reporter\<NAME>\ThreadModel = "CallbackThreadModel"

To use this the session OMMPerfMode MUST be set to "Latency" (see example 2 below)

Example 1: MarketDataFeed

Adapters\SASS3_Adapter\requestQueueReadThreshold= 1
Adapters\SASS3_Adapter\mainLoopTimerInterval    = 200
Adapters\SSLED_Adapter\masterFidFile            = "/var/triarch/appendix_a"
Adapters\SSLED_Adapter\enumTypeFile             = "/var/triarch/enumtype.def"
Adapters\SSLED_Adapter\downloadDataDict         = false

Connections\Connection_SSLED\PortNumber         = 8101
Connections\Connection_SSLED\UserName           = "nbkn9hl"
Connections\Connection_SSLED\ServerList         = "itrsblade5"
Connections\Connection_SSLED\connectionType     = "SSLED"
Connections\Connection_SSLED\logEnabled = True

Connections\Connection_SSLEDMP\connectionType   = "SSLED_MP"
Connections\Connection_SSLEDMP\ipcServerName    = "s_name_5"
Connections\Connection_SSLEDMP\logEnabled       = True
Connections\Connection_SSLEDMP\logFileSize      = 10000

Logger\AppLogger\windowsLoggerEnabled           = false
Logger\AppLogger\fileLoggerEnabled              = true

# The following lines are required for RFASTTicker example

Services\LAT_TEST\dataFormat                    = "marketfeed"
Services\LAT_TEST\dataDictList                  = "MF"
Connections\Connection_SSLED\serviceList        = "LAT_TEST"
Connections\Connection_SSLEDMP\serviceList      = "LAT_TEST"
DataDictionaries\MF\dataDictType                = "marketfeed"


Logger\ComponentLoggers\Connections\messageFile = "ConnectionsMessages.mc"
Logger\ComponentLoggers\Adapter\messageFile     = "AdapterMessages.mc"
Logger\ComponentLoggers\SessionCore\messageFile = "SessionLayerMessages.mc"
Logger\ComponentLoggers\SSLED_Adapter\messageFile= "SSLED_AdapterMessages.mc"
Logger\ComponentLoggers\SSLED_MP_Adapter\messageFile= "SSLED_MP_AdapterMessages.mc"
Logger\ComponentLoggers\STIC_Adapter\messageFile = "STIC_AdapterMessages.mc"
Logger\ComponentLoggers\SASS3_Adapter\messageFile = "SASS3_AdapterMessages.mc"
Logger\ComponentLoggers\LicensingSystem\messageFile= "SessionLayerMessages.mc"


Sessions\Session1\connectionList                    = "Connection_SSLEDMP"
Sessions\Session2\connectionList                    = "Connection_SSLED"

Control\Entitlements\dacs_CbeEnabled = False
Control\Entitlements\dacs_SbeEnabled = False
Control\Entitlements\dacs_SbePubEnabled = False
Control\Entitlements\dacs_NewsCbeEnabled = False


Geneos\Originator\OriginatorName1\Session = "Session1"
Geneos\Originator\OriginatorName1\Subject = "LAT_TEST"
Geneos\Originator\OriginatorName1\FieldName = "ITEM_NAME.O"
Geneos\Originator\OriginatorName1\Type = "ManagedMarketDataPublisher"

Geneos\Reporter\ReporterUK1\Session = "Session2"
Geneos\Reporter\ReporterUK1\Subject = "LAT_TEST.ANY.ITEM_NAME.O"
Geneos\Reporter\ReporterUK1\FieldName = "ITEM_NAME.O"
Geneos\Reporter\ReporterUK1\Type = "MarketDataSubscriber"

Example 2: RWF

Adapters\SASS3_Adapter\requestQueueReadThreshold= 1
Adapters\SASS3_Adapter\mainLoopTimerInterval    = 200
Adapters\SSLED_Adapter\masterFidFile            = "/var/triarch/appendix_a"
Adapters\SSLED_Adapter\enumTypeFile             = "/var/triarch/enumtype.def"
Adapters\SSLED_Adapter\downloadDataDict         = false
Adapters\RSSL_Cons_Adapter\Adapters\rsslMultithreaded    = false

Connections\Connection_RSSL_CONS\connectionType         = "RSSL"
Connections\Connection_RSSL_CONS\rsslPort       = 14002

Connections\Connection_RSSL_CONS\UserName               = "nbkn9hl"
Connections\Connection_RSSL_CONS\hostName       = "itrsblade4"
Connections\Connection_RSSL_CONS\logEnabled     = True

Connections\Connection_RSSL_PROV\connectionType         = "RSSL_PROV"
Connections\Connection_RSSL_PROV\rsslPort       = "14005"
Connections\Connection_RSSL_PROV\logEnabled     = True
Connections\Connection_RSSL_PROV\logFileSize    = 10000
Connections\Connection_RSSL_PROV\hostName       = "itrsblade4"
Connections\Connection_RSSL_PROV\maxOutputBuffers         = 1000
Connections\Connection_RSSL_PROV\guaranteedOutputBuffers  = 1000
Connections\Connection_RSSL_PROV\flushRetryInterval       = 100
Connections\Connection_RSSL_PROV\tcp_nodelay              = true
Connections\Connection_RSSL_PROV\forceFlushOnWrite        = true
Logger\AppLogger\windowsLoggerEnabled           = false
Logger\AppLogger\fileLoggerEnabled              = true

# The following lines are required for RFASTTicker example

Services\LAT_TEST\dataFormat                    = "marketfeed"
Services\LAT_TEST\dataDictList                  = "MF"
Connections\Connection_RSSL_CONS\serviceList    = "LAT_TEST"
Connections\Connection_RSSL_PROV\serviceList    = "LAT_TEST"
DataDictionaries\MF\dataDictType                = "marketfeed"


Logger\ComponentLoggers\Connections\messageFile = "ConnectionsMessages.mc"
Logger\ComponentLoggers\Adapter\messageFile     = "AdapterMessages.mc"
Logger\ComponentLoggers\SessionCore\messageFile = "SessionLayerMessages.mc"
Logger\ComponentLoggers\SSLED_Adapter\messageFile= "SSLED_AdapterMessages.mc"
Logger\ComponentLoggers\SSLED_MP_Adapter\messageFile= "SSLED_MP_AdapterMessages.mc"
Logger\ComponentLoggers\STIC_Adapter\messageFile = "STIC_AdapterMessages.mc"
Logger\ComponentLoggers\SASS3_Adapter\messageFile = "SASS3_AdapterMessages.mc"
Logger\ComponentLoggers\LicensingSystem\messageFile= "SessionLayerMessages.mc"


Sessions\Session1\connectionList                        = "Connection_RSSL_PROV"
Sessions\Session2\connectionList                        = "Connection_RSSL_CONS"

Sessions\Session1\responseQueueMaxBatchSize = 1
Sessions\Session1\responseQueueBatchInterval = 10
Sessions\Session1\responseQueueBias = 5

Sessions\Session2\OMMPerfMode = "Latency"
Sessions\Session2\responseQueueMaxBatchSize = 1
Sessions\Session2\responseQueueBatchInterval = 10
Sessions\Session2\responseQueueBias = 1

Control\Entitlements\dacs_CbeEnabled = False
Control\Entitlements\dacs_SbeEnabled = False
Control\Entitlements\dacs_SbePubEnabled = False
Control\Entitlements\dacs_NewsCbeEnabled = False


Geneos\Originator\OriginatorName1\Session = "Session1"
Geneos\Originator\OriginatorName1\Subject = "LAT_TEST"
Geneos\Originator\OriginatorName1\FieldName = "ITEM_NAME.O"
Geneos\Originator\OriginatorName1\Type = " RDMProvider"

Geneos\Reporter\ReporterUK1\Session = "Session2"
Geneos\Reporter\ReporterUK1\Subject = "LAT_TEST.ANY.ITEM_NAME.O"
Geneos\Reporter\ReporterUK1\FieldName = "ITEM_NAME.O"
Geneos\Reporter\ReporterUK1\Type = " RDMConsumer"
Geneos\Reporter\ReporterUK1\ThreadModel = "CallbackThreadModel"