linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [GIT PULL 0/4] perf/urgent fixes for 'perf sched timehist' and samples/bpf/ testing
@ 2016-12-23  2:12 Arnaldo Carvalho de Melo
  2016-12-23  2:12 ` [PATCH 1/4] perf sched timehist: Honour 'comm_width' when aligning the headers Arnaldo Carvalho de Melo
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-12-23  2:12 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Alexei Starovoitov,
	Daniel Borkmann, David Ahern, Jiri Olsa, Joe Stringer,
	Namhyung Kim, Peter Zijlstra, Wang Nan, Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling,

- Arnaldo

P.S.: Some of the container test builds now include building samples/bpf/ with:

  $ make O=/tmp/build/linux allmodconfig
  $ make O=/tmp/build/linux headers_install
  $ make O=/tmp/build/linux samples/bpf/

In distributions having at least clang/llvm 3.8+ with the 'bpf' target.

Examples include debian:experimental, fedora:rawhide and opensuse:tumbleweed,
more to come as I go over rebuilding the containers looking for more suitable
environments.

This will help in finding regressions in this area, now using tools/lib/bpf/.

Test results at the end of this message, as usual.

The following changes since commit 1134c2b5cb840409ffd966d8c2a9468f64e6a494:

  perf/x86: Fix overlap counter scheduling bug (2016-12-22 17:45:43 +0100)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-urgent-for-mingo-20161222

for you to fetch changes up to bdd75729e5d279d734e8d3fb41ef4818ac1598ab:

  perf sched timehist: Fix invalid period calculation (2016-12-22 16:35:46 -0300)

----------------------------------------------------------------
perf/urgent fixes:

Fixes for 'perf sched timehist': (Namhyung Kim)

- Define a larger initial alignment value for the COMM column and
  make it be more consistently honoured, for instance in the header.

- Fix invalid period calculation when using the --time option to
  select a time slice, when events outside that slice were being
  considered for the per cpu idle stats summary.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Namhyung Kim (4):
      perf sched timehist: Honour 'comm_width' when aligning the headers
      perf sched timehist: Enlarge default 'comm_width'
      perf sched timehist: Remove hardcoded 'comm_width' check at print_summary
      perf sched timehist: Fix invalid period calculation

 tools/perf/builtin-sched.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

  # uname -a
  Linux jouet 4.9.0+ #2 SMP Wed Dec 21 11:54:44 BRT 2016 x86_64 x86_64 x86_64 GNU/Linux
  # perf test
   1: vmlinux symtab matches kallsyms            : Ok
   2: Detect openat syscall event                : Ok
   3: Detect openat syscall event on all cpus    : Ok
   4: Read samples using the mmap interface      : Ok
   5: Parse event definition strings             : Ok
   6: PERF_RECORD_* events & perf_sample fields  : Ok
   7: Parse perf pmu format                      : Ok
   8: DSO data read                              : Ok
   9: DSO data cache                             : Ok
  10: DSO data reopen                            : Ok
  11: Roundtrip evsel->name                      : Ok
  12: Parse sched tracepoints fields             : Ok
  13: syscalls:sys_enter_openat event fields     : Ok
  14: Setup struct perf_event_attr               : Ok
  15: Match and link multiple hists              : Ok
  16: 'import perf' in python                    : Ok
  17: Breakpoint overflow signal handler         : Ok
  18: Breakpoint overflow sampling               : Ok
  19: Number of exit events of a simple workload : Ok
  20: Software clock events period values        : Ok
  21: Object code reading                        : Ok
  22: Sample parsing                             : Ok
  23: Use a dummy software event to keep tracking: Ok
  24: Parse with no sample_id_all bit set        : Ok
  25: Filter hist entries                        : Ok
  26: Lookup mmap thread                         : Ok
  27: Share thread mg                            : Ok
  28: Sort output of hist entries                : Ok
  29: Cumulate child hist entries                : Ok
  30: Track with sched_switch                    : Ok
  31: Filter fds with revents mask in a fdarray  : Ok
  32: Add fd to a fdarray, making it autogrow    : Ok
  33: kmod_path__parse                           : Ok
  34: Thread map                                 : Ok
  35: LLVM search and compile                    :
  35.1: Basic BPF llvm compile                    : Ok
  35.2: kbuild searching                          : Ok
  35.3: Compile source for BPF prologue generation: Ok
  35.4: Compile source for BPF relocation         : Ok
  36: Session topology                           : Ok
  37: BPF filter                                 :
  37.1: Basic BPF filtering                      : Ok
  37.2: BPF prologue generation                  : Ok
  37.3: BPF relocation checker                   : Ok
  38: Synthesize thread map                      : Ok
  39: Remove thread map                          : Ok
  40: Synthesize cpu map                         : Ok
  41: Synthesize stat config                     : Ok
  42: Synthesize stat                            : Ok
  43: Synthesize stat round                      : Ok
  44: Synthesize attr update                     : Ok
  45: Event times                                : Ok
  46: Read backward ring buffer                  : Ok
  47: Print cpu map                              : Ok
  48: Probe SDT events                           : Ok
  49: is_printable_array                         : Ok
  50: Print bitmap                               : Ok
  51: perf hooks                                 : Ok
  52: builtin clang support                      : Skip (not compiled in)
  53: x86 rdpmc                                  : Ok
  54: Convert perf time to TSC                   : Ok
  55: DWARF unwind                               : Ok
  56: x86 instruction decoder - new instructions : Ok
  57: Intel cqm nmi context read                 : Skip
  # 
  # dm
   1 alpine:3.4: Ok
   2 android-ndk:r12b-arm: Ok
   3 archlinux:latest: Ok
   4 centos:5: Ok
   5 centos:6: Ok
   6 centos:7: Ok
   7 debian:7: Ok
   8 debian:8: Ok
   9 debian:experimental: Ok
  10 debian:experimental-x-mips64: Ok
  11 fedora:20: Ok
  12 fedora:21: Ok
  13 fedora:22: Ok
  14 fedora:23: Ok
  15 fedora:24: Ok
  16 fedora:24-x-ARC-uClibc: Ok
  17 fedora:25: Ok
  18 fedora:rawhide: Ok
  19 mageia:5: Ok
  20 opensuse:13.2: Ok
  21 opensuse:42.1: Ok
  22 opensuse:tumbleweed: Ok
  23 ubuntu:12.04.5: Ok
  24 ubuntu:14.04.4-x-linaro-arm64: Ok
  25 ubuntu:15.10: Ok
  26 ubuntu:16.04: Ok
  27 ubuntu:16.04-x-arm: Ok
  28 ubuntu:16.04-x-arm64: Ok
  29 ubuntu:16.04-x-powerpc: Ok
  30 ubuntu:16.04-x-powerpc64: Ok
  31 ubuntu:16.04-x-powerpc64el: Ok
  32 ubuntu:16.04-x-s390: Ok
  33 ubuntu:16.10: Ok
  #
  $ make -C tools/perf build-test
  make: Entering directory '/home/acme/git/linux/tools/perf'
  - tarpkg: ./tests/perf-targz-src-pkg .
                 make_perf_o_O: make perf.o
           make_no_libbionic_O: make NO_LIBBIONIC=1
              make_no_libelf_O: make NO_LIBELF=1
            make_install_bin_O: make install-bin
              make_clean_all_O: make clean all
                   make_pure_O: make
             make_no_libnuma_O: make NO_LIBNUMA=1
           make_no_libunwind_O: make NO_LIBUNWIND=1
         make_install_prefix_O: make install prefix=/tmp/krava
                   make_help_O: make help
        make_with_babeltrace_O: make LIBBABELTRACE=1
                 make_static_O: make LDFLAGS=-static
                  make_debug_O: make DEBUG=1
                   make_tags_O: make tags
                make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1
           make_no_backtrace_O: make NO_BACKTRACE=1
                    make_doc_O: make doc
            make_no_libaudit_O: make NO_LIBAUDIT=1
       make_util_pmu_bison_o_O: make util/pmu-bison.o
             make_no_libperl_O: make NO_LIBPERL=1
             make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
  make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
             make_util_map_o_O: make util/map.o
               make_no_slang_O: make NO_SLANG=1
              make_no_libbpf_O: make NO_LIBBPF=1
                make_no_newt_O: make NO_NEWT=1
            make_no_demangle_O: make NO_DEMANGLE=1
           make_no_libpython_O: make NO_LIBPYTHON=1
   make_install_prefix_slash_O: make install prefix=/tmp/krava/
                make_install_O: make install
            make_no_auxtrace_O: make NO_AUXTRACE=1
                  make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
                make_no_gtk2_O: make NO_GTK2=1
         make_with_clangllvm_O: make LIBCLANGLLVM=1
  OK
  make: Leaving directory '/home/acme/git/linux/tools/perf'
  $

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

* [PATCH 1/4] perf sched timehist: Honour 'comm_width' when aligning the headers
  2016-12-23  2:12 [GIT PULL 0/4] perf/urgent fixes for 'perf sched timehist' and samples/bpf/ testing Arnaldo Carvalho de Melo
@ 2016-12-23  2:12 ` Arnaldo Carvalho de Melo
  2016-12-23  2:12 ` [PATCH 2/4] perf sched timehist: Enlarge default 'comm_width' Arnaldo Carvalho de Melo
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-12-23  2:12 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Namhyung Kim, David Ahern, Jiri Olsa,
	Peter Zijlstra, Arnaldo Carvalho de Melo

From: Namhyung Kim <namhyung@kernel.org>

Current default value is 20, but that may change in the future, so make
places where we have 20 hardcoded use 'comm_width'.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/20161222060350.17655-1-namhyung@kernel.org
[ Split from a larger patch ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/builtin-sched.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c
index c1c07bfe132c..020f9c9cef7b 100644
--- a/tools/perf/builtin-sched.c
+++ b/tools/perf/builtin-sched.c
@@ -1817,7 +1817,7 @@ static void timehist_header(struct perf_sched *sched)
 		printf(" ");
 	}
 
-	printf(" %-20s  %9s  %9s  %9s",
+	printf(" %-*s  %9s  %9s  %9s", comm_width,
 		"task name", "wait time", "sch delay", "run time");
 
 	printf("\n");
@@ -1830,7 +1830,8 @@ static void timehist_header(struct perf_sched *sched)
 	if (sched->show_cpu_visual)
 		printf(" %*s ", ncpus, "");
 
-	printf(" %-20s  %9s  %9s  %9s\n", "[tid/pid]", "(msec)", "(msec)", "(msec)");
+	printf(" %-*s  %9s  %9s  %9s\n", comm_width,
+	       "[tid/pid]", "(msec)", "(msec)", "(msec)");
 
 	/*
 	 * separator
@@ -1840,7 +1841,7 @@ static void timehist_header(struct perf_sched *sched)
 	if (sched->show_cpu_visual)
 		printf(" %.*s ", ncpus, graph_dotted_line);
 
-	printf(" %.20s  %.9s  %.9s  %.9s",
+	printf(" %.*s  %.9s  %.9s  %.9s", comm_width,
 		graph_dotted_line, graph_dotted_line, graph_dotted_line,
 		graph_dotted_line);
 
-- 
2.9.3

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

* [PATCH 2/4] perf sched timehist: Enlarge default 'comm_width'
  2016-12-23  2:12 [GIT PULL 0/4] perf/urgent fixes for 'perf sched timehist' and samples/bpf/ testing Arnaldo Carvalho de Melo
  2016-12-23  2:12 ` [PATCH 1/4] perf sched timehist: Honour 'comm_width' when aligning the headers Arnaldo Carvalho de Melo
