<div dir="ltr"><pre style="color:rgb(0,0,0);word-wrap:break-word;white-space:pre-wrap"><font face="arial, helvetica, sans-serif">TAO VERSION: 2.4.6
ACE VERSION: 6.4.6

HOST MACHINE and OPERATING SYSTEM:</font></pre><pre style="color:rgb(0,0,0);word-wrap:break-word;white-space:pre-wrap"><pre style="white-space:pre-wrap;word-wrap:break-word"><font face="arial, helvetica, sans-serif">       (event supplier) Pentium Dual-Core 3.2GHz, Ubuntu Linux with kernel v3.19.0</font></pre><pre style="white-space:pre-wrap;word-wrap:break-word"><div><pre style="white-space:pre-wrap;word-wrap:break-word"><font face="arial, helvetica, sans-serif">        (event service) Intel i5-4590 3.3GHz, four-core machine, Ubuntu Linux with kernel v4.2.0
</font></pre></div><div><pre style="white-space:pre-wrap;word-wrap:break-word"><font face="arial, helvetica, sans-serif">        (event consumer) Pentium Dual-Core 3.2GHz, Ubuntu Linux with kernel v3.13.0</font></pre></div></pre><font face="arial, helvetica, sans-serif">        
THE $ACE_ROOT/ace/config.h FILE [if you use a link to a platform-
    specific file, simply state which one]:</font></pre><pre style="color:rgb(0,0,0);word-wrap:break-word;white-space:pre-wrap"><pre style="white-space:pre-wrap;word-wrap:break-word"><font face="arial, helvetica, sans-serif">       #include "ace/config-linux.h"</font></pre><font face="arial, helvetica, sans-serif">
THE $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE [if you
    use a link to a platform-specific file, simply state which one
    (unless this isn't used in this case, e.g., with Microsoft Visual
    C++)]:</font></pre><pre style="color:rgb(0,0,0);word-wrap:break-word;white-space:pre-wrap"><pre style="white-space:pre-wrap;word-wrap:break-word"><font face="arial, helvetica, sans-serif">       CPPFLAGS += -std=c++11</font></pre><pre style="white-space:pre-wrap;word-wrap:break-word"><font face="arial, helvetica, sans-serif">       include $(ACE_ROOT)/include/<wbr>makeinclude/platform_linux.GNU</font></pre><div><font face="arial, helvetica, sans-serif"><br></font></div><font face="arial, helvetica, sans-serif">CONTENTS OF $ACE_ROOT/bin/MakeProjectCreator/config/default.features
    (used by MPC when you generate your own makefiles):
<br></font></pre><pre style="color:rgb(0,0,0);word-wrap:break-word;white-space:pre-wrap"><font face="arial, helvetica, sans-serif">    I don't have such a file.</font></pre><pre style="color:rgb(0,0,0);word-wrap:break-word;white-space:pre-wrap"><font face="arial, helvetica, sans-serif">    AREA/CLASS/EXAMPLE AFFECTED:
[What example failed?  What module failed to compile?]
<br></font></pre><pre style="color:rgb(0,0,0);word-wrap:break-word;white-space:pre-wrap"><font face="arial, helvetica, sans-serif">    $TAO_ROOT/orbsvcs/examples/RtEC/Simple</font></pre><pre style="color:rgb(0,0,0);word-wrap:break-word;white-space:pre-wrap"><font face="arial, helvetica, sans-serif">    mt dispatching strategy</font></pre><pre style="color:rgb(0,0,0);word-wrap:break-word;white-space:pre-wrap"><font face="arial, helvetica, sans-serif">    DOES THE PROBLEM AFFECT:
        COMPILATION?  no
        LINKING?   no
        EXECUTION?  yes
[Please indicate whether ACE/TAO, your application, or both are affected.]
     The TAO real-time event service is affected.</font></pre><pre style="color:rgb(0,0,0);word-wrap:break-word;white-space:pre-wrap"><font face="arial, helvetica, sans-serif">    SYNOPSIS:
