• Yonatan Goldschmidt's avatar
    perf inject jit: Add namespaces support · 67dec926
    Yonatan Goldschmidt authored
    This patch fixes "perf inject --jit" to properly operate on
    namespaced/containerized processes:
    
    * jitdump files are generated by the process, thus they should be
      looked up in its mount NS.
    
    * DSOs of injected MMAP events will later be looked up in the process
      mount NS, so write them into its NS.
    
    * PIDs & TIDs from jitdump events need to be translated to the PID as
      seen by "perf record" before written into MMAP events.
    
    For a process in a different PID NS, the TID & PID given in the jitdump
    event are actually ignored; I use the TID & PID of the thread which
    mmap()ed the jitdump file. This is simplified and won't do for forks of
    the initial process, if they continue using the same jitdump file.
    Future patches might improve it.
    
    This was tested by recording a NodeJS process running with
    "--perf-prof", inside a Docker container, and by recording another
    NodeJS process running in the same namespaces as perf itself, to make
    sure it's not broken for non-containerized processes.
    Signed-off-by: default avatarYonatan Goldschmidt <yonatan.goldschmidt@granulate.io>
    Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
    Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Link: https://lore.kernel.org/r/20201105015604.1726943-1-yonatan.goldschmidt@granulate.ioSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    67dec926
builtin-inject.c 25.2 KB