Skip to contentSkip to conversation

perf lock: fix sorting by wait_min

PATCH In review Marcin Slusarz 3 participants 5 messages Feb 22, 2011 – Mar 17, 2011 perf events

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 perf lock: fix sorting by wait_min

if lock was uncontended, wait_time_min == ULLONG_MAX, so we need to handle this case differently to show high wait times first

---
 tools/perf/builtin-lock.c |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)
tools/perf/builtin-lock.c +12 -1
index 0305a40..812ad26 100644
@@ -202,9 +202,20 @@ static struct thread_stat *thread_stat_findnew_first(u32 tid)
 SINGLE_KEY(nr_acquired)
 SINGLE_KEY(nr_contended)
 SINGLE_KEY(wait_time_total)
-SINGLE_KEY(wait_time_min)
 SINGLE_KEY(wait_time_max)
 
+static int lock_stat_key_wait_time_min(struct lock_stat *one,
+					struct lock_stat *two)
+{
+	u64 s1 = one->wait_time_min;
+	u64 s2 = two->wait_time_min;
+	if (s1 == ULLONG_MAX)
+		s1 = 0;
+	if (s2 == ULLONG_MAX)
+		s2 = 0;
+	return s1 > s2;
+}
+
 struct lock_key {
 	/*
 	 * name: the value for specify by user
Signature · 1 line
1.7.4.rc3
#1 lore raw
Quoted 25 lines · Marcin Slusarz

if lock was uncontended, wait_time_min == ULLONG_MAX, so we need to handle this case differently to show high wait times first

---
 tools/perf/builtin-lock.c |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)
tools/perf/builtin-lock.c +5 -1
index 0305a40..812ad26 100644
@@ -202,9 +202,20 @@ static struct thread_stat *thread_stat_findnew_first(u32 tid)
 SINGLE_KEY(nr_acquired)
 SINGLE_KEY(nr_contended)
 SINGLE_KEY(wait_time_total)
-SINGLE_KEY(wait_time_min)
 SINGLE_KEY(wait_time_max)
 
+static int lock_stat_key_wait_time_min(struct lock_stat *one,
+					struct lock_stat *two)
+{
+	u64 s1 = one->wait_time_min;
+	u64 s2 = two->wait_time_min;

tools/perf/builtin-lock.c static struct thread_stat *thread_stat_findnew_first(u32 tid) · line 221

Quoted 10 lines
tools/perf/builtin-lock.c +7 -0
+	if (s1 == ULLONG_MAX)
+		s1 = 0;
+	if (s2 == ULLONG_MAX)
+		s2 = 0;
+	return s1 > s2;
+}
+
 struct lock_key {
 	/*
 	 * name: the value for specify by user

Anything wrong with this patch?
I can't find it in linux-next.

Marcin

#2 lore raw

Em Mon, Mar 14, 2011 at 05:54:58PM +0100, Marcin Slusarz escreveu:

Quoted 31 lines · Marcin Slusarz
Quoted 30 lines

if lock was uncontended, wait_time_min == ULLONG_MAX, so we need to handle this case differently to show high wait times first

---
 tools/perf/builtin-lock.c |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)
tools/perf/builtin-lock.c +11 -1
index 0305a40..812ad26 100644
@@ -202,9 +202,20 @@ static struct thread_stat *thread_stat_findnew_first(u32 tid)
 SINGLE_KEY(nr_acquired)
 SINGLE_KEY(nr_contended)
 SINGLE_KEY(wait_time_total)
-SINGLE_KEY(wait_time_min)
 SINGLE_KEY(wait_time_max)
 
+static int lock_stat_key_wait_time_min(struct lock_stat *one,
+					struct lock_stat *two)
+{
+	u64 s1 = one->wait_time_min;
+	u64 s2 = two->wait_time_min;
+	if (s1 == ULLONG_MAX)
+		s1 = 0;
+	if (s2 == ULLONG_MAX)
+		s2 = 0;
+	return s1 > s2;
+}
Quoted 8 lines

tools/perf/builtin-lock.c static struct thread_stat *thread_stat_findnew_first(u32 tid) · line 221

Quoted 5 lines
tools/perf/builtin-lock.c +1 -0
+
 struct lock_key {
 	/*
 	 * name: the value for specify by user

Anything wrong with this patch?
I can't find it in linux-next.

Hitoshi-san, can I have your acked-by for this one?

Thanks,

- Arnaldo

#3 lore raw
Quoted 41 lines · Arnaldo Carvalho de Melo

Em Mon, Mar 14, 2011 at 05:54:58PM +0100, Marcin Slusarz escreveu:

Quoted 31 lines · Marcin Slusarz
Quoted 30 lines

if lock was uncontended, wait_time_min == ULLONG_MAX, so we need to handle this case differently to show high wait times first

---
  tools/perf/builtin-lock.c |   13 ++++++++++++-
  1 files changed, 12 insertions(+), 1 deletions(-)
tools/perf/builtin-lock.c +11 -1
index 0305a40..812ad26 100644
@@ -202,9 +202,20 @@ static struct thread_stat *thread_stat_findnew_first(u32 tid)
  SINGLE_KEY(nr_acquired)
  SINGLE_KEY(nr_contended)
  SINGLE_KEY(wait_time_total)
-SINGLE_KEY(wait_time_min)
  SINGLE_KEY(wait_time_max)
 
+static int lock_stat_key_wait_time_min(struct lock_stat *one,
+					struct lock_stat *two)
+{
+	u64 s1 = one->wait_time_min;
+	u64 s2 = two->wait_time_min;
+	if (s1 == ULLONG_MAX)
+		s1 = 0;
+	if (s2 == ULLONG_MAX)
+		s2 = 0;
+	return s1>  s2;
+}
Quoted 8 lines

tools/perf/builtin-lock.c static struct thread_stat *thread_stat_findnew_first(u32 tid)

Quoted 5 lines
tools/perf/builtin-lock.c +1 -1
+
  struct lock_key {
  	/*
  	 * name: the value for specify by user
--

Anything wrong with this patch?
I can't find it in linux-next.

Quoted 6 lines

Hitoshi-san, can I have your acked-by for this one?

Thanks,

- Arnaldo

Hi Arnaldo and Marcin,

Sure, ignoring the case of wait_time_min == ULLONG_MAX is my mistake. Thanks a lot!

#4 lore raw

[tip:perf/urgent] perf lock: Fix sorting by wait_min

In reply to Marcin Slusarz
Commit-ID:  9df03abeda3d928ecdedc0f427336931eac0a477
Gitweb:     http://git.kernel.org/tip/9df03abeda3d928ecdedc0f427336931eac0a477
Author:     Marcin Slusarz <[email protected]>
AuthorDate: Tue, 22 Feb 2011 18:47:15 +0100
Committer:  Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Wed, 16 Mar 2011 09:05:58 -0300

perf lock: Fix sorting by wait_min

If lock was uncontended, wait_time_min == ULLONG_MAX, so we need to handle this case differently to show high wait times first

Cc Hitoshi Mitake <[email protected]>
Cc Ingo Molnar <[email protected]>
Cc Paul Mackerras <[email protected]>
Cc Peter Zijlstra <[email protected]>

LKML-Reference: <[email protected]>

---
 tools/perf/builtin-lock.c |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)
tools/perf/builtin-lock.c +12 -1
index 2e93f99..7a2a79d 100644
@@ -202,9 +202,20 @@ static struct thread_stat *thread_stat_findnew_first(u32 tid)
 SINGLE_KEY(nr_acquired)
 SINGLE_KEY(nr_contended)
 SINGLE_KEY(wait_time_total)
-SINGLE_KEY(wait_time_min)
 SINGLE_KEY(wait_time_max)
 
+static int lock_stat_key_wait_time_min(struct lock_stat *one,
+					struct lock_stat *two)
+{
+	u64 s1 = one->wait_time_min;
+	u64 s2 = two->wait_time_min;
+	if (s1 == ULLONG_MAX)
+		s1 = 0;
+	if (s2 == ULLONG_MAX)
+		s2 = 0;
+	return s1 > s2;
+}
+
 struct lock_key {
 	/*
 	 * name: the value for specify by user