>
>    1      2    :END         5        9163
> ===================================================
>
>
>    1      2    :END         6        1686
> ===================================================
>
>
>
> See the problem? In this case speculations 5 and 6 both have non-zero 
>   ts array entries (or they would not have printed) but there is 
> nothing in the speculation buffer (otherwise there would have been the 
> first set of traces printed). Any ideas why this is happening?
>   
Consider the following 2 probes firing on 2 different cpu's at 
approximately the same time.
> } \
> END \
> /ts[this->spec]/ \
> { \
>          commit(this->spec); \
>          this->spec++; \
> }
>
>
>
> syscall::pollsys:return
> /self->spec/
> {
>          ts[self->spec] = 0;
>          discard(self->spec);
>          self->spec = 0;
> }
>
>   
The interleaved execution of the predicate and the clause could lead to 
the kind of output you are observing.
The first probe would find ts[this->spec] to be non-zero and before it 
can execute 'commit(this->spec)' the second
probe would fire and execute 'discard(self->spec)' . The contents of the 
speculative buffer are discarded and the 'commit(this->spec)'
would become a nop.
Such a sequence could explain the missing data for speculation 5 and 6.


Pramod
_______________________________________________
dtrace-discuss mailing list
[email protected]

Reply via email to