Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [tracecompass-dev] Event requests precedence

On 11/01/2014 09:10 PM, Alexandre Montplaisir wrote:
Hi Geneviève,

This is indeed an interesting problem. Now that analyses each run in their separate thread, the order in which they will receive events is, as you say, more or less random.

We talked some time ago about implementing "priorities" for event requests, so that a component could be guaranteed to receive events before or after another one. Something similar to https://bugs.eclipse.org/bugs/show_bug.cgi?id=409424 , but for event requests instead of signals.

Nowadays, I have to wonder if something like this would even be required. Since we can now have dependencies between analysis modules, could we reuse this dependency chain to determine the order in which they should receive coalesced request events?
Actually, the dependency between analysis is not implemented yet. Each analysis makes sure to schedule in its executeAnalysis the analysis it requires. And each of those analysis sends their own event request (if necessary). But since the parent analysis's job is already running (since it is in the executeAnalysis), chances are most likely it will be serviced before the jobs for the children analyses. Maybe it's time to have some kind of dependency chain between the analysis so the children's jobs are schedule before, but the order stays random.

We could also possibly add the event provider as parameter to the schedule() method so we know to whom to send the event request if necessary. But still, what if the request bus starts before one of the child requests is queued?

I'll think on it...

Cheers,
Geneviève

Is this something that would even make sense in the first place? I think it would apply to your current case (the "experiment analysis" depends on the trace's analysis, so would receive its events after those), but would it be always like this?

Cheers,
Alexandre


On 10/31/2014 03:06 PM, Geneviève Bastien wrote:
Hello,

I would like some information on how the event request coalescing works as of now and how I could make the following use case work:

* I have an analysis for an experiment (let's call it the virtual machine analysis) that runs an event request on the experiment. * That analysis also depends on individual analysis from the traces of the experiment (concretely the LttngKernelAnalysisModule from each kernel trace). * When the experiment analysis module is executed, it also makes sure the LttngKernelAnalysisModule from each child trace is executed. * But when I handle an event in the experiment, I want to be sure that the LttngKernelAnalysisModules have run with this event before handling it in the experiment.

If I just let things run by themselves right now, the order of the requests is random so the event may or may not have been handled by the traces before it is by the experiment.

How would be the best way to solve this?

Thanks,
Geneviève




Back to the top