All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] perf: Reset hwc->last_period on sw clock events
@ 2013-03-18  2:41 Namhyung Kim
  2013-03-18  2:41 ` [PATCH 2/2] perf tests: Add a test case for checking sw clock event frequency Namhyung Kim
  2013-03-18 11:06 ` [tip:perf/urgent] perf: Reset hwc->last_period on sw clock events tip-bot for Namhyung Kim
  0 siblings, 2 replies; 6+ messages in thread
From: Namhyung Kim @ 2013-03-18  2:41 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar
  Cc: Arnaldo Carvalho de Melo, Jiri Olsa, LKML, Namhyung Kim

From: Namhyung Kim <namhyung.kim@lge.com>

When cpu/task clock events are initialized, their sampling frequencies
are converted to have a fixed value.  However it missed to update the
hwc->last_period which was set to 1 for initial sampling frequency
calibration.

Because this hwc->last_period value is used as a period in perf_swevent_
hrtime(), every recorded sample will have an incorrected period of 1.

  $ perf record -e task-clock noploop 1
  [ perf record: Woken up 1 times to write data ]
  [ perf record: Captured and wrote 0.158 MB perf.data (~6919 samples) ]

  $ perf report -n --show-total-period  --stdio
  # Samples: 4K of event 'task-clock'
  # Event count (approx.): 4000
  #
  # Overhead       Samples        Period  Command  Shared Object              Symbol
  # ........  ............  ............  .......  .............  ..................
  #
      99.95%          3998          3998  noploop  noploop        [.] main
       0.03%             1             1  noploop  libc-2.15.so   [.] init_cacheinfo
       0.03%             1             1  noploop  ld-2.15.so     [.] open_verify

Note that it doesn't affect the non-sampling event so that the perf
stat still gets correct value with or without this patch.

  $ perf stat -e task-clock noploop 1

   Performance counter stats for 'noploop 1':

         1000.272525 task-clock                #    1.000 CPUs utilized

         1.000560605 seconds time elapsed

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
 kernel/events/core.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/kernel/events/core.c b/kernel/events/core.c
index c38feef0d683..ac418e88b8a9 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -5659,6 +5659,7 @@ static void perf_swevent_init_hrtimer(struct perf_event *event)
 		event->attr.sample_period = NSEC_PER_SEC / freq;
 		hwc->sample_period = event->attr.sample_period;
 		local64_set(&hwc->period_left, hwc->sample_period);
+		hwc->last_period = hwc->sample_period;
 		event->attr.freq = 0;
 	}
 }
-- 
1.7.11.7


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2013-03-21 11:52 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-18  2:41 [PATCH 1/2] perf: Reset hwc->last_period on sw clock events Namhyung Kim
2013-03-18  2:41 ` [PATCH 2/2] perf tests: Add a test case for checking sw clock event frequency Namhyung Kim
2013-03-18 14:42   ` Arnaldo Carvalho de Melo
2013-03-19  5:10     ` Namhyung Kim
2013-03-21 11:51   ` [tip:perf/core] " tip-bot for Namhyung Kim
2013-03-18 11:06 ` [tip:perf/urgent] perf: Reset hwc->last_period on sw clock events tip-bot for Namhyung Kim

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.