Be your support engineer’s best friend

First Published Thursday, 16th July 2009 12:26 am from Real-Time Innovations (RTI) : Jan Van Bruaene

The opinions expressed by this blogger and those providing comments are theirs alone, this does not reflect the opinion of Automated Trader or any employee thereof. Automated Trader is not responsible for the accuracy of any of the information supplied by this article.


In my previous post, I detailed

two resources for answers to commonly asked questions or to look

up specific known issues. Of course that requires you to at last

know what to ask or look for. Before getting there you probably

want to find out more about how the middleware is doing, or in

the event of a defect, contextual information to provide to the

RTI support team. Other than a reproducer, the following

configuration, error and status information makes life for a

support engineer so much easier.

RTI Data Distribution Service

provides a great amount of information about the status of your

real-time distributed system. Being able to collect and log this

information is essential to start debugging a DDS based

application. There are several ways to implement a logging system

which has minimal impact on performance and does not require a

recompile. Before we get to that, let's first take a

look at what information is available and what will typically be

requested by the support engineer.

Configuration

Information

The RTI middleware is

configured through various Quality of Service (QoS) parameters.

QoS parameters can be specified for different DDS entities:

domain participant, publisher/subscriber, and writer/reader. Easy

access to the QoS configuration of each DDS entity within an

application is a must. At a minimum the list should include QoS

parameters which have been changed from the default values. When

using version 4.3 or later of RTI's middleware QoS parameters can

be loaded from an XML file. The XML file is an easy way to change

the QoS parameters at start up time, but also to share the

configuration.

Part of how each DDS

application is configured is how it will discover other

applications and matching DDS topics. Gathering the following

discovery information is key:

  1. What

    is my initial peer list of each domain

    participant, used to initially announce myself to other

    applications?

  2. What is multicast

    receive address used by various domain participants?

    Is multicast enabled in my DDS

    application?

  3. What transport are enabled

    (See:

    DDS_TransportBuiltinKindMask)

    and what are the transport

    properties used by each domain participant? These

    properties configure the UDP and shared memory transports at a

    low level.

Error

logging and status information

By

default RTI Data Distribution Service will log error messages

using the

NDDSConfigLogger

class to the console. The default verbosity configuration is

NDDS_CONFIG_LOG_VERBOSITY_ERROR.

We encourage you to log this information to a file, and to allow

the verbosity level to be modified either at run time or at start

up to include warnings

(NDDS_CONFIG_LOG_VERBOSITY_WARNING

) or overall status information

(NDDS_CONFIG_LOG_VERBOSITY_STATUS_ALL).

DDS status information

- DDS data readers and writers maintain status

information which can be queried or can be made available through

corresponding callback routines when a change in status occurs.

This status information provides a great deal of insight into

each entity. Not all of these status fields are indicative of an

error. However they will help in debugging a problem or a

mis-configuration. It is strongly recommended to instrument the

corresponding callbacks and log changes to the following data

reader and data writer status fields:

·

DDS Data Reader status

info includes:

DDS_LIVELINESS_CHANGED_STATUS,

DDS_REQUESTED_DEADLINE_MISSED_STATUS,

DDS_REQUESTED_INCOMPATIBLE_QOS_STATUS, DDS_SAMPLE_LOST_STATUS,

DDS_SAMPLE_REJECTED_STATUS,

DDS_SUBSCRIPTION_MATCHED_STATUS

·

DDS Data Writer status

info includes:

DDS_LIVELINESS_LOST_STATUS,

DDS_OFFERED_DEADLINE_MISSED_STATUS,

DDS_OFFERED_INCOMPATIBLE_QOS_STATUS,

DDS_PUBLICATION_MATCHED_STATUS,

DDS_RELIABLE_READER_ACTIVITY_CHANGED_STATUS

The DDS Data Writer

DDS_RELIABLE_WRITER_CACHE_CHANGED_STATUS

provides a summary of the state of a data writer's cache of

unacknowledged samples written. Logging this continuously will

likely have an impact on performance as the callback will be

triggered each time all samples have been acknowledged. We

recommend to implement the ability to turn this on at start up or

at run time as needed.

DDS Data Reader and Writer Cache

and Protocol status - Version 4.3e and

later adds statistics information about

what is going on at the protocol level. Making this information

selectively available will speed up isolation of the problem. The

protocol status provides information such as the number of

samples pushed, filtered and the status of wire protocol traffic.

The cache status provides information about the queue: e.g.

number of samples in the reader or writer

queue.

For examples or

tips on how to implement the recommended guidelines above, href="mailto:support@rti.com">contact RTI support or

visit the RTI Customer

Portal solution section.



href="http://feeds.wordpress.com/1.0/gocomments/rtidds.wordpress.com/105/"> alt="" border="0"

src="http://feeds.wordpress.com/1.0/comments/rtidds.wordpress.com/105/"

/>

href="http://feeds.wordpress.com/1.0/godelicious/rtidds.wordpress.com/105/"> alt="" border="0"

src="http://feeds.wordpress.com/1.0/delicious/rtidds.wordpress.com/105/"

/>

href="http://feeds.wordpress.com/1.0/gostumble/rtidds.wordpress.com/105/"> alt="" border="0"

src="http://feeds.wordpress.com/1.0/stumble/rtidds.wordpress.com/105/"

/>

href="http://feeds.wordpress.com/1.0/godigg/rtidds.wordpress.com/105/"> alt="" border="0"

src="http://feeds.wordpress.com/1.0/digg/rtidds.wordpress.com/105/"

/>

href="http://feeds.wordpress.com/1.0/goreddit/rtidds.wordpress.com/105/"> alt="" border="0"

src="http://feeds.wordpress.com/1.0/reddit/rtidds.wordpress.com/105/"

/>

src="http://stats.wordpress.com/b.gif?host=blogs.rti.com&blog=7350090&post=105&subd=rtidds&ref=&feed=1"

/>

  • Copyright © Automated Trader Ltd 2013 - The Gateway to Algorithmic and Automated Trading

click here to return to the top of the page