From: Jeremy Eder <jeder@redhat.com>
To: Namhyung Kim <namhyung@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>,
Arnaldo Carvalho de Melo <acme@ghostprotocols.net>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Paul Mackerras <paulus@samba.org>, Ingo Molnar <mingo@kernel.org>,
Namhyung Kim <namhyung.kim@lge.com>,
LKML <linux-kernel@vger.kernel.org>,
Steven Rostedt <rostedt@goodmis.org>,
Frederic Weisbecker <fweisbec@gmail.com>,
David Ahern <dsahern@gmail.com>,
Stephane Eranian <eranian@google.com>,
Jeremy Eder <jeder@redhat.com>
Subject: Re: [PATCHSET 00/17] perf tools: Introduce new 'ftrace' command (v4)
Date: Wed, 28 Aug 2013 10:57:08 -0400 [thread overview]
Message-ID: <20130828145708.GA20153@jeder.rdu.redhat.com> (raw)
In-Reply-To: <87r4dywcu3.fsf@sejong.aot.lge.com>
On 130813 11:20:52, Namhyung Kim wrote:
> ------------8<-------------
> diff --git a/tools/perf/builtin-ftrace.c b/tools/perf/builtin-ftrace.c
> index 9e78ec19caeb..10590b794cae 100644
> --- a/tools/perf/builtin-ftrace.c
> +++ b/tools/perf/builtin-ftrace.c
> @@ -555,17 +555,25 @@ sleep:
> while (true) {
> int n = read(trace_fd, buf, sizeof(buf));
>
> - if (n < 0)
> - goto out_close;
> - if (n == 0)
> + if (n < 0) {
> + if (errno == EINTR || errno == EAGAIN)
> + break;
> + perror("flush read");
> + goto out_close2;
> + } else if (n == 0)
> break;
> - if (write(output_fd, buf, n) != n)
> - goto out_close;
> +
> + if (write(output_fd, buf, n) != n) {
> + perror("flush write");
> + goto out_close2;
> + }
>
> byte_written += n;
> }
> fra->state = RECORD_STATE__DONE;
>
> +out_close2:
> + close(output_fd);
> out_close:
> close(trace_fd);
> out:
> @@ -579,6 +587,8 @@ out:
> pthread_cond_signal(&recorder_ready_cond);
> pthread_mutex_unlock(&recorder_mutex);
> }
> +
> + pr_debug2("done with %ld bytes\n", (long)byte_written);
> return fra;
> }
>
Hmm, I already had hunk #3 in your git tree v4.
> @@ -1139,12 +1149,12 @@ retry:
> return record;
> }
>
> - munmap(fra->map, pevent_get_page_size(ftrace->pevent));
> - fra->map = NULL;
> -
> if (fra->done)
> return NULL;
>
> + munmap(fra->map, pevent_get_page_size(ftrace->pevent));
> + fra->map = NULL;
> +
> fra->offset += pevent_get_page_size(ftrace->pevent);
> if (fra->offset >= fra->size) {
> /* EOF */
After patching your tree with just the first 2 hunks, I'm able to
get ftrace-style function graphing out of perf.
# ./perf ftrace record df
Filesystem 1K-blocks Used Available Use% Mounted on
<snip>...
# ./perf --no-pager ftrace show | head -20
overriding event (11) ftrace:funcgraph_entry with new print handler
overriding event (10) ftrace:funcgraph_exit with new print handler
2) 0.686 us | finish_task_switch();
2) 0.260 us | finish_wait();
2) | mutex_lock() {
2) 0.211 us | _cond_resched();
2) 1.170 us | }
2) 0.319 us | generic_pipe_buf_confirm();
2) 0.261 us | generic_pipe_buf_map();
2) 0.129 us | generic_pipe_buf_unmap();
2) 0.747 us | anon_pipe_buf_release();
2) 0.138 us | mutex_unlock();
2) | __wake_up_sync_key() {
2) 0.279 us | _raw_spin_lock_irqsave();
2) 0.135 us | __wake_up_common();
2) 0.133 us | __lock_text_start();
2) 3.386 us | }
2) | kill_fasync() {
2) | smp_reschedule_interrupt() {
2) 0.130 us | kvm_guest_apic_eoi_write();
Nice.
Not sure if you intend to move all ftrace functionality over to
perf ftrace, but the function graph timings is a great start and something sorely
missing.
Do you intend to add -e event support or -l function-specific options ? In the real
world, without filtering on events or functions, I've had systems hang, plus
performance impact is too great.
A common invocation of ftrace via trace-cmd is:
# trace-cmd record -p function_graph -e irq:* -l do_IRQ ping -c1 www.redhat.com
So possible perf equivalent?
# ./perf ftrace record -e irq:* -e do_IRQ ping -c1 www.redhat.com
Thanks!
next prev parent reply other threads:[~2013-08-28 15:42 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-30 9:18 [PATCHSET 00/17] perf tools: Introduce new 'ftrace' command (v4) Namhyung Kim
2013-07-30 9:18 ` [PATCH 01/17] perf util: Save pid-cmdline mapping into tracing header Namhyung Kim
2013-07-30 13:28 ` Arnaldo Carvalho de Melo
2013-07-31 0:51 ` Namhyung Kim
2013-07-31 14:07 ` Arnaldo Carvalho de Melo
2013-08-05 7:17 ` Namhyung Kim
2013-08-07 13:44 ` David Ahern
2013-08-09 5:51 ` Namhyung Kim
2013-07-30 9:18 ` [PATCH 02/17] perf util: Add more debug message on failure path Namhyung Kim
2013-07-30 13:33 ` Arnaldo Carvalho de Melo
2013-07-30 9:19 ` [PATCH 03/17] perf tools: Introduce new 'ftrace' tool Namhyung Kim
2013-07-30 9:19 ` [PATCH 04/17] perf ftrace: Add support for --pid option Namhyung Kim
2013-07-30 9:19 ` [PATCH 05/17] perf ftrace: Add support for -a and -C option Namhyung Kim
2013-07-30 9:19 ` [PATCH 06/17] perf ftrace: Split "live" sub-command Namhyung Kim
2013-07-30 9:19 ` [PATCH 07/17] perf ftrace: Add 'record' sub-command Namhyung Kim
2013-07-30 9:19 ` [PATCH 08/17] perf ftrace: Add 'show' sub-command Namhyung Kim
2013-07-30 9:19 ` [PATCH 09/17] perf ftrace: Add 'report' sub-command Namhyung Kim
2013-07-30 9:19 ` [PATCH 10/17] perf ftrace: Add dump_printf() for low-level debugging Namhyung Kim
2013-07-30 9:19 ` [PATCH 11/17] perf ftrace: Use pager for displaying result Namhyung Kim
2013-07-30 9:19 ` [PATCH 12/17] perf ftrace: Cleanup using ftrace_setup/teardown() Namhyung Kim
2013-07-30 9:19 ` [PATCH 13/17] perf tools: Add document for perf-ftrace command Namhyung Kim
2013-07-30 9:19 ` [PATCH 14/17] perf ftrace: Add a signal handler for SIGSEGV Namhyung Kim
2013-07-30 9:19 ` [PATCH 15/17] perf ftrace: Add --clock option Namhyung Kim
2013-07-30 9:19 ` [PATCH 16/17] perf ftrace: Show leaf-functions as oneliner Namhyung Kim
2013-07-30 9:19 ` [PATCH 17/17] perf ftrace: Tidy up the function graph output of 'show' subcommand Namhyung Kim
2013-08-01 12:02 ` [PATCHSET 00/17] perf tools: Introduce new 'ftrace' command (v4) Jiri Olsa
2013-08-02 9:16 ` Ingo Molnar
2013-08-05 7:44 ` Namhyung Kim
[not found] ` <51FB2B90.6090602@gmail.com>
2013-08-02 13:33 ` [PATCH] perf tools: Renaming 'time' variable in perf_time_to_tsc due to name shadowing error Jiri Olsa
2013-08-03 19:23 ` Adrian Hunter
2013-08-05 7:47 ` Jiri Olsa
2013-08-09 10:23 ` [PATCHSET 00/17] perf tools: Introduce new 'ftrace' command (v4) Jiri Olsa
2013-08-13 2:20 ` Namhyung Kim
2013-08-28 14:57 ` Jeremy Eder [this message]
2013-08-29 2:56 ` Namhyung Kim
2013-08-09 10:25 ` Jiri Olsa
2013-08-09 10:30 ` Jiri Olsa
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=20130828145708.GA20153@jeder.rdu.redhat.com \
--to=jeder@redhat.com \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@ghostprotocols.net \
--cc=dsahern@gmail.com \
--cc=eranian@google.com \
--cc=fweisbec@gmail.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung.kim@lge.com \
--cc=namhyung@kernel.org \
--cc=paulus@samba.org \
--cc=rostedt@goodmis.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.