[Brief description of the problem]</font></pre><pre style="color:rgb(0,0,0);word-wrap:break-word;white-space:pre-wrap"><font face="arial, helvetica, sans-serif">    <span style="color:rgb(34,34,34)">With the mt dispatching strategy the event service did not respond to supplier pushes; with the reactive dispatching strategy it worked fine.</span></font></pre><div><font face="arial, helvetica, sans-serif">

    DESCRIPTION:
[Detailed description of problem.  Don't just say "<blah>
doesn't work, here's a fix," explain what your program does
to get to the <blah> state. ]</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><pre style="word-wrap:break-word"><font face="arial, helvetica, sans-serif"><font color="#000000"><span style="white-space:pre-wrap"> I was doing stress tests for the TAO real-time event service, with one supplier (on host 1), one event service (on host 2, along with the naming service), and one consumer (on host 3). I used the example shipped with the TAO 2.4.6 release: $TAO_ROOT/orbsvcs/examples/RtEC/Simple , with the following changes: (1) the supplier ran an infinite loop pushing events without any sleep. (2) the consumer printed log message every 100,000 events. (3) the following ec.conf:</span></font></font></pre><pre style="white-space:pre-wrap;word-wrap:break-word"><span style="color:rgb(0,0,0);font-family:arial,helvetica,sans-serif">static EC_Factory "-ECDispatching mt -ECDispatchingThreads 3 -ECFiltering basic -ECSupplierFiltering per-supplier -ECProxyConsumerLock thread -ECProxySupplierLock thread -ECConsumerControl reactive -ECSupplierControl reactive -ECConsumerControlPeriod 0 -ECSupplierControlPeriod 0 -ECProxyPushSupplierCollection mt:list:immediate </span><span style="color:rgb(0,0,0)"><font face="arial, helvetica, sans-serif">-ECProxyPushConsumerCollection mt:list:immediate"</font></span></pre><pre style="word-wrap:break-word"><font face="arial, helvetica, sans-serif"><span style="white-space:pre-wrap">I saw that the event service did not crash but did not respond to supplier pushes either. On the supplier host the supplier kept pushing events, but on the service host (where event service ran) the system utilization was almost zero. Then I killed everything and switched back to the original ec.conf (which used the reactive dispatching strategy), and it worked fined, showing that one CPU core on the service host reached 100% CPU utilization, and consumer got events.</span></font></pre><pre style="word-wrap:break-word"><font face="arial, helvetica, sans-serif"><span style="white-space:pre-wrap">I tried another case: I collocated supplier, consumer, and the event service on the same host (The </span></font><span style="font-family:arial,helvetica,sans-serif;color:rgb(0,0,0);white-space:pre-wrap">Intel i5-4590 3.3GHz, four-core machine</span><span style="white-space:pre-wrap;font-family:arial,helvetica,sans-serif">), then it seemed to work fine for about two to three minutes (CPU utilization: supplier ~100%, service ~130%, consumer ~66% and got events), but after that it crashed, printing "ERROR: Supplier timeout". Again, if I use the original ec.conf then everything works fine. The original ec.conf is as follows:</span></pre><pre style="word-wrap:break-word"><pre style="white-space:pre-wrap;word-wrap:break-word"><span style="color:rgb(0,0,0);font-family:arial,helvetica,sans-serif">static EC_Factory "-ECDispatching reactive -ECFiltering basic -ECSupplierFiltering per-supplier -ECProxyConsumerLock thread -ECProxySupplierLock thread -ECConsumerControl reactive -ECSupplierControl reactive -ECConsumerControlPeriod 50000 -ECSupplierControlPeriod 50000</span><span style="color:rgb(0,0,0)"><font face="arial, helvetica, sans-serif">"</font></span></pre></pre><pre style="word-wrap:break-word"><font face="arial, helvetica, sans-serif"><span style="white-space:pre-wrap">Does the real-time event channel support multi-core architecture? How to configure the event channel to properly utilize all cores?</span></font></pre><pre style="word-wrap:break-word"><font face="arial, helvetica, sans-serif"><span style="white-space:pre-wrap"><br></span></font></pre><pre style="word-wrap:break-word"><font face="arial, helvetica, sans-serif"><span style="white-space:pre-wrap">Thank you,</span></font></pre><pre style="word-wrap:break-word"><font face="arial, helvetica, sans-serif"><span style="white-space:pre-wrap">Chao</span></font></pre></div>