@ 2016-12-23  2:12 ` Arnaldo Carvalho de Melo
  2016-12-23  2:12 ` [PATCH 3/4] perf sched timehist: Remove hardcoded 'comm_width' check at print_summary Arnaldo Carvalho de Melo
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-12-23  2:12 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Namhyung Kim, David Ahern, Jiri Olsa,
	Peter Zijlstra, Arnaldo Carvalho de Melo

From: Namhyung Kim <namhyung@kernel.org>

Current default value is 20 but it's easily changed to a bigger value as
task has a long name and different tid and pid.  And it makes the output
not aligned.  So change it to have a large value as summary shows.

Committer notes:

Before:

  # perf sched record
  ^C
  # perf sched timehist
  <SNIP>
    40602.770537 [0001]  rcuos/2[29]               7.970      0.002      0.020
    40602.771512 [0003]  <idle>                    0.003      0.000      0.986
    40602.771586 [0001]  <idle>                    0.020      0.000      1.049
    40602.771606 [0001]  qemu-system-x86[3593/3510]      0.000      0.002      0.020
    40602.771629 [0003]  qemu-system-x86[3510]           0.000      0.003      0.116
    40602.771776 [0000]  <idle>                          0.001      0.000      1.892
  <SNIP>

After:

  # perf sched timehist
  <SNIP>
   40602.770537 [0001]  rcuos/2[29]                         7.970      0.002      0.020
   40602.771512 [0003]  <idle>                              0.003      0.000      0.986
   40602.771586 [0001]  <idle>                              0.020      0.000      1.049
   40602.771606 [0001]  qemu-system-x86[3593/3510]          0.000      0.002      0.020
   40602.771629 [0003]  qemu-system-x86[3510]               0.000      0.003      0.116
  <SNIP>

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/20161222060350.17655-1-namhyung@kernel.org
[ Split from a larger patch ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/builtin-sched.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c
index 020f9c9cef7b..c65f16cbae62 100644
--- a/tools/perf/builtin-sched.c
+++ b/tools/perf/builtin-sched.c
@@ -1775,7 +1775,7 @@ static u64 perf_evsel__get_time(struct perf_evsel *evsel, u32 cpu)
 	return r->last_time[cpu];
 }
 
