diff options
author | Marijke Hengstmengel <MHengstmengel@users.noreply.github.com> | 2010-03-04 09:24:26 +0000 |
---|---|---|
committer | Marijke Hengstmengel <MHengstmengel@users.noreply.github.com> | 2010-03-04 09:24:26 +0000 |
commit | f61aa7dff6c5008333ea526ee1f01e067e09ed9c (patch) | |
tree | 341baae89c09aeecccab7200c5b2a1f4aa386e84 | |
parent | 0853828a839c56b39f20db360abce6af27d1cbc2 (diff) | |
download | ATCD-f61aa7dff6c5008333ea526ee1f01e067e09ed9c.tar.gz |
Thu Mar 4 09:21:49 UTC 2010 Marijke Hengstmengel <mhengstmengel@remedy.nl>
* connectors/dds4ccm/performance-tests/Latency/Base/Latency_Test_Base.idl:
* connectors/dds4ccm/performance-tests/Latency/descriptors/Plan.cdp:
* connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_pub.cdp:
* connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_sub.cdp:
* connectors/dds4ccm/performance-tests/Latency/descriptors/README:
* connectors/dds4ccm/performance-tests/Latency/descriptors/run_pub.pl:
* connectors/dds4ccm/performance-tests/Latency/descriptors/run_sub.pl:
* connectors/dds4ccm/performance-tests/Latency/descriptors/USER_QOS_PROFILES.xml:
* connectors/dds4ccm/performance-tests/Latency/Receiver/Latency_Test_Receiver_exec.cpp:
* connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender.idl:
* connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.cpp:
* connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.h:
Add statistics, use only fixed size elements in topic and clean up code.
13 files changed, 246 insertions, 132 deletions
diff --git a/CIAO/ChangeLog b/CIAO/ChangeLog index 8489ec6d59f..ef69bed8440 100644 --- a/CIAO/ChangeLog +++ b/CIAO/ChangeLog @@ -1,3 +1,20 @@ +Thu Mar 4 09:21:49 UTC 2010 Marijke Hengstmengel <mhengstmengel@remedy.nl> + + * connectors/dds4ccm/performance-tests/Latency/Base/Latency_Test_Base.idl: + * connectors/dds4ccm/performance-tests/Latency/descriptors/Plan.cdp: + * connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_pub.cdp: + * connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_sub.cdp: + * connectors/dds4ccm/performance-tests/Latency/descriptors/README: + * connectors/dds4ccm/performance-tests/Latency/descriptors/run_pub.pl: + * connectors/dds4ccm/performance-tests/Latency/descriptors/run_sub.pl: + * connectors/dds4ccm/performance-tests/Latency/descriptors/USER_QOS_PROFILES.xml: + * connectors/dds4ccm/performance-tests/Latency/Receiver/Latency_Test_Receiver_exec.cpp: + * connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender.idl: + * connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.cpp: + * connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.h: + Add statistics, use only fixed size elements in topic and clean up code. + + Thu Mar 4 09:06:49 UTC 2010 Marcel Smit <msmit@remedy.nl> * bin/ciao_tests.lst: diff --git a/CIAO/connectors/dds4ccm/performance-tests/Latency/Base/Latency_Test_Base.idl b/CIAO/connectors/dds4ccm/performance-tests/Latency/Base/Latency_Test_Base.idl index 737864b741c..2c5d1abe554 100644 --- a/CIAO/connectors/dds4ccm/performance-tests/Latency/Base/Latency_Test_Base.idl +++ b/CIAO/connectors/dds4ccm/performance-tests/Latency/Base/Latency_Test_Base.idl @@ -11,10 +11,10 @@ #pragma ndds typesupport "Base/Latency_Test_BaseSupport.h" const short MAX_DATA_SEQUENCE_LENGTH = 8192; -typedef sequence<octet> OctetSeq; +typedef sequence<octet, MAX_DATA_SEQUENCE_LENGTH> OctetSeq; struct LatencyTest { - string key; +// string key; long seq_num; long ping; OctetSeq data; diff --git a/CIAO/connectors/dds4ccm/performance-tests/Latency/Receiver/Latency_Test_Receiver_exec.cpp b/CIAO/connectors/dds4ccm/performance-tests/Latency/Receiver/Latency_Test_Receiver_exec.cpp index 5952a6ff9ad..56985aed704 100644 --- a/CIAO/connectors/dds4ccm/performance-tests/Latency/Receiver/Latency_Test_Receiver_exec.cpp +++ b/CIAO/connectors/dds4ccm/performance-tests/Latency/Receiver/Latency_Test_Receiver_exec.cpp @@ -31,7 +31,7 @@ namespace CIAO_Latency_Test_Receiver_Impl { this->callback_.write_one(an_instance); } - } + } void LatencyTest_Listener_exec_i::on_many_data ( diff --git a/CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender.idl b/CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender.idl index a8b44055aa4..d57b08797a9 100644 --- a/CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender.idl +++ b/CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender.idl @@ -18,7 +18,6 @@ module Latency_Test component Sender { port CCM_DDS::LatencyTest::DDS_Write info_write; - attribute unsigned short keys; attribute unsigned long iterations; attribute unsigned short sleep; attribute unsigned short datalen; //minimal 32 diff --git a/CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.cpp b/CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.cpp index 66ae2f02a67..977950884dc 100644 --- a/CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.cpp +++ b/CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.cpp @@ -9,6 +9,7 @@ #include "ace/Reactor.h" #include "ace/High_Res_Timer.h" + namespace CIAO_Latency_Test_Sender_Impl { //============================================================ @@ -32,13 +33,13 @@ namespace CIAO_Latency_Test_Sender_Impl { ACE_UINT64 receive_time = 0; - //only interested in messages received with a latency_ping = 0 (messages sent beck by receiver) + //only interested in messages received with a latency_ping = 0 (messages sent back by receiver) if( an_instance.ping == 0) - { - ACE_High_Res_Timer::gettimeofday_hr ().to_usec ( receive_time); - this->callback_.read(an_instance, receive_time); - } - } + { + ACE_High_Res_Timer::gettimeofday_hr ().to_usec ( receive_time); + this->callback_.read(an_instance, receive_time); + } + } void LatencyTest_Listener_exec_i::on_many_data ( @@ -123,7 +124,6 @@ namespace CIAO_Latency_Test_Sender_Impl //============================================================ Sender_exec_i::Sender_exec_i (void) : iterations_ (1000), - keys_ (1), datalen_(100), sleep_(10), matched_(false), @@ -135,7 +135,8 @@ namespace CIAO_Latency_Test_Sender_Impl number_of_msg_(0), //number of sent messages timer_(false), received_(false), - seq_num_(0) + seq_num_(0), + sigma_duration_squared_(0) { this->ticker_ = new WriteTicker (*this); } @@ -144,6 +145,11 @@ namespace CIAO_Latency_Test_Sender_Impl { } + static int compare_two_longs(const void *long1, const void *long2) + { + return (*(CORBA::Long*)long1 - *(CORBA::Long*)long2 ); + } + void Sender_exec_i::write_one (void) { @@ -152,9 +158,9 @@ namespace CIAO_Latency_Test_Sender_Impl if( (this->number_of_msg_ == 0) || ( this->received_.value())) { // all messages send, stop timer - if((this->iterations_ != 0) && (this->number_of_msg_ >= (this->iterations_ * this->keys_))) + if((this->iterations_ != 0) && (this->number_of_msg_ >= this->iterations_ )) { - this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + this->stop(); this->timer_ = false; } else @@ -162,20 +168,20 @@ namespace CIAO_Latency_Test_Sender_Impl try { //send messages with indicator (ping = 1L) so that subscriber knows that this message has to sent back. - this->last_key_->second->ping = 1L; - this->last_key_->second->seq_num = this->number_of_msg_; + this->test_topic_.ping = 1L; + this->test_topic_.seq_num = this->number_of_msg_;; //keep last sent seq_num, in order to control if message is sent back. this->seq_num_ = this->number_of_msg_; - - ACE_High_Res_Timer::gettimeofday_hr ().to_usec (this->start_time_); - this->writer_->write_one (this->last_key_->second, ::DDS::HANDLE_NIL); - } + this->received_ = false; + ACE_High_Res_Timer::gettimeofday_hr ().to_usec (this->start_time_); + this->writer_->write_one (this->test_topic_, ::DDS::HANDLE_NIL); + } catch (const CCM_DDS::InternalError& ) { ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ") - ACE_TEXT ("while updating writer info for <%C>.\n"), - this->last_key_->first.c_str ())); + ACE_TEXT ("while updating writer info for <%u>.\n"), + this->test_topic_.seq_num)); } ++this->number_of_msg_; } @@ -183,7 +189,7 @@ namespace CIAO_Latency_Test_Sender_Impl } void - Sender_exec_i::read(LatencyTest an_instance,ACE_UINT64 receive_time) + Sender_exec_i::read(LatencyTest an_instance,ACE_UINT64 receive_time) { if (an_instance.seq_num == this->seq_num_.value()) { @@ -218,19 +224,6 @@ namespace CIAO_Latency_Test_Sender_Impl { ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX, _guard, this->mutex_, CORBA::INTERNAL ()); - for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i) - { - char key[7]; - LatencyTest *new_key = new LatencyTest; - ACE_OS::sprintf (key, "KEY_%d", i); - new_key->key = CORBA::string_dup(key); - new_key->seq_num = 0; - new_key->data.allocbuf(this->datalen_); - // to do : freebuf, where ? - this->samples_[key] = new_key; - } - this->last_key_ = this->samples_.begin (); - //this->sleep_ is in ms unsigned int sec = this->sleep_/1000; unsigned int usec = (this->sleep_ % 1000) * 1000; @@ -251,9 +244,13 @@ namespace CIAO_Latency_Test_Sender_Impl void Sender_exec_i::record_time (ACE_UINT64 receive_time) { - ACE_UINT64 interval = ( receive_time - this->start_time_); - ++this->count_; + ACE_UINT64 interval = ( receive_time - this->start_time_); + ++this->count_; long duration = static_cast <CORBA::Long>(interval); + int i = this->count_; + // keep all duration times for statistics + this->duration_times[i-1] = duration; + this->sigma_duration_squared_ += (double)duration * (double)duration; this->tv_total_ += duration; if (duration > this->tv_max_.value ()|| (this->tv_max_.value () == 0L)) this->tv_max_ = duration; @@ -270,19 +267,16 @@ Sender_exec_i::record_time (ACE_UINT64 receive_time) void Sender_exec_i::iterations (::CORBA::ULong iterations) { - this->iterations_ = iterations; - } - - ::CORBA::UShort - Sender_exec_i::keys (void) - { - return this->keys_; - } - - void - Sender_exec_i::keys (::CORBA::UShort keys) - { - this->keys_ = keys; + if (iterations == 0) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: iterations must be greater as '0'\n"))); + throw ::CORBA::BAD_PARAM (); + } + else + { + this->iterations_ = iterations; + } } ::CORBA::UShort @@ -325,8 +319,7 @@ Sender_exec_i::record_time (ACE_UINT64 receive_time) void Sender_exec_i::datalen (::CORBA::UShort datalen) { - // 7 is length of key, has to be removed - int overhead_size = sizeof(CORBA::ULong) + sizeof(CORBA::ULong) + 7; + int overhead_size = sizeof(CORBA::ULong) + sizeof(CORBA::ULong); if((datalen <= overhead_size) || (datalen > MAX_DATA_SEQUENCE_LENGTH)) { ACE_ERROR ((LM_ERROR, @@ -334,9 +327,9 @@ Sender_exec_i::record_time (ACE_UINT64 receive_time) throw ::CORBA::BAD_PARAM (); } this->datalen_ = datalen - overhead_size; + this->duration_times = new CORBA::Long[this->iterations_]; } - void Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) { @@ -375,43 +368,81 @@ Sender_exec_i::record_time (ACE_UINT64 receive_time) ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Unknown exception caught\n"))); } + //make instances of Topic + this->test_topic_.seq_num = 0; + this->test_topic_.ping = 0; + this->test_topic_.data.length (this->datalen_); } - + void - Sender_exec_i::ccm_passivate (void) + Sender_exec_i::stop (void) { if (this->timer_.value ()) - this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender_exec_i::stop : Timer canceled.\n"))); + delete this->ticker_; + } + } + + void + Sender_exec_i::ccm_passivate (void) + { + this->stop(); } void Sender_exec_i::ccm_remove (void) { - ACE_DEBUG ((LM_DEBUG, "SUMMARY SENDER number of messages sent: %u\n", - (this->number_of_msg_ + 1))); - - if( this->count_.value () > 0) - { - double avg = this->tv_total_.value () / this->count_.value (); - ACE_DEBUG ((LM_DEBUG,"Collecting statistics on %d samples with message size %u.\n" - " TO DO: calculate stdev, 50%%,90%%,99%% and 99.99%%\n" - "This is the roundtrip time, *not* the one-way-latency\n" - "bytes ,stdev us,ave us, min us, 50%% us, 90%% us, 99%% us, 99.99%%, max us\n" - "------,-------,-------,-------,-------,-------,-------,-------,-------\n" - "%6d,-------,%7.1f,%7u,-------,-------,-------,-------,%7u\n", - this->count_.value (), - this->datalen_, - this->datalen_, - avg, - this->tv_min_.value (), - this->tv_max_.value ())); - } - else - { - ACE_ERROR ((LM_ERROR, "SUMMARY SENDER latency time:\n " + ACE_DEBUG ((LM_DEBUG, "SUMMARY SENDER number of messages sent: %u\n", + (this->number_of_msg_))); + + //sort all duration times + qsort(this->duration_times, this->count_,sizeof(CORBA::Long), compare_two_longs); + /* Show latency_50_percentile, latency_90_percentile, latency_99_percentile and + * latency_99.99_percentile. + * For example duration_times[per50] is the median i.e. 50% of the + * samples have a latency time <= duration_times[per50] + */ + int per50 = this->count_/2; + int per90 = (int)(this->count_ * 0.90); + int per99 = (int)(this->count_ * 0.990); + int per999 = (int)(this->count_ * 0.999); + + double avg = this->tv_total_.value () / this->count_; + //calculate standard deviation + double _roundtrip_time_std = sqrt( + (this->sigma_duration_squared_ / (double)this->count_) - + (avg * avg)); + + int overhead_size = sizeof(CORBA::ULong) + sizeof(CORBA::ULong); + CORBA::UShort datalen = overhead_size + this->datalen_; +// if( this->count_.value () > 0) + if( this->count_ > 0) + { + ACE_DEBUG ((LM_DEBUG,"Collecting statistics on %d samples with message size %u.\n" + "This is the roundtrip time, *not* the one-way-latency\n" + "bytes ,stdev us,ave us, min us, 50%% us, 90%% us, 99%% us, 99.9%%, max us\n" + "------,-------,-------,-------,-------,-------,-------,-------,-------\n" + "%6d,%7.1f,%7.1f,%7u,%7u,%7u,%7u,%7u,%7u\n", + this->count_, + datalen, + datalen, + _roundtrip_time_std, + avg, + this->tv_min_.value (), + this->duration_times[per50-1], + this->duration_times[per90-1], + this->duration_times[per99-1], + this->duration_times[per999-1], + this->tv_max_.value ())); + } + else + { + ACE_ERROR ((LM_ERROR, "SUMMARY SENDER latency time:\n " "No samples reveived back.\n")); - } + } } extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr diff --git a/CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.h b/CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.h index 407b8524f07..7ecd150c6d5 100644 --- a/CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.h +++ b/CIAO/connectors/dds4ccm/performance-tests/Latency/Sender/Latency_Test_Sender_exec.h @@ -20,8 +20,8 @@ namespace CIAO_Latency_Test_Sender_Impl { typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Long > Atomic_Long; - typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Long > Atomic_ULong; - typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean; + typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::ULong > Atomic_ULong; + typedef ACE_Atomic_Op <ACE_Recursive_Thread_Mutex, CORBA::Boolean > Atomic_Boolean; class Sender_exec_i; //============================================================ @@ -116,9 +116,6 @@ class SENDER_EXEC_Export ConnectorStatusListener_exec_i virtual ::CORBA::ULong iterations (void); virtual void iterations (::CORBA::ULong iterations); - virtual ::CORBA::UShort keys (void); - virtual void keys (::CORBA::UShort keys); - virtual ::CORBA::UShort sleep (void); virtual void sleep (::CORBA::UShort sleep); @@ -136,7 +133,8 @@ class SENDER_EXEC_Export ConnectorStatusListener_exec_i virtual void ccm_passivate (void); virtual void ccm_remove (void); - void start (void); + void start(void); + void stop (void); void write_one (void); void read(LatencyTest instance,ACE_UINT64 receive_time); @@ -146,7 +144,6 @@ class SENDER_EXEC_Export ConnectorStatusListener_exec_i WriteTicker *ticker_; CORBA::UShort iterations_; - CORBA::UShort keys_; CORBA::UShort datalen_; CORBA::UShort sleep_; @@ -155,19 +152,19 @@ class SENDER_EXEC_Export ConnectorStatusListener_exec_i Atomic_Long tv_total_; Atomic_Long tv_max_; Atomic_Long tv_min_; - Atomic_Long count_; + CORBA::UShort count_; CORBA::UShort number_of_msg_; Atomic_Boolean timer_; Atomic_Boolean received_; Atomic_ULong seq_num_; + CORBA::Double sigma_duration_squared_; ACE_UINT64 start_time_; TAO_SYNCH_MUTEX mutex_; - typedef std::map<ACE_CString, LatencyTest_var> Writer_Table; - Writer_Table samples_; - - Writer_Table::iterator last_key_; - }; + LatencyTest test_topic_; + CORBA::Octet* buffer_; + CORBA::Long* duration_times; +}; extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr create_Latency_Test_Sender_Impl (void); diff --git a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan.cdp b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan.cdp index 33145eef113..dd5d8430507 100644 --- a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan.cdp +++ b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan.cdp @@ -232,24 +232,13 @@ <source/> <implementation xmi:idref="SenderComponentImplementation" /> <configProperty> - <name>keys</name> - <value> - <type> - <kind>tk_ushort</kind> - </type> - <value> - <ushort>1</ushort> - </value> - </value> - </configProperty> - <configProperty> <name>iterations</name> <value> <type> <kind>tk_ulong</kind> </type> <value> - <ulong>10000</ulong> + <ulong>1000</ulong> </value> </value> </configProperty> @@ -260,7 +249,7 @@ <kind>tk_ushort</kind> </type> <value> - <ushort>2</ushort> + <ushort>100</ushort> </value> </value> </configProperty> diff --git a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_pub.cdp b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_pub.cdp index 2bd8d98972b..eb702b501a4 100644 --- a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_pub.cdp +++ b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_pub.cdp @@ -133,7 +133,7 @@ <kind>tk_string</kind> </type> <value> - <string>HelloTest_Library#LatencyQoS</string> + <string>HelloTest_Library#LatencyPubQoS</string> </value> </value> </configProperty> @@ -145,17 +145,6 @@ <source/> <implementation xmi:idref="SenderComponentImplementation" /> <configProperty> - <name>keys</name> - <value> - <type> - <kind>tk_ushort</kind> - </type> - <value> - <ushort>1</ushort> - </value> - </value> - </configProperty> - <configProperty> <name>iterations</name> <value> <type> diff --git a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_sub.cdp b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_sub.cdp index 5d8e36c520a..ec60487f40e 100644 --- a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_sub.cdp +++ b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/Plan_sub.cdp @@ -140,7 +140,7 @@ <kind>tk_string</kind> </type> <value> - <string>HelloTest_Library#LatencyQoS</string> + <string>HelloTest_Library#LatencySubQoS</string> </value> </value> </configProperty> diff --git a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/README b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/README new file mode 100644 index 00000000000..acc1aab79df --- /dev/null +++ b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/README @@ -0,0 +1,17 @@ + +This performace test shows the latency. The test can run with different options. + +- separate publisher and subscriber: + run_pub.pl and run_sub.pl with resp. Plan_pub.cdp and Plan_sub.cdp . + +- to check if test still compiles and runs , use this test + one publisher and one subscriber in 1 process : + run_test.pl with resp. Plan.cdp + + + + +To test changes in the next attributes, changes this values in the publisher cdp-files: +iterations : the number of messages from one instance to send. Has to be greater as 0. +datalen: the datalen of a message (minimal 32). +sleep: time in ms to sleep before writing the next message diff --git a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/USER_QOS_PROFILES.xml b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/USER_QOS_PROFILES.xml index 9b472b3f879..a69acd07537 100644 --- a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/USER_QOS_PROFILES.xml +++ b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/USER_QOS_PROFILES.xml @@ -39,7 +39,9 @@ RTI Data Distribution Service user manual. <kind>KEEP_ALL_HISTORY_QOS</kind> </history> <durability> - <kind>TRANSIENT_DURABILITY_QOS</kind> + <!--kind>TRANSIENT_DURABILITY_QOS</kind--> + <kind>VOLATILE_DURABILITY_QOS</kind> + <direct_communication>true</direct_communication> </durability> <resource_limits> <max_instances>1</max_instances> @@ -70,22 +72,86 @@ RTI Data Distribution Service user manual. <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance> </resource_limits> <durability> - <kind>TRANSIENT_DURABILITY_QOS</kind> + <!--kind>TRANSIENT_DURABILITY_QOS</kind--> + <kind>VOLATILE_DURABILITY_QOS</kind> + <direct_communication>true</direct_communication> </durability> </datareader_qos> - </qos_profile> - <qos_profile name="BestEffortQoS" is_default_qos="false"> + + <qos_profile name="LatencyPubQoS" is_default_qos="true"> + <!-- QoS used to configure the data writer created in the example code --> + <datawriter_qos> + <reliability> + <kind>RELIABLE_RELIABILITY_QOS</kind> + <max_blocking_time> + <sec>DURATION_INFINITE_SEC</sec> + <nanosec>DURATION_INFINITE_NSEC</nanosec> + </max_blocking_time> + </reliability> + <history> + <kind>KEEP_ALL_HISTORY_QOS</kind> + </history> + <durability> + <!--kind>TRANSIENT_DURABILITY_QOS</kind--> + <kind>VOLATILE_DURABILITY_QOS</kind> + <direct_communication>true</direct_communication> + </durability> + <resource_limits> + <max_instances>1</max_instances> + <initial_instances>1</initial_instances> + <max_samples>LENGTH_UNLIMITED</max_samples> + <initial_samples>100</initial_samples> + <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance> + </resource_limits> + <protocol> + <rtps_reliable_writer> + <max_heartbeat_retries>10</max_heartbeat_retries> + </rtps_reliable_writer> + </protocol> + </datawriter_qos> + <!-- QoS used to configure the data reader created in the example code --> + <datareader_qos> + <reliability> + <kind>RELIABLE_RELIABILITY_QOS</kind> + </reliability> + <history> + <kind>KEEP_ALL_HISTORY_QOS</kind> + </history> + <resource_limits> + <initial_samples>100</initial_samples> + <initial_instances>1</initial_instances> + <max_samples>LENGTH_UNLIMITED</max_samples> + <max_instances>1</max_instances> + <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance> + </resource_limits> + <durability> + <!--kind>TRANSIENT_DURABILITY_QOS</kind--> + <kind>VOLATILE_DURABILITY_QOS</kind> + <direct_communication>true</direct_communication> + </durability> + <ownership> + <kind>EXCLUSIVE_OWNERSHIP_QOS</kind> + </ownership> + </datareader_qos> + </qos_profile> + + <qos_profile name="LatencySubQoS" is_default_qos="true"> <!-- QoS used to configure the data writer created in the example code --> <datawriter_qos> <reliability> - <kind>BEST_EFFORT_RELIABILITY_QOS</kind> - </reliability> + <kind>RELIABLE_RELIABILITY_QOS</kind> + <max_blocking_time> + <sec>DURATION_INFINITE_SEC</sec> + <nanosec>DURATION_INFINITE_NSEC</nanosec> + </max_blocking_time> + </reliability> <history> <kind>KEEP_ALL_HISTORY_QOS</kind> </history> <durability> - <kind>TRANSIENT_DURABILITY_QOS</kind> + <kind>VOLATILE_DURABILITY_QOS</kind> + <direct_communication>true</direct_communication> </durability> <resource_limits> <max_instances>1</max_instances> @@ -94,6 +160,12 @@ RTI Data Distribution Service user manual. <initial_samples>100</initial_samples> <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance> </resource_limits> + <ownership> + <kind>EXCLUSIVE_OWNERSHIP_QOS</kind> + </ownership> + <ownership_strength> + <value>2</value> + </ownership_strength> <protocol> <rtps_reliable_writer> <max_heartbeat_retries>10</max_heartbeat_retries> @@ -103,7 +175,7 @@ RTI Data Distribution Service user manual. <!-- QoS used to configure the data reader created in the example code --> <datareader_qos> <reliability> - <kind>BEST_EFFORT_RELIABILITY_QOS</kind> + <kind>RELIABLE_RELIABILITY_QOS</kind> </reliability> <history> <kind>KEEP_ALL_HISTORY_QOS</kind> @@ -116,9 +188,12 @@ RTI Data Distribution Service user manual. <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance> </resource_limits> <durability> - <kind>TRANSIENT_DURABILITY_QOS</kind> + <!--kind>TRANSIENT_DURABILITY_QOS</kind--> + <kind>VOLATILE_DURABILITY_QOS</kind> + <direct_communication>true</direct_communication> </durability> </datareader_qos> + </qos_profile> </qos_library> diff --git a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/run_pub.pl b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/run_pub.pl index 72c16054137..a6f39341bd8 100644 --- a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/run_pub.pl +++ b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/run_pub.pl @@ -206,8 +206,8 @@ for ($i = 0; $i < $nr_daemon; ++$i) { } } -print "Sleeping 180 seconds to allow task to complete\n"; -sleep (180); +print "Sleeping 300 seconds to allow task to complete\n"; +sleep (300); # Invoke executor - stop the application -. print "Invoking executor - stop the application -\n"; diff --git a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/run_sub.pl b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/run_sub.pl index dae8581f1d5..babc6147d2b 100644 --- a/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/run_sub.pl +++ b/CIAO/connectors/dds4ccm/performance-tests/Latency/descriptors/run_sub.pl @@ -206,8 +206,8 @@ for ($i = 0; $i < $nr_daemon; ++$i) { } } -print "Sleeping 180 seconds to allow task to complete\n"; -sleep (180); +print "Sleeping 300 seconds to allow task to complete\n"; +sleep (300); # Invoke executor - stop the application -. print "Invoking executor - stop the application -\n"; |