Mirror of the lttng-dev mailing list
 help / color / mirror / Atom feed
* [lttng-dev] Tracing peak size of the running queue
@ 2011-11-30 15:19 Gerlando Falauto
  2011-11-30 20:51 ` Michel Dagenais
  0 siblings, 1 reply; 2+ messages in thread
From: Gerlando Falauto @ 2011-11-30 15:19 UTC (permalink / raw)


Hi all,

I am currently using lttng 0.226, and lttv 0.12.38, trying to understand 
the behavior of a system with many concurrent threads, which sometimes 
gets to CPU saturation and timeouts. This could be due to a problem 
either with the scheduler or with the way tasks interact with each 
other, I believe.

I thinkg it might be useful if I could get some representation 
(graphical or otherwise) about the number of RUNNable tasks at any given 
time to get an idea of how much contention is ongoing on the CPU.

So I guess something like the following information:
- peak measurement of the running queue length
- max/mean task latency (i.e. time from the task enters the running 
queue to the time it actually gets the CPU)
- cpu distribution among tasks
when measured over a given time window, might help a lot understand 
these problematic scenarios.

I noticed how you can get some rough information by guihistogram (but I 
understand than only graphs the density of events in the trace) and some 
overall statistics through libguistatistics, but that only relates to 
the overall trace, if I understand it correctly.

I think the above information could be so useful that I am surprised 
lttng does not provide it out of the box. After all, ALL scheduling 
events are traced so it should trivially be a matter of displaying this 
data.

My question is then: is the information I'm looking for completely 
nonsense, or could it easily be obtained somehow (and I just can't find 
the right button)?

Thank you!
Gerlando



^ permalink raw reply	[flat|nested] 2+ messages in thread

* [lttng-dev] Tracing peak size of the running queue
  2011-11-30 15:19 [lttng-dev] Tracing peak size of the running queue Gerlando Falauto
@ 2011-11-30 20:51 ` Michel Dagenais
  0 siblings, 0 replies; 2+ messages in thread
From: Michel Dagenais @ 2011-11-30 20:51 UTC (permalink / raw)



> I thinkg it might be useful if I could get some representation 
> (graphical or otherwise) about the number of RUNNable tasks at any
> given time to get an idea of how much contention is ongoing on the CPU.
> 
> So I guess something like the following information:
> - peak measurement of the running queue length
> - max/mean task latency (i.e. time from the task enters the running 
> queue to the time it actually gets the CPU)
> - cpu distribution among tasks
> when measured over a given time window, might help a lot understand 
> these problematic scenarios.

Yes, these would be nice in the GUI views. This is on our TODO list. The current statistics are precomputed in the background but do not provide quick access to intermediate values for intervals. For small intervals this is not a problem but for large intervals rescanning every event would be costly. We now have a nice scheme that we prototyped to keep intermediate results and quickly compute values for any interval. We need to integrate that stuff.

Note that lttng-top offers that type of information and views, for lttng 2.0 and with newer kernels.

> I think the above information could be so useful that I am surprised 
> lttng does not provide it out of the box. After all, ALL scheduling 
> events are traced so it should trivially be a matter of displaying
> this data.

Correct, the challenge is to do it efficiently for large intervals. You may want to contribute a view with a trivial implementation and we would insert our optimized algorithm later.



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2011-11-30 20:51 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-11-30 15:19 [lttng-dev] Tracing peak size of the running queue Gerlando Falauto
2011-11-30 20:51 ` Michel Dagenais

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox