07 Mar, 2019

1 commit

  • Ravi Bangoria reported that we fail with an empty NUMA node with the
    following message:

    $ lscpu
    NUMA node0 CPU(s):
    NUMA node1 CPU(s): 0-4

    $ sudo ./perf c2c report
    node/cpu topology bugFailed setup nodes

    Fix this by detecting the empty node and keeping its CPU set empty.

    Reported-by: Nageswara R Sastry
    Signed-off-by: Jiri Olsa
    Tested-by: Ravi Bangoria
    Cc: Alexander Shishkin
    Cc: Andi Kleen
    Cc: Jonas Rabenstein
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20190305152536.21035-2-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     

23 Feb, 2019

1 commit

  • Add a 'path' member to 'struct perf_data'. It will keep the configured
    path for the data (const char *). The path in struct perf_data_file is
    now dynamically allocated (duped) from it.

    This scheme is useful/used in following patches where struct
    perf_data::path holds the 'configure' directory path and struct
    perf_data_file::path holds the allocated path for specific files.

    Also it actually makes the code little simpler.

    Signed-off-by: Jiri Olsa
    Cc: Adrian Hunter
    Cc: Alexander Shishkin
    Cc: Alexey Budankov
    Cc: Andi Kleen
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Link: http://lkml.kernel.org/r/20190221094145.9151-3-jolsa@kernel.org
    [ Fixup data-convert-bt.c missing conversion ]
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     

06 Feb, 2019

2 commits

  • Add argument to hists__resort_cb_t so that we can pass data from upper
    layers to the callback function. It will be used in the following
    patches.

    Signed-off-by: Jiri Olsa
    Cc: Alexander Shishkin
    Cc: Jin Yao
    Cc: Kan Liang
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20190204141808.23031-2-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • Several places were using definitions found in symbols.h but not
    including it, getting it by sheer luck from some other headers that now
    are in the process of removing that include because they don't need it
    or because simply having struct forward declarations is enough, fix it.

    Cc: Adrian Hunter
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Link: https://lkml.kernel.org/n/tip-xbcvvx296d70kpg9wb0qmeq9@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

25 Jan, 2019

1 commit

  • At the cost of an extra pointer, we can avoid the O(logN) cost of
    finding the first element in the tree (smallest node), which is
    something heavily required for histograms. Specifically, the following
    are converted to rb_root_cached, and users accordingly:

    hist::entries_in_array
    hist::entries_in
    hist::entries
    hist::entries_collapsed
    hist_entry::hroot_in
    hist_entry::hroot_out

    Signed-off-by: Davidlohr Bueso
    Tested-by: Arnaldo Carvalho de Melo
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Link: http://lkml.kernel.org/r/20181206191819.30182-7-dave@stgolabs.net
    [ Added some missing conversions to rb_first_cached() ]
    Signed-off-by: Arnaldo Carvalho de Melo

    Davidlohr Bueso
     

22 Jan, 2019