-static int comm_width = 20;
+static int comm_width = 30;
 
 static char *timehist_get_commstr(struct thread *thread)
 {
-- 
2.9.3

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

* [PATCH 3/4] perf sched timehist: Remove hardcoded 'comm_width' check at print_summary
  2016-12-23  2:12 [GIT PULL 0/4] perf/urgent fixes for 'perf sched timehist' and samples/bpf/ testing Arnaldo Carvalho de Melo
  2016-12-23  2:12 ` [PATCH 1/4] perf sched timehist: Honour 'comm_width' when aligning the headers Arnaldo Carvalho de Melo
  2016-12-23  2:12 ` [PATCH 2/4] perf sched timehist: Enlarge default 'comm_width' Arnaldo Carvalho de Melo
@ 2016-12-23  2:12 ` Arnaldo Carvalho de Melo
  2016-12-23  2:12 ` [PATCH 4/4] perf sched timehist: Fix invalid period calculation Arnaldo Carvalho de Melo
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-12-23  2:12 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Namhyung Kim, David Ahern, Jiri Olsa,
	Peter Zijlstra, Arnaldo Carvalho de Melo

From: Namhyung Kim <namhyung@kernel.org>

Now that the default 'comm_width' value is 30, no need to check that at
print_summary,

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/20161222060350.17655-1-namhyung@kernel.org
[ Split from a larger patch ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/builtin-sched.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c
index c65f16cbae62..5052caa91caa 100644
--- a/tools/perf/builtin-sched.c
+++ b/tools/perf/builtin-sched.c
@@ -2627,9 +2627,6 @@ static void timehist_print_summary(struct perf_sched *sched,
 
 	memset(&totals, 0, sizeof(totals));
 
-	if (comm_width < 30)
-		comm_width = 30;
-
 	if (sched->idle_hist) {
 		printf("\nIdle-time summary\n");
 		printf("%*s  parent  sched-out  ", comm_width, "comm");
-- 
2.9.3

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

* [PATCH 4/4] perf sched timehist: Fix invalid period calculation
  2016-12-23  2:12 [GIT PULL 0/4] perf/urgent fixes for 'perf sched timehist' and samples/bpf/ testing Arnaldo Carvalho de Melo
                   ` (2 preceding siblings ...)
  2016-12-23  2:12 ` [PATCH 3/4] perf sched timehist: Remove hardcoded 'comm_width' check at print_summary Arnaldo Carvalho de Melo
@ 2016-12-23  2:12 ` Arnaldo Carvalho de Melo
  2016-12-23 14:54 ` [GIT PULL 0/4] perf/urgent fixes for 'perf sched timehist' and samples/bpf/ testing Namhyung Kim
  2016-12-23 19:24 ` Ingo Molnar
  5 siblings, 0 replies; 7+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-12-23  2:12 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Namhyung Kim, David Ahern, Jiri Olsa,
	Peter Zijlstra, Arnaldo Carvalho de Melo

From: Namhyung Kim <namhyung@kernel.org>

When --time option is given with a value outside recorded time, the last
sample time (tprev) was set to that value and run time calculation might
be incorrect.  This is a problem of the first samples for each cpus
since it would skip the runtime update when tprev is 0.  But with --time
option it had non-zero (which is invalid) value so the calculation is
also incorrect.

For example, let's see the followging:

  $ perf sched timehist
             time    cpu  task name                       wait time  sch delay   run time
                          [tid/pid]                          (msec)     (msec)     (msec)
  --------------- ------  ------------------------------  ---------  ---------  ---------
      3195.968367 [0003]  <idle>                              0.000      0.000      0.000
      3195.968386 [0002]  Timer[4306/4277]                    0.000      0.000      0.018
      3195.968397 [0002]  Web Content[4277]                   0.000      0.000      0.000
      3195.968595 [0001]  JS Helper[4302/4277]                0.000      0.000      0.000
      3195.969217 [0000]  <idle>                              0.000      0.000      0.621
      3195.969251 [0001]  kworker/1:1H[291]                   0.000      0.000      0.033

The sample starts at 3195.968367 but when I gave a time interval from
3194 to 3196 (in sec) it will calculate the whole 2 second as runtime.
In below, 2 cpus accounted it as runtime, other 2 cpus accounted it as
idle time.

Before:

  $ perf sched timehist --time 3194,3196 -s | tail
  Idle stats:
      CPU  0 idle for   1995.991  msec
      CPU  1 idle for     20.793  msec
      CPU  2 idle for     30.191  msec
      CPU  3 idle for   1999.852  msec

      Total number of unique tasks: 23
  Total number of context switches: 128
             Total run time (msec): 3724.940

After:

  $ perf sched timehist --time 3194,3196 -s | tail
  Idle stats:
      CPU  0 idle for     10.811  msec
      CPU  1 idle for     20.793  msec
      CPU  2 idle for     30.191  msec
      CPU  3 idle for     18.337  msec

      Total number of unique tasks: 23
  Total number of context switches: 128
             Total run time (msec): 18.139

Committer notes:

Further testing:

Before:

  Idle stats:
      CPU  0 idle for    229.785  msec
      CPU  1 idle for    937.944  msec
      CPU  2 idle for    188.931  msec
      CPU  3 idle for    986.185  msec

  After:

  # perf sched timehist --time 40602,40603 -s | tail

  Idle stats:
      CPU  0 idle for    229.785  msec
      CPU  1 idle for    175.407  msec
      CPU  2 idle for    188.931  msec
      CPU  3 idle for    223.657  msec

      Total number of unique tasks: 68
  Total number of context switches: 814
             Total run time (msec): 97.688

  # for cpu in `seq 0 3` ; do echo -n "CPU $cpu idle for " ; perf sched timehist --time 40602,40603 | grep "\[000${cpu}\].*\<idle\>" | tr -s ' ' | cut -d' ' -f7 | awk '{entries++ ; s+=$1} END {print s " msec (entries: " entries ")"}' ; done
  CPU 0 idle for 229.721 msec (entries: 123)
  CPU 1 idle for 175.381 msec (entries: 65)
  CPU 2 idle for 188.903 msec (entries: 56)
  CPU 3 idle for 223.61 msec (entries: 102)

Difference due to the idle stats being accounted at nanoseconds precision while
the <idle> entries in 'perf sched timehist' are trucated at msec.usec.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Fixes: 853b74071110 ("perf sched timehist: Add option to specify time window of interest")
Link: http://lkml.kernel.org/r/20161222060350.17655-2-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/builtin-sched.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c
index 5052caa91caa..d53e706a6f17 100644
--- a/tools/perf/builtin-sched.c
+++ b/tools/perf/builtin-sched.c
@@ -2405,7 +2405,7 @@ static int timehist_sched_change_event(struct perf_tool *tool,
 	if (ptime->start && ptime->start > t)
 		goto out;
 
-	if (ptime->start > tprev)
+	if (tprev && ptime->start > tprev)
 		tprev = ptime->start;
 
 	/*
-- 
2.9.3

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

* Re: [GIT PULL 0/4] perf/urgent fixes for 'perf sched timehist' and samples/bpf/ testing
  2016-12-23  2:12 [GIT PULL 0/4] perf/urgent fixes for 'perf sched timehist' and samples/bpf/ testing Arnaldo Carvalho de Melo
                   ` (3 preceding siblings ...)
  2016-12-23  2:12 ` [PATCH 4/4] perf sched timehist: Fix invalid period calculation Arnaldo Carvalho de Melo
@ 2016-12-23 14:54 ` Namhyung Kim
  2016-12-23 19:24 ` Ingo Molnar
  5 siblings, 0 replies; 7+ messages in thread
From: Namhyung Kim @ 2016-12-23 14:54 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Ingo Molnar, linux-kernel, Alexei Starovoitov, Daniel Borkmann,
	David Ahern, Jiri Olsa, Joe Stringer, Peter Zijlstra, Wang Nan,
	Arnaldo Carvalho de Melo

Hi Arnaldo,

Thanks for taking care of the patches!
Namhyung


On Fri, Dec 23, 2016 at 11:12 AM, Arnaldo Carvalho de Melo
<acme@kernel.org> wrote:
> Hi Ingo,
>
>         Please consider pulling,
>
> - Arnaldo
>
> P.S.: Some of the container test builds now include building samples/bpf/ with:
>
>   $ make O=/tmp/build/linux allmodconfig
>   $ make O=/tmp/build/linux headers_install
>   $ make O=/tmp/build/linux samples/bpf/
>
> In distributions having at least clang/llvm 3.8+ with the 'bpf' target.
>
> Examples include debian:experimental, fedora:rawhide and opensuse:tumbleweed,
> more to come as I go over rebuilding the containers looking for more suitable
> environments.
>
> This will help in finding regressions in this area, now using tools/lib/bpf/.
>
> Test results at the end of this message, as usual.
>
> The following changes since commit 1134c2b5cb840409ffd966d8c2a9468f64e6a494:
>
>   perf/x86: Fix overlap counter scheduling bug (2016-12-22 17:45:43 +0100)
>
> are available in the git repository at:
>
>   git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-urgent-for-mingo-20161222
>
> for you to fetch changes up to bdd75729e5d279d734e8d3fb41ef4818ac1598ab:
>
>   perf sched timehist: Fix invalid period calculation (2016-12-22 16:35:46 -0300)
>
> ----------------------------------------------------------------
> perf/urgent fixes:
>
> Fixes for 'perf sched timehist': (Namhyung Kim)
>
> - Define a larger initial alignment value for the COMM column and
>   make it be more consistently honoured, for instance in the header.
>
> - Fix invalid period calculation when using the --time option to
>   select a time slice, when events outside that slice were being
>   considered for the per cpu idle stats summary.
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Namhyung Kim (4):
>       perf sched timehist: Honour 'comm_width' when aligning the headers
>       perf sched timehist: Enlarge default 'comm_width'
>       perf sched timehist: Remove hardcoded 'comm_width' check at print_summary
>       perf sched timehist: Fix invalid period calculation
>
>  tools/perf/builtin-sched.c | 14 ++++++--------
>  1 file changed, 6 insertions(+), 8 deletions(-)
>
>   # uname -a
>   Linux jouet 4.9.0+ #2 SMP Wed Dec 21 11:54:44 BRT 2016 x86_64 x86_64 x86_64 GNU/Linux
>   # perf test
>    1: vmlinux symtab matches kallsyms            : Ok
>    2: Detect openat syscall event                : Ok
>    3: Detect openat syscall event on all cpus    : Ok
>    4: Read samples using the mmap interface      : Ok
>    5: Parse event definition strings             : Ok
>    6: PERF_RECORD_* events & perf_sample fields  : Ok
>    7: Parse perf pmu format                      : Ok
>    8: DSO data read                              : Ok
>    9: DSO data cache                             : Ok
>   10: DSO data reopen                            : Ok
>   11: Roundtrip evsel->name                      : Ok
>   12: Parse sched tracepoints fields             : Ok
>   13: syscalls:sys_enter_openat event fields     : Ok
>   14: Setup struct perf_event_attr               : Ok
>   15: Match and link multiple hists              : Ok
>   16: 'import perf' in python                    : Ok
>   17: Breakpoint overflow signal handler         : Ok
>   18: Breakpoint overflow sampling               : Ok
>   19: Number of exit events of a simple workload : Ok
>   20: Software clock events period values        : Ok
>   21: Object code reading                        : Ok
>   22: Sample parsing                             : Ok
>   23: Use a dummy software event to keep tracking: Ok
>   24: Parse with no sample_id_all bit set        : Ok
>   25: Filter hist entries                        : Ok
>   26: Lookup mmap thread                         : Ok
>   27: Share thread mg                            : Ok
>   28: Sort output of hist entries                : Ok
>   29: Cumulate child hist entries                : Ok
>   30: Track with sched_switch                    : Ok
>   31: Filter fds with revents mask in a fdarray  : Ok
>   32: Add fd to a fdarray, making it autogrow    : Ok
>   33: kmod_path__parse                           : Ok
>   34: Thread map                                 : Ok
>   35: LLVM search and compile                    :
>   35.1: Basic BPF llvm compile                    : Ok
>   35.2: kbuild searching                          : Ok
>   35.3: Compile source for BPF prologue generation: Ok
>   35.4: Compile source for BPF relocation         : Ok
>   36: Session topology                           : Ok
>   37: BPF filter                                 :
>   37.1: Basic BPF filtering                      : Ok
>   37.2: BPF prologue generation                  : Ok
>   37.3: BPF relocation checker                   : Ok
>   38: Synthesize thread map                      : Ok
>   39: Remove thread map                          : Ok
>   40: Synthesize cpu map                         : Ok
>   41: Synthesize stat config                     : Ok
>   42: Synthesize stat                            : Ok
>   43: Synthesize stat round                      : Ok
>   44: Synthesize attr update                     : Ok
>   45: Event times                                : Ok
>   46: Read backward ring buffer                  : Ok
>   47: Print cpu map                              : Ok
>   48: Probe SDT events                           : Ok
>   49: is_printable_array                         : Ok
>   50: Print bitmap                               : Ok
>   51: perf hooks                                 : Ok
>   52: builtin clang support                      : Skip (not compiled in)
>   53: x86 rdpmc                                  : Ok
>   54: Convert perf time to TSC                   : Ok
>   55: DWARF unwind                               : Ok
>   56: x86 instruction decoder - new instructions : Ok
>   57: Intel cqm nmi context read                 : Skip
>   #
>   # dm
>    1 alpine:3.4: Ok
>    2 android-ndk:r12b-arm: Ok
>    3 archlinux:latest: Ok
>    4 centos:5: Ok
>    5 centos:6: Ok
>    6 centos:7: Ok
>    7 debian:7: Ok
>    8 debian:8: Ok
>    9 debian:experimental: Ok
>   10 debian:experimental-x-mips64: Ok
>   11 fedora:20: Ok
>   12 fedora:21: Ok
>   13 fedora:22: Ok
>   14 fedora:23: Ok
>   15 fedora:24: Ok
>   16 fedora:24-x-ARC-uClibc: Ok
>   17 fedora:25: Ok
>   18 fedora:rawhide: Ok
>   19 mageia:5: Ok
>   20 opensuse:13.2: Ok
>   21 opensuse:42.1: Ok
>   22 opensuse:tumbleweed: Ok
>   23 ubuntu:12.04.5: Ok
>   24 ubuntu:14.04.4-x-linaro-arm64: Ok
>   25 ubuntu:15.10: Ok
>   26 ubuntu:16.04: Ok
>   27 ubuntu:16.04-x-arm: Ok
>   28 ubuntu:16.04-x-arm64: Ok
>   29 ubuntu:16.04-x-powerpc: Ok
>   30 ubuntu:16.04-x-powerpc64: Ok
>   31 ubuntu:16.04-x-powerpc64el: Ok
>   32 ubuntu:16.04-x-s390: Ok
>   33 ubuntu:16.10: Ok
>   #
>   $ make -C tools/perf build-test
>   make: Entering directory '/home/acme/git/linux/tools/perf'
>   - tarpkg: ./tests/perf-targz-src-pkg .
>                  make_perf_o_O: make perf.o
>            make_no_libbionic_O: make NO_LIBBIONIC=1
>               make_no_libelf_O: make NO_LIBELF=1
>             make_install_bin_O: make install-bin
>               make_clean_all_O: make clean all
>                    make_pure_O: make
>              make_no_libnuma_O: make NO_LIBNUMA=1
>            make_no_libunwind_O: make NO_LIBUNWIND=1
>          make_install_prefix_O: make install prefix=/tmp/krava
>                    make_help_O: make help
>         make_with_babeltrace_O: make LIBBABELTRACE=1
>                  make_static_O: make LDFLAGS=-static
>                   make_debug_O: make DEBUG=1
>                    make_tags_O: make tags
>                 make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1
>            make_no_backtrace_O: make NO_BACKTRACE=1
>                     make_doc_O: make doc
>             make_no_libaudit_O: make NO_LIBAUDIT=1
>        make_util_pmu_bison_o_O: make util/pmu-bison.o
>              make_no_libperl_O: make NO_LIBPERL=1
>              make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
>   make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
>              make_util_map_o_O: make util/map.o
>                make_no_slang_O: make NO_SLANG=1
>               make_no_libbpf_O: make NO_LIBBPF=1
>                 make_no_newt_O: make NO_NEWT=1
>             make_no_demangle_O: make NO_DEMANGLE=1
>            make_no_libpython_O: make NO_LIBPYTHON=1
>    make_install_prefix_slash_O: make install prefix=/tmp/krava/
>                 make_install_O: make install
>             make_no_auxtrace_O: make NO_AUXTRACE=1
>                   make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
>                 make_no_gtk2_O: make NO_GTK2=1
>          make_with_clangllvm_O: make LIBCLANGLLVM=1
>   OK
>   make: Leaving directory '/home/acme/git/linux/tools/perf'
>   $



-- 
Thanks,
Namhyung

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

* Re: [GIT PULL 0/4] perf/urgent fixes for 'perf sched timehist' and samples/bpf/ testing
  2016-12-23  2:12 [GIT PULL 0/4] perf/urgent fixes for 'perf sched timehist' and samples/bpf/ testing Arnaldo Carvalho de Melo
                   ` (4 preceding siblings ...)
  2016-12-23 14:54 ` [GIT PULL 0/4] perf/urgent fixes for 'perf sched timehist' and samples/bpf/ testing Namhyung Kim
@ 2016-12-23 19:24 ` Ingo Molnar
  5 siblings, 0 replies; 7+ messages in thread
From: Ingo Molnar @ 2016-12-23 19:24 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Alexei Starovoitov, Daniel Borkmann, David Ahern,
	Jiri Olsa, Joe Stringer, Namhyung Kim, Peter Zijlstra, Wang Nan,
	Arnaldo Carvalho de Melo


* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:

> Hi Ingo,
> 
> 	Please consider pulling,
> 
> - Arnaldo
> 
> P.S.: Some of the container test builds now include building samples/bpf/ with:
> 
>   $ make O=/tmp/build/linux allmodconfig
>   $ make O=/tmp/build/linux headers_install
>   $ make O=/tmp/build/linux samples/bpf/
> 
> In distributions having at least clang/llvm 3.8+ with the 'bpf' target.
> 
> Examples include debian:experimental, fedora:rawhide and opensuse:tumbleweed,
> more to come as I go over rebuilding the containers looking for more suitable
> environments.
> 
> This will help in finding regressions in this area, now using tools/lib/bpf/.
> 
> Test results at the end of this message, as usual.
> 
> The following changes since commit 1134c2b5cb840409ffd966d8c2a9468f64e6a494:
> 
>   perf/x86: Fix overlap counter scheduling bug (2016-12-22 17:45:43 +0100)
> 
> are available in the git repository at:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-urgent-for-mingo-20161222
> 
> for you to fetch changes up to bdd75729e5d279d734e8d3fb41ef4818ac1598ab:
> 
>   perf sched timehist: Fix invalid period calculation (2016-12-22 16:35:46 -0300)
> 
> ----------------------------------------------------------------
> perf/urgent fixes:
> 
> Fixes for 'perf sched timehist': (Namhyung Kim)
> 
> - Define a larger initial alignment value for the COMM column and
>   make it be more consistently honoured, for instance in the header.
> 
> - Fix invalid period calculation when using the --time option to
>   select a time slice, when events outside that slice were being
>   considered for the per cpu idle stats summary.
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Namhyung Kim (4):
>       perf sched timehist: Honour 'comm_width' when aligning the headers
>       perf sched timehist: Enlarge default 'comm_width'
>       perf sched timehist: Remove hardcoded 'comm_width' check at print_summary
>       perf sched timehist: Fix invalid period calculation
> 
>  tools/perf/builtin-sched.c | 14 ++++++--------
>  1 file changed, 6 insertions(+), 8 deletions(-)

Pulled, thanks a lot Arnaldo!

	Ingo

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

end of thread, other threads:[~2016-12-23 19:24 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-12-23  2:12 [GIT PULL 0/4] perf/urgent fixes for 'perf sched timehist' and samples/bpf/ testing Arnaldo Carvalho de Melo
2016-12-23  2:12 ` [PATCH 1/4] perf sched timehist: Honour 'comm_width' when aligning the headers Arnaldo Carvalho de Melo
2016-12-23  2:12 ` [PATCH 2/4] perf sched timehist: Enlarge default 'comm_width' Arnaldo Carvalho de Melo
2016-12-23  2:12 ` [PATCH 3/4] perf sched timehist: Remove hardcoded 'comm_width' check at print_summary Arnaldo Carvalho de Melo
2016-12-23  2:12 ` [PATCH 4/4] perf sched timehist: Fix invalid period calculation Arnaldo Carvalho de Melo
2016-12-23 14:54 ` [GIT PULL 0/4] perf/urgent fixes for 'perf sched timehist' and samples/bpf/ testing Namhyung Kim
2016-12-23 19:24 ` Ingo Molnar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).