Bob Paulin created FELIX-4638:
---------------------------------

             Summary: Event Admin - Less locking on event handler timing
                 Key: FELIX-4638
                 URL: https://issues.apache.org/jira/browse/FELIX-4638
             Project: Felix
          Issue Type: Improvement
          Components: Event Admin
            Reporter: Bob Paulin
            Priority: Minor


The locking that is done for the blacklist timing seems to degrade performance 
significantly Felix is under stress with multiple firing handler callbacks for 
each event.  I'd like to discuss an alternative approach with less locking that 
still  guarantees proper event ordering per the OSGi spec.  Basically instead 
of using the CyclicBarriers (Rendezvous) on a per handler basis we could use a 
count down latch to only await after all handlers are complete.  Then instead 
of using a stopwatch based timer the JMX Current Thread Cpu Time which counts 
CPU time for the application code and any IO performed on it's behalf filtering 
out time context switching between threads to provide proper blacklisting.  

Here are my test results.

Baseline(Event Admin 1.4.2):
15 Threads
100000 Async Events per Thread
7 Active Handlers per Event

For a total of 10500000 Handler Events Executed in 40000 - 45000ms

With the same parameters above but a CountDownLatch I see the execution time 
drop to around 25000ms.   The improvement is noticeable because the stress test 
includes 7 active handlers per event.  The improvement is less noticeable with 
applications that only register one or 2 handlers for an active event such as 
in the PerformanceTestIT.  Thoughts on changing how this locking occurs?  
Concerns with using the JMX timings?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to