1 commit

  • An automatic const char[] variable gets initialized at runtime, just
    like any other automatic variable. For long strings, that uses a lot of
    stack and wastes time building the string; e.g. for the "No %s
    allocation events..." case one has:

    444516: 48 b8 4e 6f 20 25 73 20 61 6c movabs $0x6c61207325206f4e,%rax # "No %s al"
    ...
    444674: 48 89 45 80 mov %rax,-0x80(%rbp)
    444678: 48 b8 6c 6f 63 61 74 69 6f 6e movabs $0x6e6f697461636f6c,%rax # "location"
    444682: 48 89 45 88 mov %rax,-0x78(%rbp)
    444686: 48 b8 20 65 76 65 6e 74 73 20 movabs $0x2073746e65766520,%rax # " events "
    444690: 66 44 89 55 c4 mov %r10w,-0x3c(%rbp)
    444695: 48 89 45 90 mov %rax,-0x70(%rbp)
    444699: 48 b8 66 6f 75 6e 64 2e 20 20 movabs $0x20202e646e756f66,%rax

    Make them all static so that the compiler just references objects in .rodata.

    Committer testing:

    Ok, using dwarves's codiff tool:

    $ codiff --functions /tmp/perf.before ~/bin/perf
    builtin-sched.c:
    cmd_sched | -48
    1 function changed, 48 bytes removed, diff: -48

    builtin-report.c:
    cmd_report | -32
    1 function changed, 32 bytes removed, diff: -32

    builtin-kmem.c:
    cmd_kmem | -64
    build_alloc_func_list | -50
    2 functions changed, 114 bytes removed, diff: -114

    builtin-c2c.c:
    perf_c2c__report | -390
    1 function changed, 390 bytes removed, diff: -390

    ui/browsers/header.c:
    tui__header_window | -104
    1 function changed, 104 bytes removed, diff: -104

    /home/acme/bin/perf:
    9 functions changed, 688 bytes removed, diff: -688

    Signed-off-by: Rasmus Villemoes
    Acked-by: Jiri Olsa
    Tested-by: Arnaldo Carvalho de Melo
    Cc: Alexander Shishkin
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20181102230624.20064-1-linux@rasmusvillemoes.dk
    Signed-off-by: Arnaldo Carvalho de Melo

    Rasmus Villemoes
     

29 Dec, 2018

2 commits

  • The cachelines being reported are the ones with percentages all the way
    down to 0.05%. That makes for very long output files. Raising that to
    0.1%. The user can always specify --show-all if they want all the
    cachelines with hits.

    Suggested-by: Joe Mario
    Signed-off-by: Jiri Olsa
    Cc: Alexander Shishkin
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20181228101820.28010-2-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • Joe suggested to have the coalesce default set just to 'iaddr', because
    it's easier to read on the default 'perf c2c report' output.

    By removing the "pid" field from the default -c/--coalesce option, the
    'perf c2c' report will group all the relevant PIDs under the instruction
    address ('iaddr') bucket. User can always run "-c pid,iaddr" for a more
    fine grained output on particular PIDs.

    Suggested-by: Joe Mario
    Signed-off-by: Jiri Olsa
    Cc: Alexander Shishkin
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20181228101820.28010-1-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     

31 Jul, 2018

1 commit

  • 'perf c2c' scans read/write accesses and tries to find false sharing
    cases, so when the events it wants were not asked for or ended up not
    taking place, we get no histograms.

    So do not try to display entry details if there's not any. Currently
    this ends up in crash:

    $ perf c2c report # then press 'd'
    perf: Segmentation fault
    $

    Committer testing:

    Before:

    Record a perf.data file without events of interest to 'perf c2c report',
    then call it and press 'd':

    # perf record sleep 1
    [ perf record: Woken up 1 times to write data ]
    [ perf record: Captured and wrote 0.001 MB perf.data (6 samples) ]
    # perf c2c report
    perf: Segmentation fault
    -------- backtrace --------
    perf[0x5b1d2a]
    /lib64/libc.so.6(+0x346df)[0x7fcb566e36df]
    perf[0x46fcae]
    perf[0x4a9f1e]
    perf[0x4aa220]
    perf(main+0x301)[0x42c561]
    /lib64/libc.so.6(__libc_start_main+0xe9)[0x7fcb566cff29]
    perf(_start+0x29)[0x42c999]
    #

    After the patch the segfault doesn't take place, a follow up patch to
    tell the user why nothing changes when 'd' is pressed would be good.

    Reported-by: rodia@autistici.org
    Signed-off-by: Jiri Olsa
    Tested-by: Arnaldo Carvalho de Melo
    Cc: Alexander Shishkin
    Cc: David Ahern
    Cc: Don Zickus
    Cc: Joe Mario
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Fixes: f1c5fd4d0bb9 ("perf c2c report: Add TUI cacheline browser")
    Link: http://lkml.kernel.org/r/20180724062008.26126-1-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     

25 Jul, 2018

