Home
Reading
Searching
Subscribe
Sponsors
Statistics
Posting
Contact
Spam
Lists
Links
About
Hosting
Filtering
Features Download
Marketing
Archives
FAQ
Blog
 
Gmane
From: Zhaolei <zhaolei <at> cn.fujitsu.com>
Subject: [PATCH 0/3] Add walltime support for ring-buffer
Newsgroups: gmane.linux.kernel
Date: Friday 24th July 2009 10:40:16 UTC (over 7 years ago)
Hello, Steven

It is a prototype code to make ftrace display walltime of events.

It need to applys on my patch of:
[PATCH v3 1/2] Add function to convert between calendar time and
broken-down time for universal use

This code can run but need to be fixed, it only for demostrate what is
result
looks like.

I think display walltime is valuable for ftrace, it can provide more
recognizable information to system manager that he can known "when"
event happened.
And it is also helpful for flight-recorder we are doing now, we can get
walltime of events after panic for analyse.

We can get following result on this patch:
 # cd /mnt/debugfs/tracing/
 # echo sched_switch > current_tracer
 # cat trace
 # tracer: sched_switch
 #
 #           TASK-PID    CPU#    TIMESTAMP  FUNCTION
 #              | |       |          |         |
             bash-2457  [000]   214.895446:   2457:120:S   + [000] 
2457:120:S bash
             bash-2457  [000]   214.898298:   2457:120:R   + [000]    
5:115:S events/0
             bash-2457  [000]   214.898684:   2457:120:R ==> [000]    
5:115:R events/0
         events/0-5     [000]   214.899458:      5:115:R   + [000] 
2455:120:S sshd
         events/0-5     [000]   214.899495:      5:115:S ==> [000] 
2455:120:R sshd
 ...
 # echo 1 > options/walltime
 # cat trace
 # tracer: sched_switch
 #
 #           TASK-PID    CPU#                  TIMESTAMP  FUNCTION
 #              | |       |                        |         |
           -0     [000] 2009-07-25 18:01:00.848468:      0:140:R ==>
[000]     5:115:R events/0
         events/0-5     [000] 2009-07-25 18:01:00.848523:      5:115:S ==>
[000]     0:140:R 
           -0     [000] 2009-07-25 18:01:01.613479:      0:140:R   +
[000]  2455:120:S sshd
           -0     [000] 2009-07-25 18:01:01.613678:      0:140:R ==>
[000]  2455:120:R sshd
             sshd-2455  [000] 2009-07-25 18:01:01.614015:   2455:120:S   +
[000]  2455:120:S sshd
 ...

This patch is prototype because we have following things to do:
1: function to get walltime is not near rb_time_stamp()
   So walltime is not absolutely synchronize with trace time.
   But if we place code to get walltime near rb_time_stamp(), it will be
called
   on every reserve-event and will make system slow.
2: We can't call getnstimeofday() freely in ring-buffer's code, because
   it is possibility already hold xtime_lock. Prototype code used a ugly
way
   to get gid of this problem, maybe we need to ftrace_disable_cpu() before
   every write_seqlock() instead.
3: People maybe change walltime when tracing, but current ring-buffer
page's
   walltime can not reflect this change. We need to add tracepoints to
watch
   this change, and add a walltime-change event(already reserved in
   ring-buffer.c) to record this change.

I'll continue to finish remain steps, what is your opinion on it?

Thanks
Zhaolei
 
CD: 3ms