From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B12DCC43219 for ; Tue, 19 Oct 2021 09:24:25 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 86D5D6103B for ; Tue, 19 Oct 2021 09:24:25 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 86D5D6103B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date: Message-ID:From:References:Cc:To:Subject:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=KbW45Cy3LXE2x+GjqYUYT+zsVRW/1+RQvxEAJ5ACL6g=; b=R6hji/pmzVIEve6VP3/fEHQ58F kwAK5O/O1X+qzyzG/iexRRlwEBcmVL5uQ1vDVCjJ9lim2bX97mFiA7kgu2lL84ZX6THvc5i1Pxafc bD8IK2fhPrb1XtWepsQmWS7gNUhIJRfEmBwUfXz1/oxz6erOsog7ImZ2iKH/KoCCqofNRSZDPX1Lz 9wZk4m/FIKZ3rMJoPVehHZ+OjdMFDx2Q9Bl90ZifoXBcaB0lUlsFkVzl9IcQmbXOOahwGWiTCs2og fzC1hkQOcLEAcPdc+/L6vfTdaW8V/ttuRFy6Zaa8gXC/tKSgj7BCQwOhkEbqdCj6eSC87ByjI1mHK aRpdu09Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mclL3-000evB-Ms; Tue, 19 Oct 2021 09:23:17 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mclKz-000euF-Id for linux-arm-kernel@lists.infradead.org; Tue, 19 Oct 2021 09:23:15 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 67118D6E; Tue, 19 Oct 2021 02:23:06 -0700 (PDT) Received: from [10.57.73.194] (unknown [10.57.73.194]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id B4A163F73D; Tue, 19 Oct 2021 02:23:03 -0700 (PDT) Subject: Re: [PATCH 4/5] perf arm-spe: Implement find_snapshot callback To: Leo Yan Cc: Will Deacon , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, John Garry , Mathieu Poirier , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Mike Leach , linux-arm-kernel@lists.infradead.org, coresight@lists.linaro.org, James Clark References: <20210923135016.GG400258@leoy-ThinkPad-X240s> <20210923144048.GB603008@leoy-ThinkPad-X240s> <1c6a3a73-27dc-6673-7fe7-34bc7fcb0a68@arm.com> <20211004122724.GC174271@leoy-ThinkPad-X240s> <6b092f13-832f-5d1d-a504-aea96c81bf17@arm.com> <20211006095124.GC14400@leoy-ThinkPad-X240s> <377b54ef-b9c0-9cfc-ef0c-0187d7c493cc@arm.com> <20211013003916.GA130842@leoy-ThinkPad-X240s> <20211013075125.GA6701@willie-the-truck> <35209d5c-6387-5248-ab61-a1e1cb0553de@arm.com> <20211017061305.GA130233@leoy-ThinkPad-X240s> From: German Gomez Message-ID: <5e59784e-3f09-cfbc-1692-f3a5d85b0995@arm.com> Date: Tue, 19 Oct 2021 10:23:01 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: <20211017061305.GA130233@leoy-ThinkPad-X240s> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211019_022313_742926_FC379B03 X-CRM114-Status: GOOD ( 24.92 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi Leo, Yeah I agree the redundant AUX events are adding unnecessary bloat to the perf.data file... We actually cam across this when doing one of the test cases. Sorry for not reporting it! Could we patch the driver in a separate patch set? Or do you think this is critical for the purposes of this one? Thanks, German On 17/10/2021 07:13, Leo Yan wrote: > Hi German, Will, > > On Fri, Oct 15, 2021 at 01:33:39PM +0100, German Gomez wrote: > > [...] > >> $ ./perf record -vvv -e arm_spe/period=148576/u -S1000 -m16,16 -- taskset --cpu-list 0 stress --cpu 1 & > When testing Arm SPE snapshot mode with the command (it's quite > similiar with up command but not exactly same): > > # ./perf --debug verbose=3 record -e arm_spe/period=148576/u -C 0 -S1000 -m16,16 \ > -- taskset --cpu-list 0 stress --cpu 1 & > # kill -USR2 [pid_num] > > ... then I wait for long time and didn't stop the perf program, then > I observed the output file contains many redundant events > PERF_RECORD_AUX. E.g. in the shared perf data file [1], you could use > below commands to see tons of the events PERF_RECORD_AUX which I only > send only one USR2 signal for taking snapshot: > > # perf report -D -i perf.data --stdio | grep -E 'RECORD_AUX' | wc -l > 2245787 > > # perf report -D -i perf.data --stdio | grep -E 'SPE' > . ... ARM SPE data: size 0x3e8 bytes > Binary file (standard input) matches > > I looked into the Arm SPE driver and found it doesn't really support > free run mode for AUX ring buffer when the driver runs in snapshot > mode, the pair functions perf_aux_output_end() and > perf_aux_output_begin() are invoked when every time handle the > interrupt. The detailed flow is: > > arm_spe_pmu_irq_handler() > `> arm_spe_pmu_buf_get_fault_act() > `> arm_spe_perf_aux_output_end() > `> set SPE registers > `> perf_aux_output_end() > `> arm_spe_perf_aux_output_begin() > `> perf_aux_output_begin() > `> set SPE registers > > Seems to me, a possible solution is to add an extra parameter 'int > in_interrupt' for functions arm_spe_perf_aux_output_end() and > arm_spe_perf_aux_output_begin(), if this parameter is passed as 1 in > the interrupt handling, these two functions should skip invoking > perf_aux_output_end() and perf_aux_output_begin() so can avoid the > redundant perf event PERF_RECORD_AUX. > > arm_spe_pmu_irq_handler() > `> arm_spe_pmu_buf_get_fault_act() > `> arm_spe_perf_aux_output_end(..., in_interrupt=1) > `> set SPE registers > `> arm_spe_perf_aux_output_begin(..., in_interrupt=1) > `> set SPE registers > > P.s. I think Intel-PT has supported free run mode for snapshot mode, > so it should not generate interrupt in this mode. Thus Intel-PT can > avoid this issue, please see the code [2]. > > Thanks, > Leo > > [1] https://people.linaro.org/~leo.yan/spe/snapshot_test/perf.data > [2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/x86/events/intel/pt.c#n753 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel