Message ID | 20200914115311.2201-1-leo.yan@linaro.org (mailing list archive) |
---|---|
Headers | show |
Series | Perf tool: Support TSC for Arm64 | expand |
Hi Arnaldo, On Mon, Sep 14, 2020 at 07:53:05PM +0800, Leo Yan wrote: > This patch set is to refactor TSC implementation and move TSC code from > x86 folder to util/tsc.c, this allows all archs to reuse the code. And > alse move the TSC testing from x86 folder to tests so can work as a > common testing. > > So far, for x86 it needs to support cap_user_time_zero and for Arm64 > it needs to support cap_user_time_short. For architecture specific > code, every arch only needs to implement its own rdtsc() to read out > timer's counter. > > This patch set has been rebased on the perf/core branch with latest > commit b1f815c479c1 ("perf vendor events power9: Add hv_24x7 core level > metric events") and tested on Arm64 DB410c. Could you pick up this patch set? Thanks! Leo > $ perf test list > [...] > 68: Convert perf time to TSC > [...] > > $ perf test 68 -v > 68: Convert perf time to TSC > --- start --- > test child forked, pid 10961 > mmap size 528384B > 1st event perf time 35715036563417 tsc 686221770989 > rdtsc time 35715036649719 tsc 686221772647 > 2nd event perf time 35715036660448 tsc 686221772852 > test child finished with 0 > ---- end ---- > Convert perf time to TSC: Ok > > Changes from v3: > * Added comments for Arm64's rdtsc() for short counter (PeterZ); > * Rebased on latest acme/perf/core branch. > > Changes from v2: > * Refactored patch set to move TSC common code to util/tsc.c (Wei/Al); > * Moved TSC testing to perf/tests (Wei); > * Dropped Arm SPE timestamp patch so can have clear purpose and easier > reviewing; will send Arm SPE timestamp as separate patch. > > > Leo Yan (6): > perf tsc: Move out common functions from x86 > perf tsc: Add rdtsc() for Arm64 > perf tsc: Calculate timestamp with cap_user_time_short > perf tsc: Support cap_user_time_short for event TIME_CONV > perf tests tsc: Make tsc testing as a common testing > perf tests tsc: Add checking helper is_supported() > > tools/lib/perf/include/perf/event.h | 4 + > tools/perf/arch/arm64/util/Build | 1 + > tools/perf/arch/arm64/util/tsc.c | 21 +++++ > tools/perf/arch/x86/include/arch-tests.h | 1 - > tools/perf/arch/x86/tests/Build | 1 - > tools/perf/arch/x86/tests/arch-tests.c | 4 - > tools/perf/arch/x86/util/tsc.c | 73 +---------------- > tools/perf/tests/Build | 1 + > tools/perf/tests/builtin-test.c | 5 ++ > .../{arch/x86 => }/tests/perf-time-to-tsc.c | 13 +++ > tools/perf/tests/tests.h | 2 + > tools/perf/util/jitdump.c | 14 ++-- > tools/perf/util/synthetic-events.c | 8 -- > tools/perf/util/tsc.c | 81 +++++++++++++++++++ > tools/perf/util/tsc.h | 5 ++ > 15 files changed, 143 insertions(+), 91 deletions(-) > create mode 100644 tools/perf/arch/arm64/util/tsc.c > rename tools/perf/{arch/x86 => }/tests/perf-time-to-tsc.c (93%) > > -- > 2.17.1 >
Em Tue, Sep 22, 2020 at 08:07:32PM +0800, Leo Yan escreveu: > Hi Arnaldo, > > On Mon, Sep 14, 2020 at 07:53:05PM +0800, Leo Yan wrote: > > This patch set is to refactor TSC implementation and move TSC code from > > x86 folder to util/tsc.c, this allows all archs to reuse the code. And > > alse move the TSC testing from x86 folder to tests so can work as a > > common testing. > > > > So far, for x86 it needs to support cap_user_time_zero and for Arm64 > > it needs to support cap_user_time_short. For architecture specific > > code, every arch only needs to implement its own rdtsc() to read out > > timer's counter. > > > > This patch set has been rebased on the perf/core branch with latest > > commit b1f815c479c1 ("perf vendor events power9: Add hv_24x7 core level > > metric events") and tested on Arm64 DB410c. > > Could you pick up this patch set? Thanks! Yeah, I picked it up now, its a pity nobody provided Acks :-\ Or have a missed them somehow? - Arnaldo > Leo > > > $ perf test list > > [...] > > 68: Convert perf time to TSC > > [...] > > > > $ perf test 68 -v > > 68: Convert perf time to TSC > > --- start --- > > test child forked, pid 10961 > > mmap size 528384B > > 1st event perf time 35715036563417 tsc 686221770989 > > rdtsc time 35715036649719 tsc 686221772647 > > 2nd event perf time 35715036660448 tsc 686221772852 > > test child finished with 0 > > ---- end ---- > > Convert perf time to TSC: Ok > > > > Changes from v3: > > * Added comments for Arm64's rdtsc() for short counter (PeterZ); > > * Rebased on latest acme/perf/core branch. > > > > Changes from v2: > > * Refactored patch set to move TSC common code to util/tsc.c (Wei/Al); > > * Moved TSC testing to perf/tests (Wei); > > * Dropped Arm SPE timestamp patch so can have clear purpose and easier > > reviewing; will send Arm SPE timestamp as separate patch. > > > > > > Leo Yan (6): > > perf tsc: Move out common functions from x86 > > perf tsc: Add rdtsc() for Arm64 > > perf tsc: Calculate timestamp with cap_user_time_short > > perf tsc: Support cap_user_time_short for event TIME_CONV > > perf tests tsc: Make tsc testing as a common testing > > perf tests tsc: Add checking helper is_supported() > > > > tools/lib/perf/include/perf/event.h | 4 + > > tools/perf/arch/arm64/util/Build | 1 + > > tools/perf/arch/arm64/util/tsc.c | 21 +++++ > > tools/perf/arch/x86/include/arch-tests.h | 1 - > > tools/perf/arch/x86/tests/Build | 1 - > > tools/perf/arch/x86/tests/arch-tests.c | 4 - > > tools/perf/arch/x86/util/tsc.c | 73 +---------------- > > tools/perf/tests/Build | 1 + > > tools/perf/tests/builtin-test.c | 5 ++ > > .../{arch/x86 => }/tests/perf-time-to-tsc.c | 13 +++ > > tools/perf/tests/tests.h | 2 + > > tools/perf/util/jitdump.c | 14 ++-- > > tools/perf/util/synthetic-events.c | 8 -- > > tools/perf/util/tsc.c | 81 +++++++++++++++++++ > > tools/perf/util/tsc.h | 5 ++ > > 15 files changed, 143 insertions(+), 91 deletions(-) > > create mode 100644 tools/perf/arch/arm64/util/tsc.c > > rename tools/perf/{arch/x86 => }/tests/perf-time-to-tsc.c (93%) > > > > -- > > 2.17.1 > >
On Tue, Sep 22, 2020 at 01:49:06PM -0300, Arnaldo Carvalho de Melo wrote: > Em Tue, Sep 22, 2020 at 08:07:32PM +0800, Leo Yan escreveu: > > Hi Arnaldo, > > > > On Mon, Sep 14, 2020 at 07:53:05PM +0800, Leo Yan wrote: > > > This patch set is to refactor TSC implementation and move TSC code from > > > x86 folder to util/tsc.c, this allows all archs to reuse the code. And > > > alse move the TSC testing from x86 folder to tests so can work as a > > > common testing. > > > > > > So far, for x86 it needs to support cap_user_time_zero and for Arm64 > > > it needs to support cap_user_time_short. For architecture specific > > > code, every arch only needs to implement its own rdtsc() to read out > > > timer's counter. > > > > > > This patch set has been rebased on the perf/core branch with latest > > > commit b1f815c479c1 ("perf vendor events power9: Add hv_24x7 core level > > > metric events") and tested on Arm64 DB410c. > > > > Could you pick up this patch set? Thanks! > > Yeah, I picked it up now, its a pity nobody provided Acks :-\ Thanks, Arnaldo! > Or have a missed them somehow? No, you didn't miss anything. I should actively chase Ack tags (e.g. Peter or Will's acknowledge) before ask merging. Will note for this later. Thanks, Leo
Em Tue, Sep 22, 2020 at 01:49:06PM -0300, Arnaldo Carvalho de Melo escreveu: > Em Tue, Sep 22, 2020 at 08:07:32PM +0800, Leo Yan escreveu: > > Hi Arnaldo, > > > > On Mon, Sep 14, 2020 at 07:53:05PM +0800, Leo Yan wrote: > > > This patch set is to refactor TSC implementation and move TSC code from > > > x86 folder to util/tsc.c, this allows all archs to reuse the code. And > > > alse move the TSC testing from x86 folder to tests so can work as a > > > common testing. > > > > > > So far, for x86 it needs to support cap_user_time_zero and for Arm64 > > > it needs to support cap_user_time_short. For architecture specific > > > code, every arch only needs to implement its own rdtsc() to read out > > > timer's counter. > > > > > > This patch set has been rebased on the perf/core branch with latest > > > commit b1f815c479c1 ("perf vendor events power9: Add hv_24x7 core level > > > metric events") and tested on Arm64 DB410c. > > > > Could you pick up this patch set? Thanks! > > Yeah, I picked it up now, its a pity nobody provided Acks :-\ > > Or have a missed them somehow? Also: $ cat dm.log/debian:experimental-x-mips64 CC /tmp/build/perf/tests/llvm-src-prologue.o CC /tmp/build/perf/tests/llvm-src-relocation.o tests/perf-time-to-tsc.c:24:10: fatal error: arch-tests.h: No such file or directory 24 | #include "arch-tests.h" | ^~~~~~~~~~~~~~ compilation terminated. make[4]: *** [/git/linux/tools/build/Makefile.build:96: /tmp/build/perf/tests/perf-time-to-tsc.o] Error 1 make[4]: *** Waiting for unfinished jobs.... [perfbuilder@five ~]$ cat dm.log/debian:experimental-x-mipsel | grep "fatal error" -A5 tests/perf-time-to-tsc.c:24:10: fatal error: arch-tests.h: No such file or directory 24 | #include "arch-tests.h" | ^~~~~~~~~~~~~~ compilation terminated. make[4]: *** [/git/linux/tools/build/Makefile.build:96: /tmp/build/perf/tests/perf-time-to-tsc.o] Error 1 make[4]: *** Waiting for unfinished jobs.... [perfbuilder@five ~]$ [perfbuilder@five ~]$ cat dm.log/fedora:30-x-ARC-uClibc | grep "fatal error" -A5 tests/perf-time-to-tsc.c:24:10: fatal error: arch-tests.h: No such file or directory #include "arch-tests.h" ^~~~~~~~~~~~~~ compilation terminated. make[4]: *** [/git/linux/tools/build/Makefile.build:97: /tmp/build/perf/tests/perf-time-to-tsc.o] Error 1 make[4]: *** Waiting for unfinished jobs.... [perfbuilder@five ~]$ [perfbuilder@five ~]$ cat dm.log/ubuntu:18.04-x-s390 | grep "fatal error" -A5 tests/perf-time-to-tsc.c:24:10: fatal error: arch-tests.h: No such file or directory #include "arch-tests.h" ^~~~~~~~~~~~~~ compilation terminated. /git/linux/tools/build/Makefile.build:96: recipe for target '/tmp/build/perf/tests/perf-time-to-tsc.o' failed make[4]: *** [/tmp/build/perf/tests/perf-time-to-tsc.o] Error 1 [perfbuilder@five ~]$ Oh, it works for arm64 and powerpc 69 25.93 ubuntu:18.04-x-arm : Ok arm-linux-gnueabihf-gcc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0 70 25.69 ubuntu:18.04-x-arm64 : Ok aarch64-linux-gnu-gcc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0 68 79.84 ubuntu:18.04 : Ok gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0, clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final) 69 25.93 ubuntu:18.04-x-arm : Ok arm-linux-gnueabihf-gcc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0 70 25.69 ubuntu:18.04-x-arm64 : Ok aarch64-linux-gnu-gcc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0 71 11.75 ubuntu:18.04-x-m68k : FAIL m68k-linux-gnu-gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 72 25.72 ubuntu:18.04-x-powerpc : Ok powerpc-linux-gnu-gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 73 28.10 ubuntu:18.04-x-powerpc64 : Ok powerpc64-linux-gnu-gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 74 27.84 ubuntu:18.04-x-powerpc64el : Ok powerpc64le-linux-gnu-gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 75 12.11 ubuntu:18.04-x-riscv64 : FAIL riscv64-linux-gnu-gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 76 11.85 ubuntu:18.04-x-s390 : FAIL s390x-linux-gnu-gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 77 12.55 ubuntu:18.04-x-sh4 : FAIL sh4-linux-gnu-gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 78 11.42 ubuntu:18.04-x-sparc64 : FAIL sparc64-linux-gnu-gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 [perfbuilder@five ~]$ grep tsc dm.log/ubuntu\:18.04-x-powerpc64 CC /tmp/build/perf/tests/perf-time-to-tsc.o CC /tmp/build/perf/util/tsc.o CC /tmp/build/perf/tests/perf-time-to-tsc.o CC /tmp/build/perf/util/tsc.o CC /tmp/build/perf/tests/perf-time-to-tsc.o CC /tmp/build/perf/util/tsc.o [perfbuilder@five ~]$ Can you please take a look and resubmit? I'm removing the series from my local branch. - Arnaldo
Em Wed, Sep 23, 2020 at 12:27:53PM -0300, Arnaldo Carvalho de Melo escreveu: > Em Tue, Sep 22, 2020 at 01:49:06PM -0300, Arnaldo Carvalho de Melo escreveu: > > Em Tue, Sep 22, 2020 at 08:07:32PM +0800, Leo Yan escreveu: > > > Hi Arnaldo, > > > > > > On Mon, Sep 14, 2020 at 07:53:05PM +0800, Leo Yan wrote: > > > > This patch set is to refactor TSC implementation and move TSC code from > > > > x86 folder to util/tsc.c, this allows all archs to reuse the code. And > > > > alse move the TSC testing from x86 folder to tests so can work as a > > > > common testing. > > > > > > > > So far, for x86 it needs to support cap_user_time_zero and for Arm64 > > > > it needs to support cap_user_time_short. For architecture specific > > > > code, every arch only needs to implement its own rdtsc() to read out > > > > timer's counter. > > > > > > > > This patch set has been rebased on the perf/core branch with latest > > > > commit b1f815c479c1 ("perf vendor events power9: Add hv_24x7 core level > > > > metric events") and tested on Arm64 DB410c. > > > > > > Could you pick up this patch set? Thanks! > > > > Yeah, I picked it up now, its a pity nobody provided Acks :-\ > > > > Or have a missed them somehow? > > Also: So, this is the first: commit 0ab58c405dd7c143a1482cb9414eb0eb9b31d42a (HEAD) Author: Leo Yan <leo.yan@linaro.org> Date: Mon Sep 14 19:53:10 2020 +0800 perf tests tsc: Make tsc testing as a common testing I'll remove it and the ones after that, so the main feature is kept. I'll retest, and then push to perf/core you can then continue from there. Thanks, - Arnaldo
Hi Arnaldo, On Wed, Sep 23, 2020 at 12:55:57PM -0300, Arnaldo Carvalho de Melo wrote: > Em Wed, Sep 23, 2020 at 12:27:53PM -0300, Arnaldo Carvalho de Melo escreveu: > > Em Tue, Sep 22, 2020 at 01:49:06PM -0300, Arnaldo Carvalho de Melo escreveu: > > > Em Tue, Sep 22, 2020 at 08:07:32PM +0800, Leo Yan escreveu: > > > > Hi Arnaldo, > > > > > > > > On Mon, Sep 14, 2020 at 07:53:05PM +0800, Leo Yan wrote: > > > > > This patch set is to refactor TSC implementation and move TSC code from > > > > > x86 folder to util/tsc.c, this allows all archs to reuse the code. And > > > > > alse move the TSC testing from x86 folder to tests so can work as a > > > > > common testing. > > > > > > > > > > So far, for x86 it needs to support cap_user_time_zero and for Arm64 > > > > > it needs to support cap_user_time_short. For architecture specific > > > > > code, every arch only needs to implement its own rdtsc() to read out > > > > > timer's counter. > > > > > > > > > > This patch set has been rebased on the perf/core branch with latest > > > > > commit b1f815c479c1 ("perf vendor events power9: Add hv_24x7 core level > > > > > metric events") and tested on Arm64 DB410c. > > > > > > > > Could you pick up this patch set? Thanks! > > > > > > Yeah, I picked it up now, its a pity nobody provided Acks :-\ > > > > > > Or have a missed them somehow? > > > > Also: > > So, this is the first: > > commit 0ab58c405dd7c143a1482cb9414eb0eb9b31d42a (HEAD) > Author: Leo Yan <leo.yan@linaro.org> > Date: Mon Sep 14 19:53:10 2020 +0800 > > perf tests tsc: Make tsc testing as a common testing > > I'll remove it and the ones after that, so the main feature is kept. > > I'll retest, and then push to perf/core you can then continue from > there. Will monitor perf/core branch and after you push onto it, I will fix the issue ASAP. Sorry for inconvenience. Thanks, Leo