How to change QoS dynamic on node.js

4 posts / 0 new
Last post
Offline
Last seen: 4 years 8 months ago
Joined: 09/29/2019
Posts: 8
How to change QoS dynamic on node.js

Hello,

I have some questions about using rticonnextdds-connector-js,

is there has any example with dynamic change QoS for node.js?

 

Sincerely,

Karen

Offline
Last seen: 2 months 1 week ago
Joined: 10/22/2018
Posts: 91

The QoS used by Connector is immutable, that is, it cannot be changed after application start-up.

Could I ask why you need this behaviour? It may be possible to achieve what you are trying in another way.

Sam

Offline
Last seen: 4 years 8 months ago
Joined: 09/29/2019
Posts: 8

Thanks for your apply,

I want to use on my student research, which is by change the QoS dynamicly then achieve the result on enhance net performance.

(for example: reduce delay /increase throughput  but with reliable

Sincerely,

Karen

 

Offline
Last seen: 2 months 1 week ago
Joined: 10/22/2018
Posts: 91

It sounds like it would be possible to test this in multiple iterations.
You can add QoS to the XML file where your DDS entities and types are defined and modify it between each run of your test: e.g.:

<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:noNamespaceSchemaLocation="http://community.rti.com/schema/6.0.0/rti_dds_profiles.xsd"
     version="6.0.0">

    <!-- Qos Library -->
    <qos_library name="QosLibrary">
        <qos_profile name="DefaultProfile" is_default_qos="true">
            <datawriter_qos>
		<!-- Your QoS here -->
            </datawriter_qos>
        </qos_profile>
    </qos_library>

    <!-- types -->
    <types>
        <struct name="ShapeType" extensibility="extensible">
            <member name="color" stringMaxLength="128" type="string" key="true"/>
            <member name="x" type="long"/>
            <member name="y" type="long"/>
            <member name="shapesize" type="long"/>
        </struct>
    </types>

    <!-- Domain Library -->
    <domain_library name="MyDomainLibrary">
        <domain name="MyDomain" domain_id="0">
            <register_type name="ShapeType" type_ref="ShapeType" />
            <topic name="Square" register_type_ref="ShapeType"/>
    </domain_library>

    <!-- Participant library -->
    <domain_participant_library name="MyParticipantLibrary">
        <domain_participant name="MyParticipant" domain_ref="MyDomainLibrary::MyDomain">
            <publisher name="MyPublisher">
                <data_writer name="MySquareWriter" topic_ref="Square" />
            </publisher>
            <subscriber name="MySubscriber">
                <data_reader name="MySquareReader" topic_ref="Square" />
            </subscriber>
        </domain_participant>
    </domain_participant_library>
</dds>

The QoS specified within the qos_profile tag will be used by the entities in the application.

Another thing to be aware of is our BuiltinQosLibExp::Generic.AutoTuning builtin QoS profile. You can read about it here: https://community.rti.com/kb/configuring-qos-built-profiles

This builtin profile contains some experimental features (Turbo Mode and Auto Throttle), meaning the publishing behaviour of the system is automatically adjusted to achieve the best possible performance with respect to throughput and latency.

Hope that helps,

Sam