[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <tip-7e4ff9e3e8f88de8a8536f43294cd32b4e7d9123@git.kernel.org>
Date: Mon, 12 Oct 2009 07:12:45 GMT
From: tip-bot for Mike Galbraith <efault@....de>
To: linux-tip-commits@...r.kernel.org
Cc: linux-kernel@...r.kernel.org, arjan@...radead.org, hpa@...or.com,
mingo@...hat.com, a.p.zijlstra@...llo.nl, efault@....de,
tglx@...utronix.de, mingo@...e.hu
Subject: [tip:perf/core] perf tools: Fix counter sample frequency breakage
Commit-ID: 7e4ff9e3e8f88de8a8536f43294cd32b4e7d9123
Gitweb: http://git.kernel.org/tip/7e4ff9e3e8f88de8a8536f43294cd32b4e7d9123
Author: Mike Galbraith <efault@....de>
AuthorDate: Mon, 12 Oct 2009 07:56:03 +0200
Committer: Ingo Molnar <mingo@...e.hu>
CommitDate: Mon, 12 Oct 2009 09:10:55 +0200
perf tools: Fix counter sample frequency breakage
Commit 42e59d7d19dc4b4 switched to a default sample frequency of
1KHz, which overrides any user supplied count, causing sched, top
and timechart to miss events due to their discrete events
being flagged PERF_SAMPLE_PERIOD.
Override default sample frequency when the user profides a
period count, and make both record and top honor that user
supplied option.
Signed-off-by: Mike Galbraith <efault@....de>
Cc: Peter Zijlstra <a.p.zijlstra@...llo.nl>
Cc: Arjan van de Ven <arjan@...radead.org>
LKML-Reference: <1255326963.15107.2.camel@...ge.simson.net>
Signed-off-by: Ingo Molnar <mingo@...e.hu>
---
tools/perf/builtin-record.c | 14 +++++++++++++-
tools/perf/builtin-top.c | 28 +++++++++++++++++++++-------
2 files changed, 34 insertions(+), 8 deletions(-)
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 59af03d..4e3a374 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -26,7 +26,7 @@
static int fd[MAX_NR_CPUS][MAX_COUNTERS];
-static long default_interval = 100000;
+static long default_interval = 0;
static int nr_cpus = 0;
static unsigned int page_size;
@@ -730,6 +730,18 @@ int cmd_record(int argc, const char **argv, const char *prefix __used)
attrs[0].config = PERF_COUNT_HW_CPU_CYCLES;
}
+ /*
+ * User specified count overrides default frequency.
+ */
+ if (default_interval)
+ freq = 0;
+ else if (freq) {
+ default_interval = freq;
+ } else {
+ fprintf(stderr, "frequency and count are zero, aborting\n");
+ exit(EXIT_FAILURE);
+ }
+
for (counter = 0; counter < nr_counters; counter++) {
if (attrs[counter].sample_period)
continue;
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index d978dc9..c0f69e8 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -57,7 +57,7 @@ static int fd[MAX_NR_CPUS][MAX_COUNTERS];
static int system_wide = 0;
-static int default_interval = 100000;
+static int default_interval = 0;
static int count_filter = 5;
static int print_entries = 15;
@@ -975,7 +975,13 @@ static void start_counter(int i, int counter)
attr = attrs + counter;
attr->sample_type = PERF_SAMPLE_IP | PERF_SAMPLE_TID;
- attr->freq = freq;
+
+ if (freq) {
+ attr->sample_type |= PERF_SAMPLE_PERIOD;
+ attr->freq = 1;
+ attr->sample_freq = freq;
+ }
+
attr->inherit = (cpu < 0) && inherit;
try_again:
@@ -1130,11 +1136,6 @@ int cmd_top(int argc, const char **argv, const char *prefix __used)
if (argc)
usage_with_options(top_usage, options);
- if (freq) {
- default_interval = freq;
- freq = 1;
- }
-
/* CPU and PID are mutually exclusive */
if (target_pid != -1 && profile_cpu != -1) {
printf("WARNING: PID switch overriding CPU\n");
@@ -1151,6 +1152,19 @@ int cmd_top(int argc, const char **argv, const char *prefix __used)
parse_symbols();
parse_source(sym_filter_entry);
+
+ /*
+ * User specified count overrides default frequency.
+ */
+ if (default_interval)
+ freq = 0;
+ else if (freq) {
+ default_interval = freq;
+ } else {
+ fprintf(stderr, "frequency and count are zero, aborting\n");
+ exit(EXIT_FAILURE);
+ }
+
/*
* Fill in the ones not specifically initialized via -c:
*/
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists