2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-21 11:44:01 +08:00
linux-next/tools/perf/Documentation
Andrew Vagin 26a031e136 perf inject: Merge sched_stat_* and sched_switch events
You may want to know where and how long a task is sleeping. A callchain
may be found in sched_switch and a time slice in stat_iowait, so I add
handler in perf inject for merging this events.

My code saves sched_switch event for each process and when it meets
stat_iowait, it reports the sched_switch event, because this event
contains a correct callchain. By another words it replaces all
stat_iowait events on proper sched_switch events.

I use the next sequence of commands for testing:

  perf record -e sched:sched_stat_sleep -e sched:sched_switch \
	      -e sched:sched_process_exit -g -o ~/perf.data.raw \
	      ~/test-program
  perf inject -v -s -i ~/perf.data.raw -o ~/perf.data
  perf report --stdio -i ~/perf.data
   100.00%	foo  [kernel.kallsyms]  [k] __schedule
               	|
                --- __schedule
                    schedule
                   |
                   |--79.75%-- schedule_hrtimeout_range_clock
                   |          schedule_hrtimeout_range
                   |          poll_schedule_timeout
                   |          do_select
                   |          core_sys_select
                   |          sys_select
                   |          system_call_fastpath
                   |          __select
                   |          __libc_start_main
                   |
                    --20.25%-- do_nanosleep
                              hrtimer_nanosleep
                              sys_nanosleep
                              system_call_fastpath
                              __GI___libc_nanosleep
                              __libc_start_main

 And here is test-program.c:

 #include<unistd.h>
 #include<time.h>
 #include<sys/select.h>

 int main()
 {
	struct timespec ts1;
	struct timeval tv1;
	int i;
	long s;

	for (i = 0; i <  10; i++) {
		ts1.tv_sec = 0;
		ts1.tv_nsec = 10000000;
		nanosleep(&ts1, NULL);

		tv1.tv_sec = 0;
		tv1.tv_usec = 40000;
		select(0, NULL, NULL, NULL,&tv1);
	}
	return 1;
 }

Signed-off-by: Andrew Vagin <avagin@openvz.org>
Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1344344165-369636-4-git-send-email-avagin@openvz.org
[ committer note: Made it use evsel->handler ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2012-10-26 11:22:25 -02:00
..
android.txt Documentation: add documentation on compiling for Android 2012-10-08 17:44:39 -03:00
asciidoc.conf perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ 2009-06-06 20:33:43 +02:00
examples.txt mm-tracepoint: fix documentation and examples 2012-01-10 16:30:41 -08:00
jit-interface.txt perf symbols: Add description of JIT interface 2012-08-13 14:55:02 -03:00
Makefile perf tools: Try to build Documentation when installing 2012-10-24 19:30:48 -02:00
manpage-1.72.xsl perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ 2009-06-06 20:33:43 +02:00
manpage-base.xsl perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ 2009-06-06 20:33:43 +02:00
manpage-bold-literal.xsl perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ 2009-06-06 20:33:43 +02:00
manpage-normal.xsl perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ 2009-06-06 20:33:43 +02:00
manpage-suppress-sp.xsl perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ 2009-06-06 20:33:43 +02:00
perf-annotate.txt perf tools: Allow user to indicate path to objdump in command line 2012-09-05 19:41:55 -03:00
perf-archive.txt perf archive: Add documentation 2010-01-20 08:54:58 +01:00
perf-bench.txt perf bench: Fix confused variable namings and descriptions in mem subsystem 2012-07-02 14:35:45 -03:00
perf-buildid-cache.txt perf man pages: Fix cut'n'paste error 2010-07-28 11:30:10 -03:00
perf-buildid-list.txt perf report: Accept fifos as input file 2011-12-23 17:01:03 -02:00
perf-diff.txt perf diff: Add -F option to display formula for computation 2012-10-05 14:13:36 -03:00
perf-evlist.txt perf evlist: Show event attribute details 2012-05-22 14:30:11 -03:00
perf-help.txt perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ 2009-06-06 20:33:43 +02:00
perf-inject.txt perf inject: Merge sched_stat_* and sched_switch events 2012-10-26 11:22:25 -02:00
perf-kmem.txt perf report: Accept fifos as input file 2011-12-23 17:01:03 -02:00
perf-kvm.txt perf kvm: Events analysis tool 2012-09-21 12:51:22 -03:00
perf-list.txt perf list: Document precise event sampling for AMD IBS 2012-08-08 12:42:21 -03:00
perf-lock.txt perf lock: Document lock info subcommand 2012-01-30 18:30:48 -02:00
perf-probe.txt perf probe: Detect probe target when m/x options are absent 2012-05-11 13:58:53 -03:00
perf-record.txt perf record: Fix documentation for branch stack sampling 2012-05-22 12:47:45 -03:00
perf-report.txt perf tools: Allow user to indicate path to objdump in command line 2012-09-05 19:41:55 -03:00
perf-sched.txt perf report: Accept fifos as input file 2011-12-23 17:01:03 -02:00
perf-script-perl.txt perf script perl/python: Fix libexec scripts path in Documentation 2012-08-20 09:30:36 -03:00
perf-script-python.txt perf script perl/python: Fix libexec scripts path in Documentation 2012-08-20 09:30:36 -03:00
perf-script.txt perf script: Add option resolving vmlinux path 2012-01-30 18:13:07 -02:00
perf-stat.txt perf tools: Allow multiple threads or processes in record, stat, top 2012-02-13 22:54:11 -02:00
perf-test.txt perf test: Allow running just a subset of the available tests 2011-11-29 14:04:35 -02:00
perf-timechart.txt perf report: Accept fifos as input file 2011-12-23 17:01:03 -02:00
perf-top.txt perf tools: Add sort by src line/number 2012-06-19 13:06:18 -03:00
perf-trace.txt perf trace: Use sched:sched_stat_runtime to provide a thread summary 2012-10-25 10:57:43 -02:00
perf.txt perf: Fix few typos + cosmetics 2010-01-13 17:39:44 +01:00
perfconfig.example perf annotate browser: Read perf config file for settings 2012-05-29 22:06:30 -03:00