I need trace python projects, with low over head and a little flexibility.

There are some pure python based trace tools, but most of them make
codes slower. I also tried systemtap, but it still become much slower
in complicated python codes. I'm now finding a better tool or some
inspirations.

Flexibility for me means that operators could write some scripts to
choose what to trace. Someone traces function A, and someone traces B
for other purposes. Using the android case as example, I think I could
control the format of input data to manage trace objects. However I'm
not confident with this idea.


On Wed, Aug 12, 2015 at 11:58 AM, Scotty <sba...@eng.utah.edu> wrote:
> Hi Kun,
>
>
>
> On 08/11/2015 08:42 PM, Kun Huang wrote:
>> Hi Scotty
>>
>> I have read your links. I found the read from 'trace' and the write to
>> 'trace_marker' are normal read&write which works like proc system.
>>
>> I have questions that what's more difference between ftrace and proc?
>> I just know I could read data as pipeline from ftrace.
>
> Well, in kernel land you can trace your functions, with very little over 
> head. For example, in the binder driver 
> (http://lxr.free-electrons.com/source/drivers/android/binder.c#L2423) there 
> are trace events everywhere throughout the code. The thing is you need to 
> build the traces into your code, if you're going to use it.
>
> When you're in userland one way to trace your application flow is by making a 
> wrapper around the debugfs entry (like android does) and manually write()'ing 
> the data into the kernel buffer -- This is what android does.
>
> Why ftrace is in debugfs and not procfs? I'm not sure you'll have to ask the 
> original developers, I'm sure there is a good reason.
>
> Perhaps I didn't understand your use case. Did you want to see what was 
> happening in kernel land while you were running your python project? Or do 
> you want to be able to trace your python functions like the way ftrace can 
> trace kernel functions during execution?
>
>
>
>
>> On Wed, Aug 12, 2015 at 10:25 AM, Kun Huang <gar...@openstacker.org> wrote:
>>> Thank you for your help Scotty :) I'm reading it.
>>>
>>> On Wed, Aug 12, 2015 at 2:34 AM, Scotty Bauer <sba...@eng.utah.edu> wrote:
>>>> It is possible to trace from userland, Android does it.
>>>>
>>>> Essentially you need to write your data into
>>>> /sys/kernel/debug/tracing/trace_marker
>>>>
>>>> then read it out of /sys/kernel/debug/tracing/trace
>>>>
>>>>
>>>> If you care how the implementation works you can read it in
>>>> /kernel/tracing/trace.c
>>>> (http://lxr.free-electrons.com/source/kernel/trace/trace.c) search for
>>>> tracing_mark_fops and tracing_fops.
>>>>
>>>>
>>>> In Android here are the relevant files you will need to see how it's used 
>>>> in
>>>> userland:
>>>> Atrace (for reading data out + setting things up):
>>>> https://android.googlesource.com/platform/frameworks/native/+/master/cmds/atrace/atrace.cpp
>>>> https://android.googlesource.com/platform/external/chromium-trace/+/master
>>>> (host side setup of the device)
>>>>
>>>> trace-dev (for writing data in):
>>>> https://android.googlesource.com/platform/system/core/+/master/libcutils/trace-dev.c
>>>>
>>>> Once we have all the data we usually run it through trace-viewer,
>>>> (https://github.com/catapult-project/catapult)
>>>>
>>>> Cheers.
>>>>
>>>>
>>>>> On 2015-08-11 06:53, Kun Huang wrote:
>>>>>>
>>>>>> Hi ftrace developers
>>>>>>
>>>>>> I'm developing a huge python based programs and facing performance
>>>>>> issue everyday. I like the ftrace system and hope there could be a
>>>>>> tracer to trace&report my python codes. Is it possible or is it
>>>>>
>>>>> worthy
>>>>>>
>>>>>> to do this?
>>>>>>
>>>>>> ---
>>>>>>
>>>>>> Kun
>>>>>> --
>>>>>> To unsubscribe from this list: send the line "unsubscribe
>>>>>
>>>>> linux-kernel" in
>>>>>>
>>>>>> the body of a message to majord...@vger.kernel.org
>>>>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>>>>
>>>>> [6]
>>>>>>
>>>>>> Please read the FAQ at  http://www.tux.org/lkml/ [7]
>>>>>
>>>>>
>>>>> Links:
>>>>> ------
>>>>> [1] http://lxr.free-electrons.com/source/kernel/trace/trace.c
>>>>> [2]
>>>>>
>>>>> https://android.googlesource.com/platform/frameworks/native/+/master/cmds/atrace/atrace.cpp
>>>>> [3]
>>>>> https://android.googlesource.com/platform/external/chromium-trace/+/master
>>>>> [4]
>>>>>
>>>>> https://android.googlesource.com/platform/system/core/+/master/libcutils/trace-dev.c
>>>>> [5] https://github.com/catapult-project/catapult
>>>>> [6] http://vger.kernel.org/majordomo-info.html
>>>>> [7] http://www.tux.org/lkml/
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>> the body of a message to majord...@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>> Please read the FAQ at  http://www.tux.org/lkml/
>>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to