Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: torvalds/linux
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: master
Choose a base ref
...
head repository: Granulate/linux
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: granulate-perf
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 13 commits
  • 13 files changed
  • 6 contributors

Commits on Apr 27, 2021

  1. perf probe: Add support for DW_OP_call_frame_cfa vars

    Add support for probes on variables with DW_OP_call_frame_cfa
    as the dwarf operation in the debug info.
    
    Some compilers (specifically Golang compiler) output
    DW_OP_call_frame_cfa instead of DW_OP_fbreg for variables
    on the stack. If DW_OP_call_frame_cfa is the only expression
    than it is the same as DW_OP_fbreg with an offset of zero.
    In the case of the Golang compiler, DW_OP_call_frame_cfa may
    be followed by DW_OP_consts, with a number and than DW_OP_plus.
    This trio is the same as DW_OP_fbreg with the number from
    DW_OP_consts as the offset.
    
    With this change, probing on functions in Golang with variables works.
    
    Signed-off-by: Daniel Shaulov <[email protected]>
    Daniel Shaulov authored and Jongy committed Apr 27, 2021
    Configuration menu
    Copy the full SHA
    35d307e View commit details
    Browse the repository at this point in the history
  2. perf: Change libdw libraries to support elfutils>=0.178

    Up untill now, static compilation of perf was still trying to dynamically
    load the backends for libebl. Starting with version 0.178 of elfutils,
    libebl no longer needs to dynamicall load backends. This means that
    perf compiled statically with elfutils>=0.178 is trully static.
    
    In elfutils 0.178, libebl is also no longer a standalone library,
    it is included as part of libdw, so there is no longer a need for -lebl.
    Also - some of the backends required -lpthread, and since they are now
    included in the static build, we also need to add -lpthread.
    
    This change does not support older versions of elfutils.
    
    Signed-off-by: Daniel Shaulov <[email protected]>
    Daniel Shaulov authored and Jongy committed Apr 27, 2021
    Configuration menu
    Copy the full SHA
    3bfa53d View commit details
    Browse the repository at this point in the history
  3. perf probe: Make perf-probe use symbols when debuginfo is incomplete

    When a binary has debug symbols, but they are incomplete,
    some files compiled with debug info and some didn't, perf-probe will
    look for the debuginfo, and when it fails to find it will refuse to add the probe.
    If the debug info is removed entirely perf-probe gracefully degrades to using symbols.
    This commit adds the fallback to symbols for cases where dwarf exists but fails
    
    The issue was found with a nodejs binary which ships with debug info only
    for the '.c' files but no for '.cc' (c++) files, and trying to probe a c++ function.
    
    Signed-off-by: Daniel Shaulov <[email protected]>
    Daniel Shaulov authored and Jongy committed Apr 27, 2021
    Configuration menu
    Copy the full SHA
    2c7eac4 View commit details
    Browse the repository at this point in the history
  4. perf probe: Add uint8* as a supported string type

    When trying to cast a probe variable to string, the type is checked
    to be "(unsigned) char *". In Golang debug info, the strings are
    ultimately "uint8 *", so the cast fails.
    
    This commit adds the type to the list of types that can be casted
    to string, and also prints the type when it is found to not match
    one the types, for easier debugging of future issues.
    
    Signed-off-by: Daniel Shaulov <[email protected]>
    Daniel Shaulov authored and Jongy committed Apr 27, 2021
    Configuration menu
    Copy the full SHA
    9be7a5e View commit details
    Browse the repository at this point in the history
  5. perf: Add Dockerfile

    Add a Dockerfile that can be used to build a static perf
    The image is based on ubunut:16.04 to have a libc that supports older
    kernel versions.
    
    To build a static perf using the Dockerfile you can run the following (at the repo root):
    docker build -t buildbox - < tools/perf/Dockerfile
    docker run -v $PWD:/linux -w /linux/tools/perf buildbox sh -c "make clean all LDFLAGS=-static"
    
    Signed-off-by: Daniel Shaulov <[email protected]>
    Daniel Shaulov authored and Jongy committed Apr 27, 2021
    Configuration menu
    Copy the full SHA
    ba27760 View commit details
    Browse the repository at this point in the history
  6. perf inject: Keep previous cmdline

    Force "perf inject" to write the cmdline it has read from the input file,
    instead of writing its own cmdline. "perf inject" cmdline is hardly useful,
    "perf record"s is what we care about.
    
    Do note it's not exactly complete - I did not change write_cmdline() so
    that one still writes readlink("/proc/self/exe") of "perf inject" as the
    argv[0], and we drop the argv[0] we've read from the file. Unless you use
    different "perf" binaries for "record" and "inject", this doesn't matter.
    
    Signed-off-by: Yonatan Goldschmidt <[email protected]>
    Jongy committed Apr 27, 2021
    Configuration menu
    Copy the full SHA
    5ad1beb View commit details
    Browse the repository at this point in the history

Commits on May 9, 2021

  1. perf: Use exec_comm instead of comm when printing

    Process names are much clearer as the first line in a flamegraph
    If we ever want to upstream this, it needs to be a separate option
    Daniel Shaulov authored and Jongy committed May 9, 2021
    Configuration menu
    Copy the full SHA
    40a7823 View commit details
    Browse the repository at this point in the history

Commits on Sep 20, 2022

  1. Configuration menu
    Copy the full SHA
    37e33e6 View commit details
    Browse the repository at this point in the history

Commits on Oct 18, 2022

  1. Revert "perf inject: Keep previous cmdline"

    This reverts commit 5ad1beb.
    Ilay Rosenberg committed Oct 18, 2022
    Configuration menu
    Copy the full SHA
    9843a45 View commit details
    Browse the repository at this point in the history
  2. Merge tag 'v6.0' into granulate-perf

    Linux 6.0
    Ilay Rosenberg committed Oct 18, 2022
    Configuration menu
    Copy the full SHA
    fb51366 View commit details
    Browse the repository at this point in the history

Commits on Apr 25, 2023

  1. perf record: Allow using switch-output=time together with signal

    The use case is, I'd like to switch upon signal but still protect with a timeout.
    Jongy committed Apr 25, 2023
    Configuration menu
    Copy the full SHA
    aa689e9 View commit details
    Browse the repository at this point in the history

Commits on Feb 12, 2024

  1. Merge v6.7 to granulate-perf

    vagrant authored and roi-granulate committed Feb 12, 2024
    Configuration menu
    Copy the full SHA
    5c103bf View commit details
    Browse the repository at this point in the history

Commits on Oct 22, 2024

  1. Configuration menu
    Copy the full SHA
    9909d73 View commit details
    Browse the repository at this point in the history
Loading