Thanks Carsten! I'll play around with it this evening! No snow here either btw, just rain. ;)
On Apr 10, 2012, at 14:49 PM, Carsten Ziegeler wrote: > Ok, we had some snowflakes but they didn't make it down to the ground.... > > Anyway, I committed a first version (not really polished) to my > sandbox. It runs a parallel test with some threads etc. and by looking > at the log one can compare the time difference between event admin > versions. > > Carsten > > 2012/4/5 Carsten Ziegeler <[email protected]>: >> Both is possible :) >> >> 2012/4/5 Marcel Offermans <[email protected]>: >>> Snow? :) I feel for the easter bunnies ;) >>> >>> Thanks! >>> >>> Greetings, Marcel >>> >>> >>> On Apr 5, 2012, at 13:03 , Carsten Ziegeler wrote: >>> >>>> The code is too ugly to make it publically available :) >>>> But if we have snow at Easter (which might really happen), i might >>>> have some time to look into this. Anyway, promised: i'll commit >>>> something in the next two weeks >>>> >>>> Carsten >>>> >>>> 2012/4/4 Marcel Offermans <[email protected]>: >>>>> How about just putting those bundles in your sandbox? I would be >>>>> interested to have something to measure the performance of EventAdmin. It >>>>> does not necessarily need to be a Pax Exam compatible test. >>>>> >>>>> Greetings, Marcel >>>>> >>>>> >>>>> On Apr 4, 2012, at 19:50 PM, Carsten Ziegeler wrote: >>>>> >>>>>> I've a performance test (and several others checking for deadlocks, >>>>>> event delivery etc). They all come as bundles which I deploy into a >>>>>> running instance and then check the results. I guess these could be >>>>>> converted to pax exam tests - but right now I don't have time to do >>>>>> that :( >>>>>> >>>>>> Regards >>>>>> Carsten >>>>>> >>>>>> 2012/4/4 Marcel Offermans <[email protected]>: >>>>>>> Out of curiosity, did anybody ever write a "test" that we can run to >>>>>>> benchmark the performance of EventAdmin. I don't mean an ad-hoc test >>>>>>> but something we can put in the Felix repository (in a sandbox). >>>>>>> >>>>>>> Greetings, Marcel >>>>>>> >>>>>>> On Apr 4, 2012, at 19:30 PM, Carsten Ziegeler wrote: >>>>>>> >>>>>>>> Hi Joel, >>>>>>>> >>>>>>>> yes, we noticed some performance problems as well - apart from the >>>>>>>> problem >>>>>>>> you mentioned in our case it was a very high load on the service >>>>>>>> registry >>>>>>>> (which in addition could also cause deadlocks in the framework). >>>>>>>> So I reimplemented the whole thing (FELIX-3321). You can find the code >>>>>>>> now >>>>>>>> in the latest trunk, so you could just build the version from trunk >>>>>>>> and see >>>>>>>> how it performs. It basically changes the way how event handlers are >>>>>>>> fetched from the registry and how the event topic is compared - >>>>>>>> filters are >>>>>>>> now only used if really required, the main checks are done by simple >>>>>>>> string >>>>>>>> comparisons. >>>>>>>> >>>>>>>> For our really simple performance test case with more than 1 million >>>>>>>> events, it took more than 30 seconds with the old implementation, the >>>>>>>> new >>>>>>>> one processes the same amount in less than a second. >>>>>>>> >>>>>>>> Not sure about your problem if events getting eaten up. With the new >>>>>>>> impl >>>>>>>> it should be much easier to track this down (if it still happens) >>>>>>>> >>>>>>>> Regards >>>>>>>> Carsten >>>>>>>> >>>>>>>> 2012/4/4 Joel Schuster <[email protected]> >>>>>>>> >>>>>>>>> Carsten et al.,**** >>>>>>>>> >>>>>>>>> ** ** >>>>>>>>> >>>>>>>>> I've been running some profiling against some test components using >>>>>>>>> EventAdmin. I'm seeing some really degenerate behavior that's causing >>>>>>>>> some >>>>>>>>> real slowdowns for message delivery coming from a few places.**** >>>>>>>>> >>>>>>>>> ** ** >>>>>>>>> >>>>>>>>> Environment: running 400+ messages per second and with 15+ topics with >>>>>>>>> various levels of hierarchy.**** >>>>>>>>> >>>>>>>>> ** ** >>>>>>>>> >>>>>>>>> Because of the general ‘brute force’ means by which >>>>>>>>> org.apache.felix.framework.capabilityset.CapabilitySet.convertArrayToList >>>>>>>>> works, and how the multiple layers of >>>>>>>>> org.apache.felix.framework.capabilityset.CapabilitySet.match work when >>>>>>>>> topics have multiple layers of hierarchy with the names I can double >>>>>>>>> the >>>>>>>>> throughput of EventAdmin by simply changing my topic names to one >>>>>>>>> layer of >>>>>>>>> hierarchy. Of course I lose the advantages of the fiters, but if I can >>>>>>>>> double the throughput then it seems worth it.**** >>>>>>>>> >>>>>>>>> ** ** >>>>>>>>> >>>>>>>>> Even then it’s still taking more than half a millisecond (optimally, >>>>>>>>> sometimes many tens of milliseconds) for any particular message to >>>>>>>>> make its >>>>>>>>> way through the EventAdmin system, being pushed and handled. That >>>>>>>>> seems >>>>>>>>> like a long time. Part of the overhead comes from the >>>>>>>>> org.apache.felix.framework.ServiceRegistry.getService and ungetService >>>>>>>>> calls that happen for every single message push.**** >>>>>>>>> >>>>>>>>> ** ** >>>>>>>>> >>>>>>>>> It seems to me that some sort of caching of previous search results in >>>>>>>>> each of these domains would be well worth the effort.**** >>>>>>>>> >>>>>>>>> ** ** >>>>>>>>> >>>>>>>>> Carsten, I noticed that you had commented about an improved >>>>>>>>> EventAdmin in >>>>>>>>> the sandbox. Can you please point that out to me, I’d like to try it >>>>>>>>> out.* >>>>>>>>> *** >>>>>>>>> >>>>>>>>> ** ** >>>>>>>>> >>>>>>>>> Also, I’ve notice that the EventAdmin is not delivering all the events >>>>>>>>> that are pushed to a topic. Small percentages (1 / 1000) are simply >>>>>>>>> being >>>>>>>>> eaten up somewhere… I can’t seem to track down any reason or log for >>>>>>>>> why >>>>>>>>> the events simply disappeared.**** >>>>>>>>> >>>>>>>>> ** ** >>>>>>>>> >>>>>>>>> ** ** >>>>>>>>> >>>>>>>>> Thanks all for consideration.**** >>>>>>>>> >>>>>>>>> ** ** >>>>>>>>> >>>>>>>>> ** ** >>>>>>>>> >>>>>>>>> ** ** >>>>>>>>> >>>>>>>>> **** >>>>>>>>> >>>>>>>>> ** ** >>>>>>>>> >>>>>>>>> - Joel**** >>>>>>>>> >>>>>>>>> ** ** >>>>>>>>> >>>>>>>>> ** ** >>>>>>>>> >>>>>>>>>> -----Original Message----- >>>>>>>>> >>>>>>>>>> From: Carsten Ziegeler [mailto:[email protected]] >>>>>>>>> >>>>>>>>>> Sent: Tuesday, January 24, 2012 2:55 AM >>>>>>>>> >>>>>>>>>> To: [email protected] >>>>>>>>> >>>>>>>>>> Subject: Re: EventAdmin Asynchronous/Parallel EventHandler >>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>>> Hi, >>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>>> we haven't implemented this feature yet but will do once the final >>>>>>>>> >>>>>>>>>> spec is publically available. >>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>>> I've written a new implementation of the event admin which is in the >>>>>>>>> >>>>>>>>>> felix sandbox atm, this one is significanlty faster than the old >>>>>>>>> >>>>>>>>>> implementation from trunk. >>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>>> Regards >>>>>>>>> >>>>>>>>>> Carsten >>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>>> 2012/1/18 DBinSD <[email protected]>: >>>>>>>>> >>>>>>>>>>> >>>>>>>>> >>>>>>>>>>> Thanks Holger, this is exactly the info I was looking for. It >>>>>>>>>>> sounds >>>>>>>>> like >>>>>>>>> >>>>>>>>>>> the Async Unordered Events might get me the performance I was >>>>>>>>>>> looking >>>>>>>>> >>>>>>>>>> for >>>>>>>>> >>>>>>>>>>> (though the implications of 'unordered' events might be a problem in >>>>>>>>> some >>>>>>>>> >>>>>>>>>>> applications). I will keep an eye out for an implementation of this >>>>>>>>> >>>>>>>>>>> feature. >>>>>>>>> >>>>>>>>>>> >>>>>>>>> >>>>>>>>>>> Thanks again >>>>>>>>> >>>>>>>>>>> Chris >>>>>>>>> >>>>>>>>>>> >>>>>>>>> >>>>>>>>>>> >>>>>>>>> >>>>>>>>>>> >>>>>>>>> >>>>>>>>>>> Holger Hoffstätte-4 wrote: >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> On 18.01.2012 03:35, DBinSD wrote: >>>>>>>>> >>>>>>>>>>>>> Does the felix implementation of the EventAdmin service support >>>>>>>>>>>>> the >>>>>>>>> >>>>>>>>>>>>> delivery >>>>>>>>> >>>>>>>>>>>>> of events, asynchronously and in parallel to multiple listeners at >>>>>>>>> once? >>>>>>>>> >>>>>>>>>>>>> It >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> This was addressed as part of RFC 157 ("Updates to EventAdmin") >>>>>>>>> >>>>>>>>>> sometime >>>>>>>>> >>>>>>>>>>>> in 2010 and accepted, though I don't remember offhand what the >>>>>>>>> >>>>>>>>>>>> implementation status was/is. IIRC it was part of 4.3. >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> The solution added a set of constants that express basic delivery >>>>>>>>> >>>>>>>>>>>> behaviour/expectations. Not really enforceable end-to-end QoS >>>>>>>>> >>>>>>>>>> constraints >>>>>>>>> >>>>>>>>>>>> (which are impossible in Java anyway) but better than nothing. >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> --snip-- >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> 5.2 Asynchronous Unordered Events >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> The following constants are added to EventConstants. This allows an >>>>>>>>> >>>>>>>>>> Event >>>>>>>>> >>>>>>>>>>>> Handler to indicate that it is willing to relax the event ordering >>>>>>>>> >>>>>>>>>>>> requirements so that Event Admin can optimize delivery. >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> String EVENT_DELIVERY = "event.delivery" >>>>>>>>> >>>>>>>>>>>> Service Registration property specifying the delivery qualities >>>>>>>>> requested >>>>>>>>> >>>>>>>>>>>> by an Event Handler service. >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> Event handlers MAY be registered with this property. Each value of >>>>>>>>> this >>>>>>>>> >>>>>>>>>>>> property is a string specifying a delivery quality for the Event >>>>>>>>> handler. >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> The value of this property must be of type String, String[], or >>>>>>>>> >>>>>>>>>>>> Collection<String>. >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> Since: >>>>>>>>> >>>>>>>>>>>> 1.3 >>>>>>>>> >>>>>>>>>>>> See Also: >>>>>>>>> >>>>>>>>>>>> DELIVERY_ASYNC_ORDERED >>>>>>>>> >>>>>>>>>>>> DELIVERY_ASYNC_UNORDERED >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> String DELIVERY_ASYNC_ORDERED = "async.ordered" >>>>>>>>> >>>>>>>>>>>> Event Handler delivery quality value specifying the Event Handler >>>>>>>>> requires >>>>>>>>> >>>>>>>>>>>> asynchronously delivered events be delivered in order. Ordered >>>>>>>>> delivery >>>>>>>>> >>>>>>>>>> is >>>>>>>>> >>>>>>>>>>>> the default for asynchronously delivered events. >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> This delivery quality value is mutually exclusive with >>>>>>>>> >>>>>>>>>>>> DELIVERY_ASYNC_UNORDERED. However, if both this value and >>>>>>>>> >>>>>>>>>>>> DELIVERY_ASYNC_UNORDERED are specifed for an event handler, this >>>>>>>>> >>>>>>>>>> value >>>>>>>>> >>>>>>>>>>>> takes precedence. >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> Since: >>>>>>>>> >>>>>>>>>>>> 1.3 >>>>>>>>> >>>>>>>>>>>> See Also: >>>>>>>>> >>>>>>>>>>>> EVENT_DELIVERY >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> String DELIVERY_ASYNC_UNORDERED = "async.unordered" >>>>>>>>> >>>>>>>>>>>> Event Handler delivery quality value specifying the Event Handler >>>>>>>>>>>> does >>>>>>>>> >>>>>>>>>> not >>>>>>>>> >>>>>>>>>>>> require asynchronously delivered events be delivered in order. This >>>>>>>>> may >>>>>>>>> >>>>>>>>>>>> allow an Event Admin implementation to optimize asynchronous event >>>>>>>>> >>>>>>>>>>>> delivery by relaxing ordering requirements. >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> This delivery quality value is mutually exclusive with >>>>>>>>> >>>>>>>>>>>> DELIVERY_ASYNC_ORDERED. However, if both this value and >>>>>>>>> >>>>>>>>>>>> DELIVERY_ASYNC_ORDERED are specifed for an event handler, >>>>>>>>> >>>>>>>>>>>> DELIVERY_ASYNC_ORDERED takes precedence. >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> Since: >>>>>>>>> >>>>>>>>>>>> 1.3 >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> See Also: >>>>>>>>> >>>>>>>>>>>> EVENT_DELIVERY >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> --snip-- >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> Also see >>>>>>>>> >>>>>>>>>>>> http://stackoverflow.com/questions/7018762/when-to-use-osgi- >>>>>>>>> >>>>>>>>>> eventadmin-and-when-not >>>>>>>>> >>>>>>>>>>>> for BJ's official answer. >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> hope this helps >>>>>>>>> >>>>>>>>>>>> Holger >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> --------------------------------------------------------------------- >>>>>>>>> >>>>>>>>>>>> To unsubscribe, e-mail: [email protected] >>>>>>>>> >>>>>>>>>>>> For additional commands, e-mail: [email protected] >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>> >>>>>>>>> >>>>>>>>>>> -- >>>>>>>>> >>>>>>>>>>> View this message in context: http://old.nabble.com/EventAdmin- >>>>>>>>> >>>>>>>>>> Asynchronous-Parallel-EventHandler-tp33158446p33162303.html >>>>>>>>> >>>>>>>>>>> Sent from the Apache Felix - Users mailing list archive at >>>>>>>>>>> Nabble.com. >>>>>>>>> >>>>>>>>>>> >>>>>>>>> >>>>>>>>>>> >>>>>>>>> >>>>>>>>>>> --------------------------------------------------------------------- >>>>>>>>> >>>>>>>>>>> To unsubscribe, e-mail: [email protected] >>>>>>>>> >>>>>>>>>>> For additional commands, e-mail: [email protected] >>>>>>>>> >>>>>>>>>>> >>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>>> -- >>>>>>>>> >>>>>>>>>> Carsten Ziegeler >>>>>>>>> >>>>>>>>>> [email protected] >>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>>> --------------------------------------------------------------------- >>>>>>>>> >>>>>>>>>> To unsubscribe, e-mail: [email protected] >>>>>>>>> >>>>>>>>>> For additional commands, e-mail: [email protected] >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Carsten Ziegeler >>>>>>>> [email protected] >>>>>>> >>>>>>> >>>>>>> --------------------------------------------------------------------- >>>>>>> To unsubscribe, e-mail: [email protected] >>>>>>> For additional commands, e-mail: [email protected] >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Carsten Ziegeler >>>>>> [email protected] >>>>>> >>>>>> --------------------------------------------------------------------- >>>>>> To unsubscribe, e-mail: [email protected] >>>>>> For additional commands, e-mail: [email protected] >>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: [email protected] >>>>> For additional commands, e-mail: [email protected] >>>>> >>>> >>>> >>>> >>>> -- >>>> Carsten Ziegeler >>>> [email protected] >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: [email protected] >>>> For additional commands, e-mail: [email protected] >>>> >>>> >>>> >>>> >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [email protected] >>> For additional commands, e-mail: [email protected] >>> >> >> >> >> -- >> Carsten Ziegeler >> [email protected] > > > > -- > Carsten Ziegeler > [email protected] > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