1 commit

  • We want to allow having mixed events with/without callchains, not
    using a global flag to show callchains, but allowing supressing
    callchains when they are present.

    So invert the logic of the last parameter to hists__fprint() to
    that effect.

    Cc: Adrian Hunter
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Wang Nan
    Link: https://lkml.kernel.org/n/tip-ohqyisr6qge79qa95ojslptx@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

09 Jun, 2018

1 commit

  • Exactly as the comment just before 'struct c2c_hist_entry" says, i.e.
    the last entry in struct hist_entry is a zero length array, that when
    allocating space for hist_entry gets extra space if callchains are in
    use, which, if hist_entry is not at the end of c2c_hist_entry, the
    members after it gets corrupted when callchains get added to the rb
    trees collecting them, etc.

    Signed-off-by: Jiri Olsa
    Reported-by: Arnaldo Carvalho de Melo
    Cc: Jin Yao
    Fixes: 7f834c2e84bb ("perf c2c report: Display node for cacheline address")
    Link: http://lkml.kernel.org/n/tip-bh0ke4fh2ygpj3yowna7o1di@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     

04 Jun, 2018

1 commit


17 Mar, 2018

6 commits

  • Adding the 'PA cnt' column grouped under data cacheline address.

    It shows how many times the physical addresses changed for the hist
    entry. It does not show the number of different physical addresses for
    entry, because we don't store those. We only track the number of times
    we got different address than we currently hold, which is not expensive
    and gives similar info.

    $ perf c2c report --stdio

    # ----------- Cacheline ---------- Total Tot ----- LLC Load Hitm -----
    # Index Address Node PA cnt records Hitm Total Lcl Rmt
    # ..... .................. .... ...... ....... ....... ....... ....... .......
    #
    0 0xffff9ad56dca0a80 0 9 10 7.69% 2 2 0
    1 0xffff9ad56dce0a80 0 9 9 7.69% 2 2 0
    2 0xffff9ad37659ad80 0 1 2 3.85% 1 1 0

    ...

    # ----- HITM ----- -- Store Refs -- --------- Data address ---------
    # Num Rmt Lcl L1 Hit L1 Miss Offset Node PA cnt Pid
    # ..... ....... ....... ....... ....... .................. .... ...... .......
    #
    -------------------------------------------------------------
    0 0 2 3 0 0xffff9ad56dca0a80
    -------------------------------------------------------------
    0.00% 0.00% 33.33% 0.00% 0x0 0 1 2510
    0.00% 0.00% 33.33% 0.00% 0x4 0 1 2476
    0.00% 0.00% 33.33% 0.00% 0x20 0 1 0
    0.00% 100.00% 0.00% 0.00% 0x38 0 1 0

    Signed-off-by: Jiri Olsa
    Cc: Alexander Shishkin
    Cc: David Ahern
    Cc: Joe Mario
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20180309101442.9224-10-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • Forcing the NUMA node output to be grouped with the "Cacheline" column
    in both "Shared Data Cache Line Table" and "Shared Cache Line
    Distribution Pareto" tables.

    Before:
    # Total Tot ----- LLC Load Hitm -----
    # Index Cacheline Node records Hitm Total Lcl Rmt
    # ..... .................. .... ....... ....... ....... ....... .......
    #
    0 0x7f0830100000 0 84 10.53% 8 8 0
    1 0xffff922a93154200 0 3 2.63% 2 2 0
    2 0xffff922a93154500 0 4 2.63% 2 2 0

    After:
    # ------- Cacheline ------ Total Tot ----- LLC Load Hitm -----
    # Index Address Node records Hitm Total Lcl Rmt
    # ..... .................. .... ....... ....... ....... ....... .......
    #
    0 0x7f0830100000 0 84 10.53% 8 8 0
    1 0xffff922a93154200 0 3 2.63% 2 2 0
    2 0xffff922a93154500 0 4 2.63% 2 2 0

    Before:
    # ----- HITM ----- -- Store Refs -- Data address
    # Num Rmt Lcl L1 Hit L1 Miss Offset Node Pid
    # ..... ....... ....... ....... ....... .................. .... .......
    #
    -------------------------------------------------------------
    0 0 8 32 2 0x7f0830100000
    -------------------------------------------------------------
    0.00% 75.00% 21.88% 0.00% 0x18 0 1791
    0.00% 12.50% 37.50% 0.00% 0x18 0 1791
    0.00% 0.00% 34.38% 0.00% 0x18 0 1791

    After:
    # ----- HITM ----- -- Store Refs -- ----- Data address -----
    # Num Rmt Lcl L1 Hit L1 Miss Offset Node Pid
    # ..... ....... ....... ....... ....... .................. .... .......
    #
    -------------------------------------------------------------
    0 0 8 32 2 0x7f0830100000
    -------------------------------------------------------------
    0.00% 75.00% 21.88% 0.00% 0x18 0 1791
    0.00% 12.50% 37.50% 0.00% 0x18 0 1791
    0.00% 0.00% 34.38% 0.00% 0x18 0 1791

    Signed-off-by: Jiri Olsa
    Cc: Alexander Shishkin
    Cc: David Ahern
    Cc: Joe Mario
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20180309101442.9224-9-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • Adding the NUMA node info for the data cacheline. Adding the new column
    to both "Shared Data Cache Line Table" and "Shared Cache Line
    Distribution Pareto".

    Note the new 'Node' column next to the 'Cacheline'.

    $ perf c2c report --stdio
    =================================================
    Shared Data Cache Line Table
    =================================================
    #
    # Total Tot ----- LLC Load Hitm -----
    # Index Cacheline Node records Hitm Total Lcl Rmt
    # ..... .................. .... ....... ....... ....... ....... .......
    #
    0 0x7f0830100000 0 84 10.53% 8 8 0
    1 0xffff922a93154200 0 3 2.63% 2 2 0
    2 0xffff922a93154500 0 4 2.63% 2 2 0
    ...

    Note the new 'Node' column next to the 'Offset'.

    =================================================
    Shared Cache Line Distribution Pareto
    =================================================
    #
    # ----- HITM ----- -- Store Refs -- Data address
    # Num Rmt Lcl L1 Hit L1 Miss Offset Node Pid
    # ..... ....... ....... ....... ....... .................. .... .......
    #
    -------------------------------------------------------------
    0 0 8 32 2 0x7f0830100000
    -------------------------------------------------------------
    0.00% 75.00% 21.88% 0.00% 0x18 0 1791
    0.00% 12.50% 37.50% 0.00% 0x18 0 1791
    0.00% 0.00% 34.38% 0.00% 0x18 0 1791

    Using the mem2node object to get the NUMA node data.

    Signed-off-by: Jiri Olsa
    Cc: Alexander Shishkin
    Cc: David Ahern
    Cc: Joe Mario
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20180309101442.9224-8-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • There's no need to calculate column widths for entries that are not
    going to be displayed.

    Signed-off-by: Jiri Olsa
    Cc: Alexander Shishkin
    Cc: David Ahern
    Cc: Joe Mario
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20180309101442.9224-7-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • We are going to calculate tje column width based on the struct
    c2c_hist_entry data, so making calc_width to work with struct
    c2c_hist_entry.

    Signed-off-by: Jiri Olsa
    Cc: Alexander Shishkin
    Cc: David Ahern
    Cc: Joe Mario
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20180309101442.9224-6-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • We are going to display NUMA node information in following patches. For
    this we need to have physical address data in the sample.

    Adding --phys-data as a default option for perf c2c record.

    Signed-off-by: Jiri Olsa
    Cc: Alexander Shishkin
    Cc: David Ahern
    Cc: Joe Mario
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20180309101442.9224-5-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     

