From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753533AbcAGWAQ (ORCPT ); Thu, 7 Jan 2016 17:00:16 -0500 Received: from mail-wm0-f52.google.com ([74.125.82.52]:34284 "EHLO mail-wm0-f52.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753256AbcAGWAO (ORCPT ); Thu, 7 Jan 2016 17:00:14 -0500 MIME-Version: 1.0 In-Reply-To: <20160107215745.GV25832@tassilo.jf.intel.com> References: <20160107215745.GV25832@tassilo.jf.intel.com> Date: Thu, 7 Jan 2016 14:00:11 -0800 Message-ID: Subject: Re: [RFC] perf record: missing buildid for callstack modules From: Stephane Eranian To: Andi Kleen Cc: LKML , Arnaldo Carvalho de Melo , Jiri Olsa , Namhyung Kim , Peter Zijlstra , Ingo Molnar , Adrian Hunter Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jan 7, 2016 at 1:57 PM, Andi Kleen wrote: > On Thu, Jan 07, 2016 at 01:56:14PM -0800, Stephane Eranian wrote: >> Hi, >> >> Whenever you do: >> >> $ perf record -g -a sleep 10 >> >> Perf will collect the callstack for each sample. At the end of the >> run, perf record >> adds the buildid for all dso with at least one sample. But when it does this, it >> only looks at the sampled IP and ignore the modules traversed by the callstack. >> That means that, it is not possible to uniquely identify the modules executed, >> unless they had at least one IP sample captured. But this is not >> always the case. >> >> How about providing an option to perf record to force collecting >> buildid for all IPs >> captured in the callstack? I understand that would cost more at the end of the >> collection, but this would be beneficial to several monitoring scenarios. > > If you do that I would rather collect buildid for everything that is synthesized > (everything in /proc) > But that would be much more than whatever would be captured with hits in callstacks. A valid scenario here is sampling on tracepoints (which are kernel only events) but you want to know where the syscall originated from or which user code was interrupted.