1. 24 10月, 2016 26 次提交
  2. 22 10月, 2016 1 次提交
    • I
      Merge tag 'perf-c2c-for-mingo-20161021' of... · e9c84892
      Ingo Molnar 提交于
      Merge tag 'perf-c2c-for-mingo-20161021' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core
      
      Pull new 'perf c2c' tool from Arnaldo Carvalho de Melo:
      
      - The 'perf c2c' tool provides means for Shared Data C2C/HITM analysis.
      
        It allows you to track down cacheline contention. The tool is based
        on x86's load latency and precise store facility events provided by
        Intel CPUs.
      
        It was tested by Joe Mario and has proven to be useful, finding some
        cacheline contentions. Joe also wrote a blog about c2c tool with
        examples:
      
          https://joemario.github.io/blog/2016/09/01/c2c-blog/
      
        Excerpt of the content on this site:
      
        ---
          At a high level, “perf c2c” will show you:
      
          * The cachelines where false sharing was detected.
          * The readers and writers to those cachelines, and the offsets where those accesses occurred.
          * The pid, tid, instruction addr, function name, binary object name for those readers and writers.
          * The source file and line number for each reader and writer.
          * The average load latency for the loads to those cachelines.
          * Which numa nodes the samples a cacheline came from and which CPUs were involved.
      
          Using perf c2c is similar to using the Linux perf tool today.
          First collect data with “perf c2c record” Then generate a report output with “perf c2c report”
        ---
      
        There one finds extensive details on using the tool, with tips on
        reducing the volume of samples while still capturing enough to do
        its job. (Dick Fowles, Joe Mario, Don Zickus, Jiri Olsa)
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@kernel.org>
      e9c84892
  3. 21 10月, 2016 13 次提交
    • J
      perf c2c report: Add --show-all option · af09b2d3
      Jiri Olsa 提交于
      Normally we limit the main list to contain only entries with HITM %
      value > 0.0005, but it might be useful to display all captured entries.
      Adding --show-all option for that.
      Requested-and-Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Don Zickus <dzickus@redhat.com>
      Cc: Joe Mario <jmario@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/n/tip-nokgjdwikbegec5jzj4mxhqc@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      af09b2d3
    • J
      perf c2c report: Add --no-source option · 18f278d2
      Jiri Olsa 提交于
      Add a possibility to disable source line column with new --no-source
      option. It source line data could take lot of time to retrieve, so it
      could be a performance burden for big data.
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Don Zickus <dzickus@redhat.com>
      Cc: Joe Mario <jmario@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/n/tip-8p6s2727fq8nbsm3it5gix3p@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      18f278d2
    • J
      perf c2c: Add man page and credits · 465f27a3
      Jiri Olsa 提交于
      Add man page for c2c command and credits to builtin-c2c.c file.
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Don Zickus <dzickus@redhat.com>
      Cc: Joe Mario <jmario@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/n/tip-twbp391v8v9f5idp584hlfov@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      465f27a3
    • J
      perf c2c report: Add help windows · 9a406eb6
      Jiri Olsa 提交于
      Adding help windows to display key/action mappings
      for both browsers.
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Don Zickus <dzickus@redhat.com>
      Cc: Joe Mario <jmario@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/n/tip-zni4apopx6a9eyxsosm1ebh1@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      9a406eb6
    • J
      perf c2c report: Iterate node display in browser · 1a56a425
      Jiri Olsa 提交于
      Adding TUI support to switch between Node entry versions
      in real time with 'n' key.
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Don Zickus <dzickus@redhat.com>
      Cc: Joe Mario <jmario@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/n/tip-xqbw4h4dxig54wff7fd14lao@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      1a56a425
    • J
      perf c2c report: Add support to manage symbol name length · 590b6a3a
      Jiri Olsa 提交于
      The width of symbol and source line entries could get really long
      and not convenient to display. Adding support to display only
      patrt of such strings and possibility to switch to full length
      by uing --full-symbols option or 's' key in TUI browser.
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Don Zickus <dzickus@redhat.com>
      Cc: Joe Mario <jmario@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/n/tip-yxf5hfteyfaoi8xrgczqtyha@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      590b6a3a
    • J
      perf c2c report: Add cacheline index entry · bb342dae
      Jiri Olsa 提交于
      It's convenient to have an index for each cacheline to help discussions
      about results over the phone.
      
      Add new 'Index' and 'Num' fields in main and single cacheline tables.
      
      $ perf c2c report
        =================================================
                   Shared Data Cache Line Table
        =================================================
        #
        #                              Total      Lcl  ----- LLC Load Hitm -----
        # Index           Cacheline  records     Hitm    Total      Lcl      Rmt  ...
        # .....  ..................  .......  .......  .......  .......  .......
        #
              0  0xffff880036233b40        1   11.11%        1        1        0
              1  0xffff88009ccb2900        1   11.11%        1        1        0
              2  0xffff8800b5b3bc40        7   11.11%        1        1        0
        ...
      
        =================================================
              Shared Cache Line Distribution Pareto
        =================================================
        #
        #        ----- HITM -----  -- Store Refs --        Data address
        #   Num      Rmt      Lcl   L1 Hit  L1 Miss              Offset      Pid  ...
        # .....  .......  .......  .......  .......  ..................  .......
        #
          -------------------------------------------------------------
              0        0        1        0        0  0xffff880036233b40
          -------------------------------------------------------------
                   0.00%  100.00%    0.00%    0.00%                0x30        0
      
          -------------------------------------------------------------
              1        0        1        0        0  0xffff88009ccb2900
          -------------------------------------------------------------
                   0.00%  100.00%    0.00%    0.00%                0x28      549
        ...
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Don Zickus <dzickus@redhat.com>
      Cc: Joe Mario <jmario@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/n/tip-4dhfagaz57tvrfjbg8nd2h4u@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      bb342dae
    • J
      perf c2c report: Recalc width of global sort entries · 25aa84e3
      Jiri Olsa 提交于
      Using resort callbacks to compute the columns' width.
      
      Computing only the global ones, c2c entries have fixed width only.
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Don Zickus <dzickus@redhat.com>
      Cc: Joe Mario <jmario@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/n/tip-zyayvq2u3dzyf3y7i9jza0lw@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      25aa84e3
    • J
      perf c2c report: Allow to set cacheline sort fields · fc9c630e
      Jiri Olsa 提交于
      Allowing user to configure the way the single cacheline
      data are sorted after being sorted by offset.
      
      Adding 'c' option to specify sorting fields for single cacheline:
      
          -c, --coalesce <coalesce fields>
                                coalesce fields: pid,tid,iaddr,dso
      
      It's allowed to use following combination of fields:
        pid   - process pid
        tid   - process tid
        iaddr - code address
        dso   - shared object
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Don Zickus <dzickus@redhat.com>
      Cc: Joe Mario <jmario@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/n/tip-aka8z31umxoq2gqr5mjd81zr@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      fc9c630e
    • J
      perf c2c report: Add support to choose local HITMs · 55b95776
      Jiri Olsa 提交于
      Currently we sort and limit displayed data based on the remote HITMs
      count. Adding support to switch to local HITMs via --display option:
      
              --display ...     lcl,rmt
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Don Zickus <dzickus@redhat.com>
      Cc: Joe Mario <jmario@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/n/tip-inykbom2f19difvsu1e18avr@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      55b95776
    • J
      perf c2c report: Limit the cachelines table entries · 9857b717
      Jiri Olsa 提交于
      Add a limit for entries number of the cachelines table entries. By
      default now it's the 0.0005% minimum of remote HITMs.
      
      Also display only cachelines with remote hitm or store data.
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Don Zickus <dzickus@redhat.com>
      Cc: Joe Mario <jmario@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/n/tip-inykbom2f19difvsu1e18avr@git.kernel.org
      [ Disabled for now ]
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      9857b717
    • J
      perf c2c report: Allow to report callchains · dd805768
      Jiri Olsa 提交于
      Add --call-graph option to properly setup callchain code. Adding default
      settings to display callchains whenever they are stored in the
      perf.data.
      
      Committer Notes:
      
      Testing it:
      
        [root@jouet ~]# perf c2c record -a -g sleep 5
        [ perf record: Woken up 1 times to write data ]
        [ perf record: Captured and wrote 5.331 MB perf.data (4263 samples) ]
        [root@jouet ~]# perf evlist -v
        cpu/mem-loads,ldlat=30/P: type: 4, size: 112, config: 0x1cd, { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|ADDR|CALLCHAIN|ID|CPU|PERIOD|DATA_SRC|WEIGHT, read_format: ID, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, task: 1, precise_ip: 3, mmap_data: 1, sample_id_all: 1, mmap2: 1, comm_exec: 1, { bp_addr, config1 }: 0x1f
        cpu/mem-stores/P: type: 4, size: 112, config: 0x82d0, { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|ADDR|CALLCHAIN|ID|CPU|PERIOD|DATA_SRC|WEIGHT, read_format: ID, disabled: 1, inherit: 1, freq: 1, precise_ip: 3, sample_id_all: 1
        [root@jouet ~]# perf c2c report --stats
        =================================================
                    Trace Event Information
        =================================================
          Total records                     :       4263
          Locked Load/Store Operations      :        220
          Load Operations                   :       2130
          Loads - uncacheable               :          1
          Loads - IO                        :          7
          Loads - Miss                      :         86
          Loads - no mapping                :          5
          Load Fill Buffer Hit              :        609
          Load L1D hit                      :        612
        =================================================
                    Trace Event Information
        =================================================
          Total records                     :       4263
          Locked Load/Store Operations      :        220
          Load Operations                   :       2130
          Loads - uncacheable               :          1
          Loads - IO                        :          7
          Loads - Miss                      :         86
          Loads - no mapping                :          5
          Load Fill Buffer Hit              :        609
          Load L1D hit                      :        612
          Load L2D hit                      :         27
          Load LLC hit                      :        607
          Load Local HITM                   :         15
          Load Remote HITM                  :          0
          Load Remote HIT                   :          0
          Load Local DRAM                   :        176
          Load Remote DRAM                  :          0
          Load MESI State Exclusive         :        176
          Load MESI State Shared            :          0
          Load LLC Misses                   :        176
          LLC Misses to Local DRAM          :      100.0%
          LLC Misses to Remote DRAM         :        0.0%
          LLC Misses to Remote cache (HIT)  :        0.0%
          LLC Misses to Remote cache (HITM) :        0.0%
          Store Operations                  :       2133
          Store - uncacheable               :          0
          Store - no mapping                :          1
          Store L1D Hit                     :       1967
          Store L1D Miss                    :        165
          No Page Map Rejects               :        145
          Unable to parse data source       :          0
      
        =================================================
            Global Shared Cache Line Event Information
        =================================================
          Total Shared Cache Lines          :         15
          Load HITs on shared lines         :         26
          Fill Buffer Hits on shared lines  :          7
          L1D hits on shared lines          :          3
          L2D hits on shared lines          :          0
          LLC hits on shared lines          :         16
          Locked Access on shared lines     :          2
          Store HITs on shared lines        :          8
          Store L1D hits on shared lines    :          7
          Total Merged records              :         23
      
        =================================================
                         c2c details
        =================================================
          Events                            : cpu/mem-loads,ldlat=30/P
                                            : cpu/mem-stores/P
        [root@jouet ~]#
      
        [root@jouet ~]# perf c2c report
      Shared Data Cache Line Table (2378 entries)
                              Total           --- LLC Load Hitm --  -- Store Reference -  - Load Dram -   LLC      Total  - Core Load Hit -
                 Cacheline  records    %hitm  Total   Lcl      Rmt  Total  L1Hit  L1Miss  Lcl  Rmt        Ld Miss  Loads   FB       L1   L2
      - 0xffff880024380c00       10    0.00%      0     0        0      6      6       0    0    0        0            4    1        3    0
         - 0.13% _raw_spin_lock_irqsave
            - 0.07% ep_poll
                 sys_epoll_wait
                 do_syscall_64
                 return_from_SYSCALL_64
               + 0x103573
            - 0.05% ep_poll_callback
                 __wake_up_common
               - __wake_up_sync_key
                  - 0.02% pipe_read
                       __vfs_read
                       vfs_read
                       sys_read
                       do_syscall_64
                       return_from_SYSCALL_64
                       0xfdad
                  + 0.02% sock_def_readable
            + 0.02% ep_scan_ready_list.constprop.12
         + 0.00% mutex_lock
         + 0.00% __wake_up_common
      + 0xffff880024380c40        1    0.00%      0     0        0      1      1       0    0    0        0            0    0        0    0
      + 0xffff880024380c80        1    0.00%      0     0        0      0      0       0    0    0        0            1    0        0    0
      - 0xffff8800243e9f00        1    0.00%      0     0        0      1      1       0    0    0        0            0    0        0    0
           enqueue_entity
           enqueue_task_fair
           activate_task
           ttwu_do_activate
           try_to_wake_up
           wake_up_process
           hrtimer_wakeup
           __hrtimer_run_queues
           hrtimer_interrupt
           local_apic_timer_interrupt
           smp_apic_timer_interrupt
           apic_timer_interrupt
           cpuidle_enter
           call_cpuidle
      help
      
       -------------
      
      And when presing 'd' to see the cacheline details:
      
      Cacheline 0xffff880024380c00
        ----- HITM -----  -- Store Refs --                                       --------- cycles -----  cpu
            Rmt      Lcl   L1 Hit  L1 Miss    Off     Pid                   Tid  rmt hitm lcl hitm load  cnt                      Symbol
      -   0.00%    0.00%  100.00%    0.00%    0x0    1473  1474:Chrome_ChildIOT         0        0   41    2  [k] _raw_spin_lock_irqsave [kernel]
         - _raw_spin_lock_irqsave
            - 51.52% ep_poll
                 sys_epoll_wait
                 do_syscall_64
                 return_from_SYSCALL_64
               - 0x103573
                    47.19% 0
                    4.33% 0xc30bd
            - 35.93% ep_poll_callback
                 __wake_up_common
               - __wake_up_sync_key
                  - 18.20% pipe_read
                       __vfs_read
                       vfs_read
                       sys_read
                       do_syscall_64
                       return_from_SYSCALL_64
                       0xfdad
                  - 17.73% sock_def_readable
                       unix_stream_sendmsg
                       sock_sendmsg
                       ___sys_sendmsg
                       __sys_sendmsg
                       sys_sendmsg
                       do_syscall_64
                       return_from_SYSCALL_64
                       __GI___libc_sendmsg
                       0x12c036af1fc0
                       0x16a4050
                       0x894928ec83485354
            + 12.45% ep_scan_ready_list.constprop.12
      +   0.00%    0.00%    0.00%    0.00%    0x8    1473  1474:Chrome_ChildIOT         0        0  102    1  [k] mutex_lock             [kernel]
      +   0.00%    0.00%    0.00%    0.00%   0x38    1473  1473:chrome                  0        0   88    1  [k] __wake_up_common       [kernel]
      
      help
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Don Zickus <dzickus@redhat.com>
      Cc: Joe Mario <jmario@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/n/tip-inykbom2f19difvsu1e18avr@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      dd805768
    • J
      perf c2c report: Add c2c related stats stdio output · 2709b97d
      Jiri Olsa 提交于
      Display c2c related configuration options/setup.
      So far it's output of monitored events:
      
        $ perf c2c report --stats
        ...
      
        =================================================
                         c2c details
        =================================================
          Events                            : cpu/mem-loads,ldlat=50/pp
                                            : cpu/mem-stores/pp
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Don Zickus <dzickus@redhat.com>
      Cc: Joe Mario <jmario@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/n/tip-ypz84f3a9fumyttrxurm458z@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      2709b97d