Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757566AbbGGOVu (ORCPT ); Tue, 7 Jul 2015 10:21:50 -0400 Received: from szxga01-in.huawei.com ([58.251.152.64]:46715 "EHLO szxga01-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756990AbbGGOVf (ORCPT ); Tue, 7 Jul 2015 10:21:35 -0400 Message-ID: <559BDFE0.7090904@huawei.com> Date: Tue, 7 Jul 2015 22:19:12 +0800 From: "Wangnan (F)" User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: Namhyung Kim CC: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Jiri Olsa , Peter Zijlstra , "Liang, Kan" , Adrian Hunter , Andi Kleen , , , Li Zefan , , Steven Rostedt , "linux-kernel@vger.kernel.org" , Subject: Re: [PATCH v2] perf tools: Allow passing perf's own pid to '--filter' References: <1436240327-181705-1-git-send-email-wangnan0@huawei.com> In-Reply-To: Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.111.66.109] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2470 Lines: 77 On 2015/7/7 20:33, Namhyung Kim wrote: > Hi, > > On Tue, Jul 7, 2015 at 12:38 PM, Wang Nan wrote: >> This patch allows passing perf's own PID to '--filter' by using >> '$PERFPID'. This should be useful when system-widely capturing >> tracepoints events. >> >> Before this patch, when doing something like: >> >> # perf record -a -e syscalls:sys_enter_write >> >> One could easily get result like this: >> >> # perf report --stdio >> ... >> # Overhead Command Shared Object Symbol >> # ........ ....... .................. .................... >> # >> 99.99% perf libpthread-2.18.so [.] __write_nocancel >> 0.01% ls libc-2.18.so [.] write >> 0.01% sshd libc-2.18.so [.] write >> ... >> >> Where most events are generated by perf itself. >> >> A shell trick can be done to filter perf itself out: >> >> # cat << EOF > ./tmp >> > #!/bin/sh >> > exec perf record -e ... --filter="common_pid != \$\$" -a sleep 10 >> > EOF >> # chmod a+x ./tmp >> # ./tmp >> >> However, doing so is user unfriendly. >> >> This patch introduces '$PERFPID' placeholder to perf's filter. Now >> user is allowed to do the above work with: >> >> # perf record -e ... --filter='common_pid != $PERFPID' -a sleep 10 > Instead, what about adding an option to do the same thing, like > --exclude-perf or something? I thought this idea. Please see one of my previous email: http://lkml.kernel.org/r/559B3CC3.2030503@huawei.com This patch gives user full control of their filters. They can create filters like 'common_pid == $PERFPID' to profile perf itself, or use it in some complex expressions. But if most of you like adding new option, I can post a v3 with '--exclude-perf' added. Yes, the code of it can be much simpler than this patch. > Thanks, > Namhyung > > >> This patch adds the variable replacement code to perf_evsel__apply_filter(), >> before PERF_EVENT_IOC_SET_FILTER ioctl, so not only 'perf record', all >> subcommands which uses filter can utilize $PERFPID. >> >> Andi Kleen sent a similar patch at 2014, but wasn't applied, the >> reason is not clear. >> >> Signed-off-by: Wang Nan -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/