Re: Kernelshark: funcgraph_exit events don't seem to exit?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


Hi Matteo,

I confirm that the logic that you want can be implemented via plugin. However, there is even simpler way to accomplish what you want. When recording your trace, enable the 'sched_switch' events. This way in your data you will know exactly when the execution switches form one task to another (or to idle). The good thing here is that KernelShark already has a plugin for 'sched_switch' end you will see a the behavior that you expect.


On 9/6/22 14:57, Matteo Bertolino wrote:
Dear Yordan,
Thanks for your reply!

I would like to do a double check to be sure that we're on the same rail.
Can you please take my screenshot again? Between 8.090000 and 8.130000 the trace doesn't provide any information.

We don't know whether:
A) task1 continues after the end of foo1 running something else that is not traced
B) The CPU is idle/a non-traced task is running.

Today, the default behavior of kernelshark is A). Indeed, in my screenshot, the bar indicated by the light-blue arrow is red.

Instead, I wish to code a plugin with a third option:
C) when we do not know what happens, just color with gray.

Do your instructions cover this case?
If so, I would like to have some hints and I will try to implement it :-)

Best Regards,

-----Original Message-----
From: Yordan Karadzhov [mailto:y.karadz@xxxxxxxxx]
Sent: Tuesday, September 6, 2022 12:45 PM
To: Matteo Bertolino <matteo.bertolino@xxxxxxxxxx>; linux-trace-users@xxxxxxxxxxxxxxx
Subject: Re: Kernelshark: funcgraph_exit events don't seem to exit?

Hi Matteo,
Thanks for reporting this issue!

I understand what you would like to see being visualized, but
unfortunately this is different from the implemented generic logic of
the visualization model that changes the color at the place of the first
event that belongs to the new task. Note that this generic logic is
expected to provide adequate visualization for all types of events,
while the behavior that you would like to see makes sense only for very
specific events.

However, what you want is actually very easy to achieve. You just have
to write a kernelshark plugin for funcgraph_exit events. If you are
interested in contributing such plugin to kernelshark, I can send you
instructions what has to be done. It will be really trivial work.


On 9/6/22 12:29, Matteo Bertolino wrote:
Dear community,
In order to explain my problem, I need to ask you to have a look to the visual trace in my github (I cannot attach it to the mail nor using an image uploading service):

In the trace, we have one CPU, CPU0. On it:
- `Task3` runs `foo5()` at time 8.000000 cycles
- `Task2` takes place running `foo3()` at time 8.010000 cycles.
- `Task1` takes place running `foo1()` at time 8.060000 cycles.
For now, everything OK.
Then, I wish to `exit` the three tasks.

- `Task1` exits at 8.090000 cycles. Here the trace does not show what I expect, namely `Task1` (in red) shall end at 8.090000 cycles. Instead, there is a red trace until the beginning of the next exit event, `Task2` at 8.130000.

This doesn't seem an `exit` event. Do you have any suggestions to show what I wish on Kernelshark?

Best Regards,

[Index of Archives]     [Linux USB Development]     [Linux USB Development]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux