From: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
To: Ingo Molnar <mingo@elte.hu>
Cc: Frederic Weisbecker <fweisbec@gmail.com>,
Thomas Gleixner <tglx@linutronix.de>,
Peter Zijlstra <peterz@infradead.org>,
Steven Rostedt <rostedt@goodmis.org>,
Paul Mackerras <paulus@samba.org>,
LKML <linux-kernel@vger.kernel.org>
Subject: [PATCH v2 0/5] perf_event: introduce 'perf timer' to analyze timer's behavior
Date: Tue, 22 Dec 2009 21:00:01 +0800 [thread overview]
Message-ID: <4B30C2D1.4030006@cn.fujitsu.com> (raw)
In-Reply-To: <20091215142325.GC5833@nowhere>
Hi,
We introduce 'perf timer' in this patchset, it can report
number of activated/expired/canceled timers, timer latency
and timer function runtime.
Changlog v1->v2:
- export HZ in timer's tracepoint, we can use it to get
TIMER/ITIMER_VIRTUAL/ITIMER_PROF exact latency as Ingo's
suggestion
- rename 'perf timer latency' to 'perf timer report',
because it not only show timer latency but also show timer
function runtime, timer activated/canceled/expired statistics
and canceled timer list(TODO)
Below changes are all from Thomas's suggestion:
- fix a lot of typos and bad ideas
- use hash table instead of RB tree to record timer
- let output information more readable
- report number of activated/canceled/expired timers
- support to filter timer types:
'--type' can do it
TODO:
- Show canceled timer list that is suggested by Thomas
- Any suggestion are welcome.
===============================================
Usage:
- record timer events:
#perf timer record
#^C
- show timer statistics:
#perf timer report
Statistics
==========
Activated timers number:
HRTIMER: 37199 TIMER: 828 ITIMER_PROF: 2 ITIMER_VIRTUAL: 2 ITIMER_REAL: 18
Expired timers number:
HRTIMER: 34912 TIMER: 617 ITIMER_PROF: 1 ITIMER_VIRTUAL: 1 ITIMER_REAL: 1
Canceled timers number:
HRTIMER: 37200 TIMER: 829 ITIMER_PROF: 1 ITIMER_VIRTUAL: 1 ITIMER_REAL: 17
- show timer latency:
#perf timer report --print-lat
Timer Latency List
[ Abbreviations: Avg = average; lat = latency; ts = timestamp ]
-------------------------------------------------------------------------
Timer | TYPE | Avg-lat ms| Max-lat ms| Max-lat-ts s
-------------------------------------------------------------------------
smbd |HRTIMER |1.563 |1.563 |40666.379
irqbalance |HRTIMER |0.842 |2.484 |40670.231
......
vi |HRTIMER |0.123 |0.123 |40637.065
events/1 |TIMER |168.420 |1008.000 |40677.006
events/0 |TIMER |87.759 |1008.000 |40618.009
......
main |ITIMER_PROF |0.000 |0.000 |40661.023
main |ITIMER_VIRTUAL |0.000 |0.000 |40642.829
main |ITIMER_REAL |0.133 |0.133 |40622.731
- show timer function runtime:
#perf timer report --print-runtime
Timer Function Runtime List
[ Abbreviations: Avg = average; func = function; rt = runtime; ts = timestamp ]
-------------------------------------------------------------------------------
Timer | Type |Avg-rt ms|Max-rt ms| Max-rt-func | Max-rt-ts s
-------------------------------------------------------------------------------
smbd |HRTIMER|0.020 |0.020 |hrtimer_wakeup |40666.379
irqbalance |HRTIMER|0.012 |0.020 |hrtimer_wakeup |40670.231
......
events/1 |TIMER |0.009 |0.017 |delayed_work_timer_fn |40646.090
events/0 |TIMER |0.009 |0.091 |delayed_work_timer_fn |40651.105
- you can use '--print-lat' and '--print-runtime' at the same time:
#perf timer report --print-runtime --print-lat
Timer Latency List
[ Abbreviations: Avg = average; lat = latency; ts = timestamp ]
-------------------------------------------------------------------------
Timer | TYPE | Avg-lat ms| Max-lat ms| Max-lat-ts s
-------------------------------------------------------------------------
smbd |HRTIMER |1.563 |1.563 |40666.379
irqbalance |HRTIMER |0.842 |2.484 |40670.231
......
Timer Function Runtime List
[ Abbreviations: Avg = average; func = function; rt = runtime; ts = timestamp ]
-------------------------------------------------------------------------------
Timer | Type |Avg-rt ms|Max-rt ms| Max-rt-func | Max-rt-ts s
-------------------------------------------------------------------------------
smbd |HRTIMER|0.020 |0.020 |hrtimer_wakeup |40666.379
irqbalance |HRTIMER|0.012 |0.020 |hrtimer_wakeup |40670.231
- Select timer type which you are interesting:
#perf timer report --print-lat --type timer
Timer Latency List
[ Abbreviations: Avg = average; lat = latency; ts = timestamp ]
-------------------------------------------------------------------------
Timer | TYPE | Avg-lat ms| Max-lat ms| Max-lat-ts s
-------------------------------------------------------------------------
events/1 |TIMER |168.420 |1008.000 |40677.006
events/0 |TIMER |87.759 |1008.000 |40618.009
events/1 |TIMER |57.000 |153.000 |40634.571
You can specify more types, such as: '--type timer,hrtimer'
next prev parent reply other threads:[~2009-12-22 13:01 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-15 11:17 [PATCH 0/4] perf_event: introduce 'perf timer' to analyze timer's behavior Xiao Guangrong
2009-12-15 11:19 ` [PATCH 1/4] trace_event: record task' real_timer in itimer_state tracepoint Xiao Guangrong
2009-12-15 11:20 ` [PATCH 2/4] perf_event: fix getting point Xiao Guangrong
2009-12-15 11:21 ` [PATCH 3/4] perf/timer: add document Xiao Guangrong
2009-12-15 11:22 ` [PATCH 4/4] perf/timer: 'perf timer' core code Xiao Guangrong
2009-12-15 17:44 ` Thomas Gleixner
2009-12-16 5:56 ` Xiao Guangrong
2009-12-16 15:59 ` Thomas Gleixner
2009-12-17 7:26 ` Xiao Guangrong
2009-12-15 13:58 ` [PATCH 2/4] perf_event: fix getting point Frederic Weisbecker
2009-12-16 1:03 ` Xiao Guangrong
2009-12-16 1:22 ` Frederic Weisbecker
2009-12-16 1:32 ` Xiao Guangrong
2009-12-15 14:15 ` [PATCH 0/4] perf_event: introduce 'perf timer' to analyze timer's behavior Frederic Weisbecker
2009-12-16 1:19 ` Xiao Guangrong
2009-12-16 7:32 ` Ingo Molnar
2009-12-16 7:40 ` Xiao Guangrong
2009-12-16 7:46 ` Ingo Molnar
2009-12-15 14:23 ` Frederic Weisbecker
2009-12-22 13:00 ` Xiao Guangrong [this message]
2009-12-22 13:01 ` [PATCH v2 1/5] perf_event: fix getting point Xiao Guangrong
2009-12-22 13:03 ` [PATCH v2 2/5]: trace_event: export HZ in timer's tracepoint format Xiao Guangrong
2009-12-22 13:20 ` Xiao Guangrong
2009-12-28 7:54 ` Ingo Molnar
2009-12-28 10:40 ` Xiao Guangrong
2009-12-29 5:20 ` [PATCH v3 0/5] perf tools: introduce 'perf timer' to analyze timer's behavior Xiao Guangrong
2009-12-29 5:21 ` [PATCH v3 1/5] perf_event: introduce 'inject' event and get HZ Xiao Guangrong
2009-12-30 9:19 ` Peter Zijlstra
2009-12-30 9:28 ` Ingo Molnar
2009-12-30 9:36 ` Peter Zijlstra
2009-12-30 9:44 ` Ingo Molnar
2009-12-30 10:06 ` Peter Zijlstra
2009-12-30 11:30 ` Ingo Molnar
2009-12-30 9:37 ` Xiao Guangrong
2009-12-30 9:45 ` Peter Zijlstra
2009-12-29 5:21 ` [PATCH v3 2/5] trace_event: record task' real_timer in itimer_state tracepoint Xiao Guangrong
2009-12-29 5:21 ` [PATCH v3 3/5] perf tools: fix getting point Xiao Guangrong
2009-12-29 5:21 ` [PATCH v3 4/5] perf timer: add document for 'perf timer' Xiao Guangrong
2009-12-29 5:22 ` [PATCH v3 5/5] perf timer: add 'perf timer' core code Xiao Guangrong
2009-12-22 13:04 ` [PATCH v2 3/5] trace_event: record task' real_timer in itimer_state tracepoint Xiao Guangrong
2009-12-22 13:06 ` [PATCH v2 4/5] perf/timer: add document for 'perf timer' Xiao Guangrong
2009-12-22 13:08 ` [PATCH v2 5/5] perf/timer: add 'perf timer' core code Xiao Guangrong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4B30C2D1.4030006@cn.fujitsu.com \
--to=xiaoguangrong@cn.fujitsu.com \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=paulus@samba.org \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox