Received: by 2002:a05:6358:45e:b0:b5:b6eb:e1f9 with SMTP id 30csp1550316rwe; Thu, 1 Sep 2022 22:41:01 -0700 (PDT) X-Google-Smtp-Source: AA6agR7ougRltlLfqhQXnPiQNoWrR4FGOr4tRfn12hc81r8WSFYhmzN9cVzy9ypXnVAOHaq8Fcir X-Received: by 2002:a17:90a:e617:b0:1fd:5f9f:b1e8 with SMTP id j23-20020a17090ae61700b001fd5f9fb1e8mr3017030pjy.135.1662097261557; Thu, 01 Sep 2022 22:41:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1662097261; cv=none; d=google.com; s=arc-20160816; b=BgXmw8CxYrs2G8huhP3jvfIJFnO230tD/ZgQBNlmHuyVFkEja6dODlTdxsCwAEQYQR Dy4Sp6iFCSBXgcVBVK9/roFkaqVv0IbrP6Pwe6f2M65dUrs0yvABjCjBFbwY9HsEqabn dc5E44dmZbuMq5uOiosxXYA/syHFnOkqGfHox60Bvsxz+/Ic6QJr6SXJQU4jSRCC/EWN ueQq77gsY4mc2Ox7uzI2m7WHLOPe7Cdm3XneN/AficJbJfGbRL95Fe77mlHmZl/DHLGj N87qphMTVrFa0ODTe5ToB95818awCo+vRVirq1PVnvX8HkSXyByZnJi/gb7N4aEyrYNi Bjrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version; bh=q6wq+A6pCLZYiwmdMLVt66DYhPMTmpKmbDQR4DJbOX8=; b=DiMpQgm5RPkMW2jnhFekhdlvdewMomIq/2Z45yTIqTq37FmllUbhDHr712/vHTPKGQ n+pADere5hWIM/aXAXLO7uMf/jpn0bI7cmH9E379yzzR+HCQbiS2589n6h6SJKSLUGcC uPRiESOZlrV1XfZ79K+wOvCBTQNMM/MOtH8SQ1TN3hv5D5e314jGZ4Ypzcp4MTCgxubo jyjeIZn8Wk34TJAFeXMCS/960asMalFtTrVQjdc5CnXtEWYTROEKstGzfe3la+Te9Bqk z6BXvDhtIMEi6cbjL8Dm2+e8kJTwOwq+jg91aLsZ8527Dn5Y5WaQV9hp5s94e6iV4hzU kc2w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 101-20020a17090a0fee00b001fe173e300fsi1183237pjz.85.2022.09.01.22.40.50; Thu, 01 Sep 2022 22:41:01 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234212AbiIBF31 (ORCPT + 99 others); Fri, 2 Sep 2022 01:29:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38332 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229482AbiIBF3Y (ORCPT ); Fri, 2 Sep 2022 01:29:24 -0400 Received: from mail-oa1-f51.google.com (mail-oa1-f51.google.com [209.85.160.51]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B04BD6580C for ; Thu, 1 Sep 2022 22:29:23 -0700 (PDT) Received: by mail-oa1-f51.google.com with SMTP id 586e51a60fabf-11ba6e79dd1so2259125fac.12 for ; Thu, 01 Sep 2022 22:29:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date; bh=q6wq+A6pCLZYiwmdMLVt66DYhPMTmpKmbDQR4DJbOX8=; b=ZchAN8UR/w4n2tL5DF95cMHVOMZ6ngBlSzTZr2My48NZR2iIVRBBCFgDY6HXMbT29I 2FUVFev32TkMLWjqGIsDsDj++ZIDYQC+XZRqTiSAoeK+6+J2ZiZPEifYMmf510i2OYv9 b8iQBPB9MQ6lBDQfWzB5AdQFIFSdS6uZGAK6olpvQ3EQOnz6JU9+AEVhwQdpnRmE5Dp0 SzWykMQ/NO1782ntbMPSNXfGXLNk+mg9spZDb/hWKvxoZ5IDr+Bu8El8Z3H3D2tKrr95 0rZKd2nmyCFffb2L6XWIeTEqH7dhb5j+2LQLXXbUZrlVSMW4HOotGLjWk7oNjra7daec iBeg== X-Gm-Message-State: ACgBeo3AH4a2VPpKWPhN22XOpwzhH+8QsD2VW8fGZGtTEw4dKOxk8uZ8 wGKYa+gRyYsNgXvviOhVuHMcpHd0pr/nKO+4vJJsMH6F X-Received: by 2002:a05:6870:a184:b0:116:bd39:7f94 with SMTP id a4-20020a056870a18400b00116bd397f94mr1397433oaf.5.1662096562934; Thu, 01 Sep 2022 22:29:22 -0700 (PDT) MIME-Version: 1.0 References: <20220901130959.1285717-1-kan.liang@linux.intel.com> <20220901130959.1285717-5-kan.liang@linux.intel.com> In-Reply-To: <20220901130959.1285717-5-kan.liang@linux.intel.com> From: Namhyung Kim Date: Thu, 1 Sep 2022 22:29:12 -0700 Message-ID: Subject: Re: [PATCH V2 4/6] perf: Use sample_flags for weight To: Kan Liang Cc: Peter Zijlstra , Arnaldo Carvalho de Melo , Ingo Molnar , Stephane Eranian , Michael Ellerman , linux-kernel , Andi Kleen , andreas.kogler.0x@gmail.com, Athira Rajeev , Ravi Bangoria Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Sep 1, 2022 at 6:10 AM wrote: > > From: Kan Liang > > Use the new sample_flags to indicate whether the weight field is filled > by the PMU driver. > > Remove the weight field from the perf_sample_data_init() to minimize the > number of cache lines touched. > > Signed-off-by: Kan Liang > --- > arch/powerpc/perf/core-book3s.c | 5 +++-- > arch/x86/events/intel/ds.c | 10 +++++++--- > include/linux/perf_event.h | 3 +-- > kernel/events/core.c | 3 +++ > 4 files changed, 14 insertions(+), 7 deletions(-) > > diff --git a/arch/powerpc/perf/core-book3s.c b/arch/powerpc/perf/core-book3s.c > index 1ad1efdb33f9..a5c95a2006ea 100644 > --- a/arch/powerpc/perf/core-book3s.c > +++ b/arch/powerpc/perf/core-book3s.c > @@ -2305,9 +2305,10 @@ static void record_and_restart(struct perf_event *event, unsigned long val, > ppmu->get_mem_data_src(&data.data_src, ppmu->flags, regs); > > if (event->attr.sample_type & PERF_SAMPLE_WEIGHT_TYPE && > - ppmu->get_mem_weight) > + ppmu->get_mem_weight) { > ppmu->get_mem_weight(&data.weight.full, event->attr.sample_type); > - > + data.sample_flags |= PERF_SAMPLE_WEIGHT_TYPE; > + } > if (perf_event_overflow(event, &data, regs)) > power_pmu_stop(event, 0); > } else if (period) { > diff --git a/arch/x86/events/intel/ds.c b/arch/x86/events/intel/ds.c > index 5dcfd2de6ef8..f66a4905cc87 100644 > --- a/arch/x86/events/intel/ds.c > +++ b/arch/x86/events/intel/ds.c > @@ -1535,8 +1535,10 @@ static void setup_pebs_fixed_sample_data(struct perf_event *event, > /* > * Use latency for weight (only avail with PEBS-LL) > */ > - if (fll && (sample_type & PERF_SAMPLE_WEIGHT_TYPE)) > + if (fll && (sample_type & PERF_SAMPLE_WEIGHT_TYPE)) { > data->weight.full = pebs->lat; > + data->sample_flags |= PERF_SAMPLE_WEIGHT_TYPE; > + } > > /* > * data.data_src encodes the data source > @@ -1628,9 +1630,10 @@ static void setup_pebs_fixed_sample_data(struct perf_event *event, > > if (x86_pmu.intel_cap.pebs_format >= 2) { > /* Only set the TSX weight when no memory weight. */ > - if ((sample_type & PERF_SAMPLE_WEIGHT_TYPE) && !fll) > + if ((sample_type & PERF_SAMPLE_WEIGHT_TYPE) && !fll) { > data->weight.full = intel_get_tsx_weight(pebs->tsx_tuning); > - > + data->sample_flags |= PERF_SAMPLE_WEIGHT_TYPE; > + } > if (sample_type & PERF_SAMPLE_TRANSACTION) > data->txn = intel_get_tsx_transaction(pebs->tsx_tuning, > pebs->ax); > @@ -1772,6 +1775,7 @@ static void setup_pebs_adaptive_sample_data(struct perf_event *event, > data->weight.var1_dw = (u32)(weight & PEBS_LATENCY_MASK) ?: > intel_get_tsx_weight(meminfo->tsx_tuning); > } > + data->sample_flags |= PERF_SAMPLE_WEIGHT_TYPE; I was thinking about splitting PERF_SAMPLE_WEIGHT and PERF_SAMPLE_WEIGHT_STRUCT but it'd just add complexity unnecessarily? Thanks, Namhyung > } > > if (sample_type & PERF_SAMPLE_DATA_SRC) > diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h > index 1e12e79454e0..06a587b5faa9 100644 > --- a/include/linux/perf_event.h > +++ b/include/linux/perf_event.h > @@ -1012,7 +1012,6 @@ struct perf_sample_data { > u64 addr; > struct perf_raw_record *raw; > u64 period; > - union perf_sample_weight weight; > u64 txn; > union perf_mem_data_src data_src; > > @@ -1021,6 +1020,7 @@ struct perf_sample_data { > * perf_{prepare,output}_sample(). > */ > struct perf_branch_stack *br_stack; > + union perf_sample_weight weight; > > u64 type; > u64 ip; > @@ -1063,7 +1063,6 @@ static inline void perf_sample_data_init(struct perf_sample_data *data, > data->addr = addr; > data->raw = NULL; > data->period = period; > - data->weight.full = 0; > data->data_src.val = PERF_MEM_NA; > data->txn = 0; > } > diff --git a/kernel/events/core.c b/kernel/events/core.c > index 104c0c9f4e6f..f0af45db02b3 100644 > --- a/kernel/events/core.c > +++ b/kernel/events/core.c > @@ -7408,6 +7408,9 @@ void perf_prepare_sample(struct perf_event_header *header, > header->size += size; > } > > + if (filtered_sample_type & PERF_SAMPLE_WEIGHT_TYPE) > + data->weight.full = 0; > + > if (sample_type & PERF_SAMPLE_REGS_INTR) { > /* regs dump ABI info */ > int size = sizeof(u64); > -- > 2.35.1 >