mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: tip-bot for Jiri Olsa <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: tglx@linutronix.de, wangnan0@huawei.com, namhyung@kernel.org,
	paulus@samba.org, linux-kernel@vger.kernel.org, hpa@zytor.com,
	jgalar@efficios.com, acme@redhat.com, fweisbec@gmail.com,
	a.p.zijlstra@chello.nl, mingo@kernel.org, hekuang@huawei.com,
	bigeasy@linutronix.de, jolsa@kernel.org, tzanussi@gmail.com,
	dsahern@gmail.com
Subject: [tip:perf/core] perf data: Enable stream flush within processing
Date: Tue, 5 May 2015 19:57:18 -0700	[thread overview]
Message-ID: <tip-89e5fa884df8cd72e81c3727cf1f0d1c7a9c7641@git.kernel.org> (raw)
In-Reply-To: <1429372220-6406-4-git-send-email-jolsa@kernel.org>

Commit-ID:  89e5fa884df8cd72e81c3727cf1f0d1c7a9c7641
Gitweb:     http://git.kernel.org/tip/89e5fa884df8cd72e81c3727cf1f0d1c7a9c7641
Author:     Jiri Olsa <jolsa@kernel.org>
AuthorDate: Sat, 18 Apr 2015 17:50:16 +0200
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Wed, 29 Apr 2015 10:37:48 -0300

perf data: Enable stream flush within processing

For big data files the size of data allocated for stream instance could
get really high. It's needed to flush the data out of the stream once in
a while.

Unfortunately there's no size indication in the stream object, so we
govern the flush based on the number of stored events. Current flush
limit is set ot 100000 events.

Reviewed-by: David Ahern <dsahern@gmail.com>
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: He Kuang <hekuang@huawei.com>
Cc: Jeremie Galarneau <jgalar@efficios.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: Tom Zanussi <tzanussi@gmail.com>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1429372220-6406-4-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/data-convert-bt.c | 26 ++++++++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

diff --git a/tools/perf/util/data-convert-bt.c b/tools/perf/util/data-convert-bt.c
index 0a2d7a5..4f942b3 100644
--- a/tools/perf/util/data-convert-bt.c
+++ b/tools/perf/util/data-convert-bt.c
@@ -43,6 +43,7 @@ struct evsel_priv {
 struct ctf_stream {
 	struct bt_ctf_stream *stream;
 	int cpu;
+	u32 count;
 };
 
 struct ctf_writer {
@@ -392,7 +393,10 @@ static int ctf_stream__flush(struct ctf_stream *cs)
 		if (err)
 			pr_err("CTF stream %d flush failed\n", cs->cpu);
 
-		pr("Flush stream for cpu %d\n", cs->cpu);
+		pr("Flush stream for cpu %d (%u samples)\n",
+		   cs->cpu, cs->count);
+
+		cs->count = 0;
 	}
 
 	return err;
@@ -490,6 +494,19 @@ static int get_sample_cpu(struct ctf_writer *cw, struct perf_sample *sample,
 	return cpu;
 }
 
+#define STREAM_FLUSH_COUNT 100000
+
+/*
+ * Currently we have no other way to determine the
+ * time for the stream flush other than keep track
+ * of the number of events and check it against
+ * threshold.
+ */
+static bool is_flush_needed(struct ctf_stream *cs)
+{
+	return cs->count >= STREAM_FLUSH_COUNT;
+}
+
 static int process_sample_event(struct perf_tool *tool,
 				union perf_event *_event __maybe_unused,
 				struct perf_sample *sample,
@@ -535,8 +552,13 @@ static int process_sample_event(struct perf_tool *tool,
 	}
 
 	cs = ctf_stream(cw, get_sample_cpu(cw, sample, evsel));
-	if (cs)
+	if (cs) {
+		if (is_flush_needed(cs))
+			ctf_stream__flush(cs);
+
+		cs->count++;
 		bt_ctf_stream_append_event(cs->stream, event);
+	}
 
 	bt_ctf_event_put(event);
 	return cs ? 0 : -1;

  reply	other threads:[~2015-05-06  2:57 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-18 15:50 [PATCHv6 0/7] perf tools: Add perf data CTF conversion Jiri Olsa
2015-04-18 15:50 ` [PATCH 1/7] perf data: Show error message when conversion failed Jiri Olsa
2015-05-06  2:55   ` [tip:perf/core] " tip-bot for He Kuang
2015-04-18 15:50 ` [PATCH 2/7] perf data: Switch to multiple cpu stream files Jiri Olsa
2015-04-20 19:58   ` Arnaldo Carvalho de Melo
2015-04-20 20:01     ` Arnaldo Carvalho de Melo
2015-04-20 20:19     ` Jiri Olsa
2015-04-20 20:41       ` Arnaldo Carvalho de Melo
2015-04-20 20:49         ` Arnaldo Carvalho de Melo
2015-05-06  2:57   ` [tip:perf/core] " tip-bot for Sebastian Andrzej Siewior
2015-04-18 15:50 ` [PATCH 3/7] perf data: Enable stream flush within processing Jiri Olsa
2015-05-06  2:57   ` tip-bot for Jiri Olsa [this message]
2015-04-18 15:50 ` [PATCH 4/7] perf data: Add support for setting ordered_events queue size Jiri Olsa
2015-05-06  2:57   ` [tip:perf/core] " tip-bot for Jiri Olsa
2015-04-18 15:50 ` [PATCH 5/7] tools lib traceevent: Add alias field to struct format_field Jiri Olsa
2015-04-20 14:24   ` Steven Rostedt
2015-05-06  2:55   ` [tip:perf/core] " tip-bot for Jiri Olsa
2015-04-18 15:50 ` [PATCH 6/7] perf data: Fix duplicate field names and avoid reserved keywords Jiri Olsa
2015-04-18 18:56   ` Jérémie Galarneau
2015-04-18 20:45     ` Jiri Olsa
2015-04-20 14:02       ` Arnaldo Carvalho de Melo
2015-05-06  2:57   ` [tip:perf/core] " tip-bot for Wang Nan
2015-04-18 15:50 ` [PATCH 7/7] perf data: Fix signess of value Jiri Olsa
2015-04-20 21:23   ` Arnaldo Carvalho de Melo
2015-04-20 21:52     ` Jiri Olsa
2015-04-21  2:41     ` Wang Nan
2015-04-21 14:25       ` Arnaldo Carvalho de Melo
2015-05-06  2:58   ` [tip:perf/core] perf data: Fix signedness " tip-bot for Wang Nan
2015-04-20 20:05 ` [PATCHv6 0/7] perf tools: Add perf data CTF conversion Arnaldo Carvalho de Melo

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=tip-89e5fa884df8cd72e81c3727cf1f0d1c7a9c7641@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@redhat.com \
    --cc=bigeasy@linutronix.de \
    --cc=dsahern@gmail.com \
    --cc=fweisbec@gmail.com \
    --cc=hekuang@huawei.com \
    --cc=hpa@zytor.com \
    --cc=jgalar@efficios.com \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=paulus@samba.org \
    --cc=tglx@linutronix.de \
    --cc=tzanussi@gmail.com \
    --cc=wangnan0@huawei.com \
    /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

Powered by JetHome