08 Mar, 2018

1 commit

  • Switch to refcnt logic instead of duplicating mem_info objects. No
    functional change, just saving some memory.

    Signed-off-by: Jiri Olsa
    Cc: Alexander Shishkin
    Cc: David Ahern
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20180307155020.32613-7-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     

15 Feb, 2018

1 commit

  • For overwrite mode, the ringbuffer will be paused. The event lost is
    expected. It needs a way to notify the browser not print the warning.

    It will be used later for perf top to disable lost event warning in
    overwrite mode. There is no behavior change for now.

    Signed-off-by: Kan Liang
    Acked-by: Jiri Olsa
    Cc: Andi Kleen
    Cc: Jin Yao
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Cc: Wang Nan
    Link: http://lkml.kernel.org/r/1516310792-208685-15-git-send-email-kan.liang@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Kan Liang
     

17 Jan, 2018

1 commit

  • When setting up DWARF callchains on specific events, without using
    'record' or 'trace' --call-graph, but instead doing it like:

    perf trace -e cycles/call-graph=dwarf/

    The unwind__prepare_access() call in thread__insert_map() when we
    process PERF_RECORD_MMAP(2) metadata events were not being performed,
    precluding us from using per-event DWARF callchains, handling them just
    when we asked for all events to be DWARF, using "--call-graph dwarf".

    We do it in the PERF_RECORD_MMAP because we have to look at one of the
    executable maps to figure out the executable type (64-bit, 32-bit) of
    the DSO laid out in that mmap. Also to look at the architecture where
    the perf.data file was recorded.

    All this probably should be deferred to when we process a sample for
    some thread that has callchains, so that we do this processing only for
    the threads with samples, not for all of them.

    For now, fix using DWARF on specific events.

    Before:

    # perf trace --no-syscalls -e probe_libc:inet_pton/call-graph=dwarf/ ping -6 -c 1 ::1
    PING ::1(::1) 56 data bytes
    64 bytes from ::1: icmp_seq=1 ttl=64 time=0.048 ms

    --- ::1 ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 0.048/0.048/0.048/0.000 ms
    0.000 probe_libc:inet_pton:(7fe9597bb350))
    Problem processing probe_libc:inet_pton callchain, skipping...
    #

    After:

    # perf trace --no-syscalls -e probe_libc:inet_pton/call-graph=dwarf/ ping -6 -c 1 ::1
    PING ::1(::1) 56 data bytes
    64 bytes from ::1: icmp_seq=1 ttl=64 time=0.060 ms

    --- ::1 ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 0.060/0.060/0.060/0.000 ms
    0.000 probe_libc:inet_pton:(7fd4aa930350))
    __inet_pton (inlined)
    gaih_inet.constprop.7 (/usr/lib64/libc-2.26.so)
    __GI_getaddrinfo (inlined)
    [0xffffaa804e51af3f] (/usr/bin/ping)
    __libc_start_main (/usr/lib64/libc-2.26.so)
    [0xffffaa804e51b379] (/usr/bin/ping)
    #
    # perf trace --call-graph=dwarf --no-syscalls -e probe_libc:inet_pton/call-graph=dwarf/ ping -6 -c 1 ::1
    PING ::1(::1) 56 data bytes
    64 bytes from ::1: icmp_seq=1 ttl=64 time=0.057 ms

    --- ::1 ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 0.057/0.057/0.057/0.000 ms
    0.000 probe_libc:inet_pton:(7f9363b9e350))
    __inet_pton (inlined)
    gaih_inet.constprop.7 (/usr/lib64/libc-2.26.so)
    __GI_getaddrinfo (inlined)
    [0xffffa9e8a14e0f3f] (/usr/bin/ping)
    __libc_start_main (/usr/lib64/libc-2.26.so)
    [0xffffa9e8a14e1379] (/usr/bin/ping)
    #
    # perf trace --call-graph=fp --no-syscalls -e probe_libc:inet_pton/call-graph=dwarf/ ping -6 -c 1 ::1
    PING ::1(::1) 56 data bytes
    64 bytes from ::1: icmp_seq=1 ttl=64 time=0.077 ms

    --- ::1 ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 0.077/0.077/0.077/0.000 ms
    0.000 probe_libc:inet_pton:(7f4947e1c350))
    __inet_pton (inlined)
    gaih_inet.constprop.7 (/usr/lib64/libc-2.26.so)
    __GI_getaddrinfo (inlined)
    [0xffffaa716d88ef3f] (/usr/bin/ping)
    __libc_start_main (/usr/lib64/libc-2.26.so)
    [0xffffaa716d88f379] (/usr/bin/ping)
    #
    # perf trace --no-syscalls -e probe_libc:inet_pton/call-graph=fp/ ping -6 -c 1 ::1
    PING ::1(::1) 56 data bytes
    64 bytes from ::1: icmp_seq=1 ttl=64 time=0.078 ms

    --- ::1 ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 0.078/0.078/0.078/0.000 ms
    0.000 probe_libc:inet_pton:(7fa157696350))
    __GI___inet_pton (/usr/lib64/libc-2.26.so)
    getaddrinfo (/usr/lib64/libc-2.26.so)
    [0xffffa9ba39c74f40] (/usr/bin/ping)
    #

    Acked-by: Namhyung Kim
    Cc: Adrian Hunter
    Cc: David Ahern
    Cc: Hendrick Brueckner
    Cc: Jiri Olsa
    Cc: Thomas Richter
    Cc: Wang Nan
    Link: https://lkml.kernel.org/r/20180116182650.GE16107@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

