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] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