27 Dec, 2017

1 commit

  • These duplicate includes have been found with scripts/checkincludes.pl
    but they have been removed manually to avoid removing false positives.

    Signed-off-by: Pravin Shedge
    Cc: David S. Miller
    Cc: Greg Kroah-Hartman
    Cc: Jiri Olsa
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/1512582204-6493-1-git-send-email-pravin.shedge4linux@gmail.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Pravin Shedge
     

17 Nov, 2017

1 commit


07 Nov, 2017

1 commit

  • Conflicts:
    tools/perf/arch/arm/annotate/instructions.c
    tools/perf/arch/arm64/annotate/instructions.c
    tools/perf/arch/powerpc/annotate/instructions.c
    tools/perf/arch/s390/annotate/instructions.c
    tools/perf/arch/x86/tests/intel-cqm.c
    tools/perf/ui/tui/progress.c
    tools/perf/util/zlib.c

    Signed-off-by: Ingo Molnar

    Ingo Molnar
     

02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

31 Oct, 2017

2 commits

  • Add struct perf_data_file to represent a single file within a perf_data
    struct.

    Signed-off-by: Jiri Olsa
    Cc: Andi Kleen
    Cc: Changbin Du
    Cc: David Ahern
    Cc: Jin Yao
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Cc: Wang Nan
    Link: http://lkml.kernel.org/n/tip-c3f9p4xzykr845ktqcek6p4t@git.kernel.org
    [ Fixup recent changes in 'perf script --per-event-dump' ]
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • Rename struct perf_data_file to perf_data, because we will add the
    possibility to have multiple files under perf.data, so the 'perf_data'
    name fits better.

    Signed-off-by: Jiri Olsa
    Cc: Andi Kleen
    Cc: Changbin Du
    Cc: David Ahern
    Cc: Jin Yao
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Cc: Wang Nan
    Link: http://lkml.kernel.org/n/tip-39wn4d77phel3dgkzo3lyan0@git.kernel.org
    [ Fixup recent changes in 'perf script --per-event-dump' ]
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     

18 Sep, 2017

1 commit

  • Let's free the allocated rec_argv in case we return early, in order to
    avoid leaking memory.

    This adds free() at a few very similar places across the tree where it
    was missing.

    Signed-off-by: Martin Kepplinger
    Cc: Alexander Shishkin
    Cc: Martin kepplinger
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20170913191419.29806-1-martink@posteo.de
    Signed-off-by: Arnaldo Carvalho de Melo

    Martin Kepplinger
     

27 Jun, 2017

1 commit


26 Apr, 2017

1 commit


25 Apr, 2017

2 commits


20 Apr, 2017

2 commits

  • Removing it from util.h, part of an effort to disentangle the includes
    hell, that makes changes to util.h or something included by it to cause
    a complete rebuild of the tools.

    Cc: Adrian Hunter
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Wang Nan
    Link: http://lkml.kernel.org/n/tip-ztrjy52q1rqcchuy3rubfgt2@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • Needed to use the PRI[xu](32,64) formatting macros.

    Cc: Adrian Hunter
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Wang Nan
    Link: http://lkml.kernel.org/n/tip-wkbho8kaw24q67dd11q0j39f@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

27 Mar, 2017

1 commit

  • We got it from the git sources but never used it for anything, with the
    place where this would be somehow used remaining:

    static int run_builtin(struct cmd_struct *p, int argc, const char **argv)
    {
    prefix = NULL;
    if (p->option & RUN_SETUP)
    prefix = NULL; /* setup_perf_directory(); */

    Ditch it.

    Cc: Adrian Hunter
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Wang Nan
    Link: http://lkml.kernel.org/n/tip-uw5swz05vol0qpr32c5lpvus@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

07 Mar, 2017

2 commits

  • Currently 'perf c2c report' determines display mode using the --stdio
    option, but it could be a problem if stdout is not a tty since
    setup_browser falls back to stdio in this case.

    But perf c2c didn't know this and tried to use TUI browser anyway. It
    should check "use_browser" variable instead.

    For example, the following command showed nothing and broke terminal
    setting. Now it's fixed..

    $ perf c2c report | head
    =================================================
    Trace Event Information
    =================================================
    Total records : 136
    Locked Load/Store Operations : 6
    Load Operations : 62
    Loads - uncacheable : 0
    Loads - IO : 1
    Loads - Miss : 7
    Loads - no mapping : 2

    Committer notes:

    When trying it without a proper perf.data file it results in a stuck
    terminal, just as Namhyung reported above:

    [acme@jouet ~]$ perf c2c report | head
    WARNING: no sample cpu value[acme@jouet ~]$

    One has to kill it from some other xterm. Confirm that this patch fixes
    it:

    After:

    $ perf c2c report | head
    WARNING: no sample cpu value=================================================
    Trace Event Information
    =================================================
    Total records : 14
    Locked Load/Store Operations : 0
    Load Operations : 0
    Loads - uncacheable : 0
    Loads - IO : 0
    Loads - Miss : 0
    Loads - no mapping : 0
    $

    Signed-off-by: Namhyung Kim
    Tested-by: Arnaldo Carvalho de Melo
    Acked-by: Jiri Olsa
    Cc: Peter Zijlstra
    Cc: kernel-team@lge.com
    Link: http://lkml.kernel.org/r/20170307150851.22304-6-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Namhyung Kim
     
  • As it is not strictly asking for only stdio output, but will imply using
    it.

    Signed-off-by: Namhyung Kim
    Acked-by: Jiri Olsa
    Cc: Peter Zijlstra
    Cc: kernel-team@lge.com
    Link: http://lkml.kernel.org/r/20170307150851.22304-5-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Namhyung Kim
     

21 Jan, 2017

2 commits

  • It seems to be the most used argument for -c option so far. In the
    beginning when you want to have the overall process report, so it makes
    sense to make it the default one.

    Signed-off-by: Jiri Olsa
    Cc: David Ahern
    Cc: Don Zickus
    Cc: Joe Mario
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1484904032-11040-5-git-send-email-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • Adding "Total records" column into cacheline pareto table, between
    cycles and cpu info.

    $ perf c2c report
    ...

    --- ---------- cycles ---------- Total cpu
    rmt hitm lcl hitm load records cnt
    ... ........ ........ ........ ....... ........

    0 112 71 34 4
    0 0 0 18 1
    0 0 0 2 1
    0 132 0 3 3

    ...

    It's useful to see how many recorded samples represent each offset.

    Signed-off-by: Jiri Olsa
    Cc: David Ahern
    Cc: Don Zickus
    Cc: Joe Mario
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1484904032-11040-4-git-send-email-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     

16 Dec, 2016

1 commit