From patchwork Wed Aug 2 07:49:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yang Jihong X-Patchwork-Id: 129703 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9f41:0:b0:3e4:2afc:c1 with SMTP id v1csp305166vqx; Wed, 2 Aug 2023 01:42:40 -0700 (PDT) X-Google-Smtp-Source: APBJJlEl+Fc8x3ZHv65pJIPLq4kjKpZRwybhby9MxveKYthzWS9hiRO5YzZEZSsQh8gNNwGLbxYk X-Received: by 2002:aa7:c589:0:b0:522:2f8c:8953 with SMTP id g9-20020aa7c589000000b005222f8c8953mr4041683edq.39.1690965759885; Wed, 02 Aug 2023 01:42:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690965759; cv=none; d=google.com; s=arc-20160816; b=EiAu5l97nlUroDKZaNWxglcptVa9uMswmi7i4F1m/Y9DDBm7HlLpSH1Cvg/7oFbtwI 4MonDYVVBrQsRof6htwZWk2fAn2+Szj8ME85O1S4NEXR+0JPHFbsP8ASGKv2HPnojvzb 3DLn7W7i8pMyxO0jftauqJfhQzHrzT8fniUt0igM1T/xLHZMCunqZaL0YewkzyjH6ZXo XxJuq9fK2vxecQbf/aTB2fmCeFZRBzM/YzXuggKtClF/jnI7tcS21aayb9iglwG05Sfh 7G7GXCQAeVNdnIdDs/NGfDyV5t9YLvVj6y+iWr9gtqgY5F7fbI4G1OHCHbGR4kvGHBUv BppQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=NRO6ll3NODRZGsv8c8lf/yozKZ6mRiA3XVYR111eioU=; fh=Ib1wi7jRbo+eNDLEErvWCJx+cnUm87PkGFthhdFf08Y=; b=oRzMUYnpTUXfAhRCled0tR4wAnHo71NR5DeufjtTn2AMBs0KYOVEaPdYBCiUKc7l13 tXGic3+aL3iR1a4RzPXIzxZT65tduzeby6A/KaacGS7GPTbZzU393r9rvw6ucm/UmA99 QTowNaS9qsX9Ze9CBgPmprStC1MdCPWf2JMZYdJi3NHmOxjSnEzpiYhPa4nQ5NKCYoix NJSoz1zaUx2PI+/Hxk0gt9NGENYQ2RHTK6u5lUQxKTSWk0Jc2DS0uiqeRnUVBEDQxcFt Ni0oWl/Vu7BqBRrKmsl4r1pAyo1vtMd1SnCWo3CR9D8GxyxChMxgauli1b7e+hk+Hsob LfFA== 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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q15-20020a056402032f00b00522d73afb08si3463251edw.525.2023.08.02.01.42.15; Wed, 02 Aug 2023 01:42:39 -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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233771AbjHBHyz (ORCPT + 99 others); Wed, 2 Aug 2023 03:54:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51664 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233619AbjHBHy1 (ORCPT ); Wed, 2 Aug 2023 03:54:27 -0400 Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7357B4EEF; Wed, 2 Aug 2023 00:52:25 -0700 (PDT) Received: from kwepemm600003.china.huawei.com (unknown [172.30.72.56]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4RG4140YWlzrS5S; Wed, 2 Aug 2023 15:51:20 +0800 (CST) Received: from localhost.localdomain (10.67.174.95) by kwepemm600003.china.huawei.com (7.193.23.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Wed, 2 Aug 2023 15:52:22 +0800 From: Yang Jihong To: , , , , , , , , , , , , , , , CC: Subject: [PATCH v4 1/7] perf evlist: Add perf_evlist__go_system_wide() helper Date: Wed, 2 Aug 2023 07:49:42 +0000 Message-ID: <20230802074948.136468-2-yangjihong1@huawei.com> X-Mailer: git-send-email 2.30.GIT In-Reply-To: <20230802074948.136468-1-yangjihong1@huawei.com> References: <20230802074948.136468-1-yangjihong1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.67.174.95] X-ClientProxiedBy: dggems705-chm.china.huawei.com (10.3.19.182) To kwepemm600003.china.huawei.com (7.193.23.202) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773106112645816889 X-GMAIL-MSGID: 1773106112645816889 For dummy events that keep tracking, we may need to modify its cpu_maps. For example, change the cpu_maps to record sideband events for all CPUS. Add perf_evlist__go_system_wide() helper to support this scenario. Signed-off-by: Yang Jihong --- tools/lib/perf/evlist.c | 9 +++++++++ tools/lib/perf/include/internal/evlist.h | 2 ++ 2 files changed, 11 insertions(+) diff --git a/tools/lib/perf/evlist.c b/tools/lib/perf/evlist.c index b8b066d0dc5e..3acbbccc1901 100644 --- a/tools/lib/perf/evlist.c +++ b/tools/lib/perf/evlist.c @@ -738,3 +738,12 @@ int perf_evlist__nr_groups(struct perf_evlist *evlist) } return nr_groups; } + +void perf_evlist__go_system_wide(struct perf_evlist *evlist, struct perf_evsel *evsel) +{ + if (!evsel->system_wide) { + evsel->system_wide = true; + if (evlist->needs_map_propagation) + __perf_evlist__propagate_maps(evlist, evsel); + } +} diff --git a/tools/lib/perf/include/internal/evlist.h b/tools/lib/perf/include/internal/evlist.h index 3339bc2f1765..d86ffe8ed483 100644 --- a/tools/lib/perf/include/internal/evlist.h +++ b/tools/lib/perf/include/internal/evlist.h @@ -135,4 +135,6 @@ int perf_evlist__id_add_fd(struct perf_evlist *evlist, void perf_evlist__reset_id_hash(struct perf_evlist *evlist); void __perf_evlist__set_leader(struct list_head *list, struct perf_evsel *leader); + +void perf_evlist__go_system_wide(struct perf_evlist *evlist, struct perf_evsel *evsel); #endif /* __LIBPERF_INTERNAL_EVLIST_H */ From patchwork Wed Aug 2 07:49:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yang Jihong X-Patchwork-Id: 129705 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9f41:0:b0:3e4:2afc:c1 with SMTP id v1csp305526vqx; Wed, 2 Aug 2023 01:43:40 -0700 (PDT) X-Google-Smtp-Source: APBJJlGM/om+43s2HRy5eZSPO/yIZTZzWUv7tDDiZjVBDgGC+ztKlebnoqjbKc6z3elcCX8p/Qz3 X-Received: by 2002:a17:90b:1a8c:b0:262:ffc4:be7 with SMTP id ng12-20020a17090b1a8c00b00262ffc40be7mr14664494pjb.37.1690965820157; Wed, 02 Aug 2023 01:43:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690965820; cv=none; d=google.com; s=arc-20160816; b=W0z1+ARaFEh6p6JXTvpI8gHdPT2B3jta0jFZu8cWJV6StFkCONmfVy6EsCvtZmhABA uQmo/NoUWKZRk0UVrZ/MS0ufLj6jALNh5fW5I8pCxHUstBhrdPmXm4pJY0Bi2gzOqhcE uxvOXAKmo1zzGmGhpnLGEo+4YmG8zr4Hm1Vp12HYtCrvYhKkSKU+Pum8lX/VUq2YkaDl ao9C7oWKizDqYm0jMvMaXKM80Cc293vyqXzCREP2jsj5zYvYyrx0isBoZbj+dHnSUo0P nrJOIWbdXavPWYUC8TGjtPvPtKCadfmnP9+kvLQGgwIfVFYUyQuNzxCIBxoreYEIszze zt2A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=Op/wOwUQ6kgLn1wSpQN6Nxcm0PTNIgrnEOInp+6SHFk=; fh=Ib1wi7jRbo+eNDLEErvWCJx+cnUm87PkGFthhdFf08Y=; b=TCvRz4ELhBXKUrvOQ7Nvrg2mrNt8s97rhbO5DtPxWeSWdO/aLfIPQU104LC3gxrs3Z YIZnyE4I/marwdrnJwlAkP2NcSwM6fUONts69IAW/SCNDvPJ2yOG4bP6HuS4osUOqp8O Z1yqFJHYe8qtfzDmurSGOgMBAu/nGtX+PQoeM8ZzuOTIKeWT2NaWGJN4/hZAUlt5W5t3 seYRggf82HAzoME+H9/AMYuWvVWcjTjwSyLkKXPhCrOnQKaAj6JS049y1LiiaNuVK9Vx zxlV9Br5ya1MrYn1l4fHFGL4sYBilKbwB5tgLjRJfeIAAql3UTS8vGC+CHd9PegyL/Xq fOzg== 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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id j3-20020a170903028300b001bc11c02ae9si4819386plr.517.2023.08.02.01.43.26; Wed, 02 Aug 2023 01:43:40 -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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231428AbjHBHy7 (ORCPT + 99 others); Wed, 2 Aug 2023 03:54:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51692 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233650AbjHBHy2 (ORCPT ); Wed, 2 Aug 2023 03:54:28 -0400 Received: from szxga03-in.huawei.com (szxga03-in.huawei.com [45.249.212.189]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 497B24EF5; Wed, 2 Aug 2023 00:52:25 -0700 (PDT) Received: from kwepemm600003.china.huawei.com (unknown [172.30.72.56]) by szxga03-in.huawei.com (SkyGuard) with ESMTP id 4RG3z85c2zzLp2W; Wed, 2 Aug 2023 15:49:40 +0800 (CST) Received: from localhost.localdomain (10.67.174.95) by kwepemm600003.china.huawei.com (7.193.23.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Wed, 2 Aug 2023 15:52:22 +0800 From: Yang Jihong To: , , , , , , , , , , , , , , , CC: Subject: [PATCH v4 2/7] perf evlist: Add evlist__findnew_tracking_event() helper Date: Wed, 2 Aug 2023 07:49:43 +0000 Message-ID: <20230802074948.136468-3-yangjihong1@huawei.com> X-Mailer: git-send-email 2.30.GIT In-Reply-To: <20230802074948.136468-1-yangjihong1@huawei.com> References: <20230802074948.136468-1-yangjihong1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.67.174.95] X-ClientProxiedBy: dggems705-chm.china.huawei.com (10.3.19.182) To kwepemm600003.china.huawei.com (7.193.23.202) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773106175789830527 X-GMAIL-MSGID: 1773106175789830527 Currently, intel-bts, intel-pt, and arm-spe may add a dummy event for tracking to the evlist. We may need to search for the dummy event for some settings. Therefore, add evlist__findnew_tracking_event() helper. evlist__findnew_tracking_event() also deal with system_wide maps if system_wide is true. Signed-off-by: Yang Jihong --- tools/perf/builtin-record.c | 11 +++-------- tools/perf/util/evlist.c | 18 ++++++++++++++++++ tools/perf/util/evlist.h | 1 + 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index aec18db7ff23..ca83599cc50c 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -1295,14 +1295,9 @@ static int record__open(struct record *rec) */ if (opts->target.initial_delay || target__has_cpu(&opts->target) || perf_pmus__num_core_pmus() > 1) { - pos = evlist__get_tracking_event(evlist); - if (!evsel__is_dummy_event(pos)) { - /* Set up dummy event. */ - if (evlist__add_dummy(evlist)) - return -ENOMEM; - pos = evlist__last(evlist); - evlist__set_tracking_event(evlist, pos); - } + pos = evlist__findnew_tracking_event(evlist, false); + if (!pos) + return -ENOMEM; /* * Enable the dummy event when the process is forked for diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index 7ef43f72098e..25c3ebe2c2f5 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c @@ -1694,6 +1694,24 @@ void evlist__set_tracking_event(struct evlist *evlist, struct evsel *tracking_ev tracking_evsel->tracking = true; } +struct evsel *evlist__findnew_tracking_event(struct evlist *evlist, bool system_wide) +{ + struct evsel *evsel; + + evsel = evlist__get_tracking_event(evlist); + if (!evsel__is_dummy_event(evsel)) { + evsel = evlist__add_aux_dummy(evlist, system_wide); + if (!evsel) + return NULL; + + evlist__set_tracking_event(evlist, evsel); + } else if (system_wide) { + perf_evlist__go_system_wide(&evlist->core, &evsel->core); + } + + return evsel; +} + struct evsel *evlist__find_evsel_by_str(struct evlist *evlist, const char *str) { struct evsel *evsel; diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h index 664c6bf7b3e0..98e7ddb2bd30 100644 --- a/tools/perf/util/evlist.h +++ b/tools/perf/util/evlist.h @@ -387,6 +387,7 @@ bool evlist_cpu_iterator__end(const struct evlist_cpu_iterator *evlist_cpu_itr); struct evsel *evlist__get_tracking_event(struct evlist *evlist); void evlist__set_tracking_event(struct evlist *evlist, struct evsel *tracking_evsel); +struct evsel *evlist__findnew_tracking_event(struct evlist *evlist, bool system_wide); struct evsel *evlist__find_evsel_by_str(struct evlist *evlist, const char *str); From patchwork Wed Aug 2 07:49:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yang Jihong X-Patchwork-Id: 129713 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9f41:0:b0:3e4:2afc:c1 with SMTP id v1csp310732vqx; Wed, 2 Aug 2023 01:56:46 -0700 (PDT) X-Google-Smtp-Source: APBJJlFO/uo+mGbGWbRG66yI8LBF/TkzOAVAGGpKT0fsdU3mMPD5V5AHABtHtnrmqe/YenAzGCEN X-Received: by 2002:a17:90a:17e3:b0:267:f1d0:ca70 with SMTP id q90-20020a17090a17e300b00267f1d0ca70mr15487353pja.47.1690966606025; Wed, 02 Aug 2023 01:56:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690966606; cv=none; d=google.com; s=arc-20160816; b=xS0lHsgH394Vz1ifLkd8K8GhvC8yFqU1+Dar0ESgz3dNLUq6KCwx00pmVS23AELXiE uKXRSPMtQnFo6SsiTW+9CNRPO4pkzGb4HmoeN55dFDIotGgVzJH8Z74eqmBkxz2hMPP7 mWk5ZB62UGAvddfo/H+MjFLtpyt2v74kAZd9Wk1k3zxK+1dIa0rWTIzXKUkv8vHESRnL 2xcde43Bz04qnP1fvJYcXCKAvAMiEHnaTHgvqJn19m84ldVEWhxZNdpLWxt+iZzvAFkq vDGV4+H2zT03XGLhL7x8IrxfJcruPRpVXDPmw0YzMmuYCVwkS/+UlHbFNd5+Wnf/Wdtf LhoA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=NtcLzvfJcJjryJA02teAEGPORhMOqd51A8lQUNIf/+c=; fh=Ib1wi7jRbo+eNDLEErvWCJx+cnUm87PkGFthhdFf08Y=; b=i7rqLfXiQakfCnTz0vvtfZYU0ZtaLC0Qnxj4aD5CbWhmF9eV2xoWqv4bz9OQH8yfHn 1G66BaOAQEzNZFsaZ9dGhtNicQJ9UqkUExcVjop1aXWWw2P6ya60MolTFJVwtyFfyokm rTkvcH5xGNXsDKP/ZmW/USkxEtyx69mEC/rl59NM3HkrSiBrd26bcREg9IRV6OFNntfj wvDQ8sIWt0+p5daMu7WflQWB7fpDRf2Xmbl+pVBQLlxlmVoB4WA+fQz8b2xbqjZtbMyg E/uZrAxsTrayldktv45ETTduwFA3noIFHghBNpzirmOqDDtaa4JjuN9L+rTt1ff0FUUk irsw== 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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id fv22-20020a17090b0e9600b002630f63c654si495216pjb.125.2023.08.02.01.56.33; Wed, 02 Aug 2023 01:56:46 -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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233782AbjHBHzC (ORCPT + 99 others); Wed, 2 Aug 2023 03:55:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51766 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233659AbjHBHy2 (ORCPT ); Wed, 2 Aug 2023 03:54:28 -0400 Received: from szxga03-in.huawei.com (szxga03-in.huawei.com [45.249.212.189]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 498724EF6; Wed, 2 Aug 2023 00:52:26 -0700 (PDT) Received: from kwepemm600003.china.huawei.com (unknown [172.30.72.56]) by szxga03-in.huawei.com (SkyGuard) with ESMTP id 4RG3z92pG8zLp2c; Wed, 2 Aug 2023 15:49:41 +0800 (CST) Received: from localhost.localdomain (10.67.174.95) by kwepemm600003.china.huawei.com (7.193.23.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Wed, 2 Aug 2023 15:52:23 +0800 From: Yang Jihong To: , , , , , , , , , , , , , , , CC: Subject: [PATCH v4 3/7] perf record: Move setting dummy tracking before record__init_thread_masks() Date: Wed, 2 Aug 2023 07:49:44 +0000 Message-ID: <20230802074948.136468-4-yangjihong1@huawei.com> X-Mailer: git-send-email 2.30.GIT In-Reply-To: <20230802074948.136468-1-yangjihong1@huawei.com> References: <20230802074948.136468-1-yangjihong1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.67.174.95] X-ClientProxiedBy: dggems705-chm.china.huawei.com (10.3.19.182) To kwepemm600003.china.huawei.com (7.193.23.202) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773106999752201429 X-GMAIL-MSGID: 1773106999752201429 When dummy tracking go system wide, the mmap cpu mask is changed. Therefore, needs to be placed before record__init_thread_masks(). Dummy tracking has been set in record__open(), move it before record__init_thread_masks() and add a helper for unified processing. The sys_perf_event_open invoked is as follows: # perf --debug verbose=3 record -e cpu-clock -D 100 true Opening: cpu-clock ------------------------------------------------------------ perf_event_attr: type 1 (PERF_TYPE_SOFTWARE) size 136 config 0 (PERF_COUNT_SW_CPU_CLOCK) { sample_period, sample_freq } 4000 sample_type IP|TID|TIME|PERIOD|IDENTIFIER read_format ID|LOST disabled 1 inherit 1 freq 1 sample_id_all 1 exclude_guest 1 ------------------------------------------------------------ sys_perf_event_open: pid 10318 cpu 0 group_fd -1 flags 0x8 = 5 sys_perf_event_open: pid 10318 cpu 1 group_fd -1 flags 0x8 = 6 sys_perf_event_open: pid 10318 cpu 2 group_fd -1 flags 0x8 = 7 sys_perf_event_open: pid 10318 cpu 3 group_fd -1 flags 0x8 = 9 sys_perf_event_open: pid 10318 cpu 4 group_fd -1 flags 0x8 = 10 sys_perf_event_open: pid 10318 cpu 5 group_fd -1 flags 0x8 = 11 sys_perf_event_open: pid 10318 cpu 6 group_fd -1 flags 0x8 = 12 sys_perf_event_open: pid 10318 cpu 7 group_fd -1 flags 0x8 = 13 Opening: dummy:u ------------------------------------------------------------ perf_event_attr: type 1 (PERF_TYPE_SOFTWARE) size 136 config 0x9 (PERF_COUNT_SW_DUMMY) { sample_period, sample_freq } 1 sample_type IP|TID|TIME|IDENTIFIER read_format ID|LOST disabled 1 inherit 1 exclude_kernel 1 exclude_hv 1 mmap 1 comm 1 enable_on_exec 1 task 1 sample_id_all 1 exclude_guest 1 mmap2 1 comm_exec 1 ksymbol 1 bpf_event 1 ------------------------------------------------------------ sys_perf_event_open: pid 10318 cpu 0 group_fd -1 flags 0x8 = 14 sys_perf_event_open: pid 10318 cpu 1 group_fd -1 flags 0x8 = 15 sys_perf_event_open: pid 10318 cpu 2 group_fd -1 flags 0x8 = 16 sys_perf_event_open: pid 10318 cpu 3 group_fd -1 flags 0x8 = 17 sys_perf_event_open: pid 10318 cpu 4 group_fd -1 flags 0x8 = 18 sys_perf_event_open: pid 10318 cpu 5 group_fd -1 flags 0x8 = 19 sys_perf_event_open: pid 10318 cpu 6 group_fd -1 flags 0x8 = 20 sys_perf_event_open: pid 10318 cpu 7 group_fd -1 flags 0x8 = 21 Signed-off-by: Yang Jihong --- tools/perf/builtin-record.c | 59 +++++++++++++++++++++++-------------- 1 file changed, 37 insertions(+), 22 deletions(-) diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index ca83599cc50c..3ff9d972225e 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -908,6 +908,37 @@ static int record__config_off_cpu(struct record *rec) return off_cpu_prepare(rec->evlist, &rec->opts.target, &rec->opts); } +static int record__config_tracking_events(struct record *rec) +{ + struct record_opts *opts = &rec->opts; + struct evlist *evlist = rec->evlist; + struct evsel *evsel; + + /* + * For initial_delay, system wide or a hybrid system, we need to add a + * dummy event so that we can track PERF_RECORD_MMAP to cover the delay + * of waiting or event synthesis. + */ + if (opts->target.initial_delay || target__has_cpu(&opts->target) || + perf_pmus__num_core_pmus() > 1) { + evsel = evlist__findnew_tracking_event(evlist, false); + if (!evsel) + return -ENOMEM; + + /* + * Enable the dummy event when the process is forked for + * initial_delay, immediately for system wide. + */ + if (opts->target.initial_delay && !evsel->immediate && + !target__has_cpu(&opts->target)) + evsel->core.attr.enable_on_exec = 1; + else + evsel->immediate = 1; + } + + return 0; +} + static bool record__kcore_readable(struct machine *machine) { char kcore[PATH_MAX]; @@ -1288,28 +1319,6 @@ static int record__open(struct record *rec) struct record_opts *opts = &rec->opts; int rc = 0; - /* - * For initial_delay, system wide or a hybrid system, we need to add a - * dummy event so that we can track PERF_RECORD_MMAP to cover the delay - * of waiting or event synthesis. - */ - if (opts->target.initial_delay || target__has_cpu(&opts->target) || - perf_pmus__num_core_pmus() > 1) { - pos = evlist__findnew_tracking_event(evlist, false); - if (!pos) - return -ENOMEM; - - /* - * Enable the dummy event when the process is forked for - * initial_delay, immediately for system wide. - */ - if (opts->target.initial_delay && !pos->immediate && - !target__has_cpu(&opts->target)) - pos->core.attr.enable_on_exec = 1; - else - pos->immediate = 1; - } - evlist__config(evlist, opts, &callchain_param); evlist__for_each_entry(evlist, pos) { @@ -4235,6 +4244,12 @@ int cmd_record(int argc, const char **argv) goto out; } + err = record__config_tracking_events(rec); + if (err) { + pr_err("record__config_tracking_events failed, error %d\n", err); + goto out; + } + err = record__init_thread_masks(rec); if (err) { pr_err("Failed to initialize parallel data streaming masks\n"); From patchwork Wed Aug 2 07:49:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yang Jihong X-Patchwork-Id: 129696 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9f41:0:b0:3e4:2afc:c1 with SMTP id v1csp293979vqx; Wed, 2 Aug 2023 01:15:34 -0700 (PDT) X-Google-Smtp-Source: APBJJlHdowgBDoO/EPLU1OVoqv4lgkpPMLKJUTI2nTp6DjoaQck+K8yJ7Owm69ArY9FMd+oB0fJ3 X-Received: by 2002:a17:907:78d8:b0:993:e9b8:90f5 with SMTP id kv24-20020a17090778d800b00993e9b890f5mr4471210ejc.8.1690964134140; Wed, 02 Aug 2023 01:15:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690964134; cv=none; d=google.com; s=arc-20160816; b=kJVQLqZd8tZewBAVlTYWuYDbBk7nhCvCxr8o9AT80hMei41p7a5sXzCkOWy0hq6BLz TTNSY3hBXgGK0kn92fiu2AYTYLtxIXLjakRp9RzXZmdwqxXzlzQQE4bAo4BB9WyvbnUq TG3KHrXOMu/pYmdUke3ZgsvLaPAhWwX1unZQvZtCfzQvjqIxCj0mravvfpOZ1u40xldR XtQf+Cw44yepVjZBu74R09OoWGykqybwlI6kl02Uoxrwi2imkv+mpx40YyoPOKC4km9B /BnUExdEUo+sGeaklI2QbtRmlNJIO4rzCZIyBSE/y9iCvhJB9g1hFt+zfJVtdkyEl5hw dTPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=QM+FsYqbC+D94odwyhXBysQRc3mkw7F6UAzMxUChn6w=; fh=Ib1wi7jRbo+eNDLEErvWCJx+cnUm87PkGFthhdFf08Y=; b=ldgNY3doPudED97YN6qxS44TMxOePkUN65zJ5r5yQW4BPDjxXQdY775fzZBGCcIo88 ufMU39ge4QVLsYjNIw3x7XtLSyNf91W70Ql48t0/7SgWi6uZoTX4NA5DW/wNpaZ/NkSW kz3nBM7bZGzKPw9C45rEzlMVsk2Gh+8lyPgFhK/YsvgJfY28xSxTO6e2fl9g4wOFv8Fu VSqrEuebsDH6Xi5WG5duC7ehbIgpXmm9gZneKPpc2XpUDiMlmDLhmae8ALa/AlgEgF8M zmBDtUxeIBGIaiivCbv5EWkGMfFCg1sJGPtStpVHIUb59mE/favu6Wt5Zx3do3UgQg5H CjYA== 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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i20-20020a170906115400b0098e417a0c3bsi1047252eja.109.2023.08.02.01.15.09; Wed, 02 Aug 2023 01:15:34 -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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233788AbjHBHzF (ORCPT + 99 others); Wed, 2 Aug 2023 03:55:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51814 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229639AbjHBHya (ORCPT ); Wed, 2 Aug 2023 03:54:30 -0400 Received: from szxga03-in.huawei.com (szxga03-in.huawei.com [45.249.212.189]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DABE74EFC; Wed, 2 Aug 2023 00:52:26 -0700 (PDT) Received: from kwepemm600003.china.huawei.com (unknown [172.30.72.54]) by szxga03-in.huawei.com (SkyGuard) with ESMTP id 4RG3z96nbxzLp2h; Wed, 2 Aug 2023 15:49:41 +0800 (CST) Received: from localhost.localdomain (10.67.174.95) by kwepemm600003.china.huawei.com (7.193.23.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Wed, 2 Aug 2023 15:52:23 +0800 From: Yang Jihong To: , , , , , , , , , , , , , , , CC: Subject: [PATCH v4 4/7] perf record: Track sideband events for all CPUs when tracing selected CPUs Date: Wed, 2 Aug 2023 07:49:45 +0000 Message-ID: <20230802074948.136468-5-yangjihong1@huawei.com> X-Mailer: git-send-email 2.30.GIT In-Reply-To: <20230802074948.136468-1-yangjihong1@huawei.com> References: <20230802074948.136468-1-yangjihong1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.67.174.95] X-ClientProxiedBy: dggems705-chm.china.huawei.com (10.3.19.182) To kwepemm600003.china.huawei.com (7.193.23.202) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773104260861507885 X-GMAIL-MSGID: 1773104407678939350 User space tasks can migrate between CPUs, we need to track side-band events for all CPUs. The specific scenarios are as follows: CPU0 CPU1 perf record -C 0 start taskA starts to be created and executed -> PERF_RECORD_COMM and PERF_RECORD_MMAP events only deliver to CPU1 ...... | migrate to CPU0 | Running on CPU0 <----------/ ... perf record -C 0 stop Now perf samples the PC of taskA. However, perf does not record the PERF_RECORD_COMM and PERF_RECORD_MMAP events of taskA. Therefore, the comm and symbols of taskA cannot be parsed. The solution is to record sideband events for all CPUs when tracing selected CPUs. Because this modifies the default behavior, add related comments to the perf record man page. The sys_perf_event_open invoked is as follows: # perf --debug verbose=3 record -e cpu-clock -C 1 true Opening: cpu-clock ------------------------------------------------------------ perf_event_attr: type 1 (PERF_TYPE_SOFTWARE) size 136 config 0 (PERF_COUNT_SW_CPU_CLOCK) { sample_period, sample_freq } 4000 sample_type IP|TID|TIME|CPU|PERIOD|IDENTIFIER read_format ID|LOST disabled 1 inherit 1 freq 1 sample_id_all 1 exclude_guest 1 ------------------------------------------------------------ sys_perf_event_open: pid -1 cpu 1 group_fd -1 flags 0x8 = 5 Opening: dummy:u ------------------------------------------------------------ perf_event_attr: type 1 (PERF_TYPE_SOFTWARE) size 136 config 0x9 (PERF_COUNT_SW_DUMMY) { sample_period, sample_freq } 1 sample_type IP|TID|TIME|CPU|IDENTIFIER read_format ID|LOST inherit 1 exclude_kernel 1 exclude_hv 1 mmap 1 comm 1 task 1 sample_id_all 1 exclude_guest 1 mmap2 1 comm_exec 1 ksymbol 1 bpf_event 1 ------------------------------------------------------------ sys_perf_event_open: pid -1 cpu 0 group_fd -1 flags 0x8 = 6 sys_perf_event_open: pid -1 cpu 1 group_fd -1 flags 0x8 = 7 sys_perf_event_open: pid -1 cpu 2 group_fd -1 flags 0x8 = 9 sys_perf_event_open: pid -1 cpu 3 group_fd -1 flags 0x8 = 10 sys_perf_event_open: pid -1 cpu 4 group_fd -1 flags 0x8 = 11 sys_perf_event_open: pid -1 cpu 5 group_fd -1 flags 0x8 = 12 sys_perf_event_open: pid -1 cpu 6 group_fd -1 flags 0x8 = 13 sys_perf_event_open: pid -1 cpu 7 group_fd -1 flags 0x8 = 14 Signed-off-by: Yang Jihong --- tools/perf/Documentation/perf-record.txt | 3 ++ tools/perf/builtin-record.c | 45 +++++++++++++++++++++++- 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/tools/perf/Documentation/perf-record.txt b/tools/perf/Documentation/perf-record.txt index 680396c56bd1..dac53ece51ab 100644 --- a/tools/perf/Documentation/perf-record.txt +++ b/tools/perf/Documentation/perf-record.txt @@ -388,6 +388,9 @@ comma-separated list with no space: 0,1. Ranges of CPUs are specified with -: 0- In per-thread mode with inheritance mode on (default), samples are captured only when the thread executes on the designated CPUs. Default is to monitor all CPUs. +User space tasks can migrate between CPUs, so when tracing selected CPUs, +a dummy event is created to track sideband for all CPUs. + -B:: --no-buildid:: Do not save the build ids of binaries in the perf.data files. This skips diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 3ff9d972225e..468afeaac52d 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -908,10 +908,45 @@ static int record__config_off_cpu(struct record *rec) return off_cpu_prepare(rec->evlist, &rec->opts.target, &rec->opts); } +static bool record__tracking_system_wide(struct record *rec) +{ + struct record_opts *opts = &rec->opts; + struct evlist *evlist = rec->evlist; + struct evsel *evsel; + + /* + * If all (non-dummy) evsel have exclude_user, + * system_wide is not needed. + * + * all_kernel and all_user will overwrite exclude_kernel and + * exclude_user of attr in evsel__config(), here need to check + * all the three items. + * + * Sideband system wide if one of the following conditions is met: + * + * - all_user is set, and there is a non-dummy event + * - all_user and all_kernel are not set, and there is + * a non-dummy event without exclude_user + */ + evlist__for_each_entry(evlist, evsel) { + if (!evsel__is_dummy_event(evsel)) { + if (opts->all_user) + return true; + + if (!opts->all_user && !opts->all_kernel && + !evsel->core.attr.exclude_user) + return true; + } + } + + return false; +} + static int record__config_tracking_events(struct record *rec) { struct record_opts *opts = &rec->opts; struct evlist *evlist = rec->evlist; + bool system_wide = false; struct evsel *evsel; /* @@ -921,7 +956,15 @@ static int record__config_tracking_events(struct record *rec) */ if (opts->target.initial_delay || target__has_cpu(&opts->target) || perf_pmus__num_core_pmus() > 1) { - evsel = evlist__findnew_tracking_event(evlist, false); + + /* + * User space tasks can migrate between CPUs, so when tracing + * selected CPUs, sideband for all CPUs is still needed. + */ + if (!!opts->target.cpu_list && record__tracking_system_wide(rec)) + system_wide = true; + + evsel = evlist__findnew_tracking_event(evlist, system_wide); if (!evsel) return -ENOMEM; From patchwork Wed Aug 2 07:49:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yang Jihong X-Patchwork-Id: 129712 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9f41:0:b0:3e4:2afc:c1 with SMTP id v1csp310549vqx; Wed, 2 Aug 2023 01:56:14 -0700 (PDT) X-Google-Smtp-Source: APBJJlE+1by8W5PH1vJAyXRGJ4seVjzZkT1ppaW80JjrlggefI902X3v3bW9WglWoAMy/iforbOM X-Received: by 2002:a17:902:9a87:b0:1b8:c580:5fb9 with SMTP id w7-20020a1709029a8700b001b8c5805fb9mr12082290plp.14.1690966574175; Wed, 02 Aug 2023 01:56:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690966574; cv=none; d=google.com; s=arc-20160816; b=YKox53oNwNWQunSHyT6mE++AsDoAFy4hDwm6waiY7qSfag3YJmDEpGLUOReV+hGVfS CPtqVpoGpL4AzJaj0MnNYWc0x28xdjMMfaKDeqNf3vVijI9/eU82MzW8Q9lG/VWtKZ+7 IZun2fpDxFjmZ+K4Myj1EZIPS+xtJLb40SFCe/PHf+tJTWT1lREDYuKYNUdMUu3gc0rd uP3qCeldSpf0QuYkEQv2QV2Xqv3vFuGfFtZq5DsIV163TrqkQrKSIxiSpJEh+9ZSY8QB Pyfbyd/d7hWgAHQki+4+xaRW/i0av+aQrg712ywP5R9wt6KIgaD0TW8yNAYow+nIsyp4 zCZw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=rlpFh+0WlV9zQNK8fvdxNzunIkW3lUo5cRy2F8JYC4g=; fh=Ib1wi7jRbo+eNDLEErvWCJx+cnUm87PkGFthhdFf08Y=; b=xonzJPAOsbpr7adSmkLJXaoiRq+VMkK2fE3eKdfpPbs5KE8HXehkb0r3lzirHwfJc4 ty5fTAglqh+sWbBJluh8HTrGbEqQfMnWm4q620uL2udFa7wEVk5xifJVCEaR5dhXe69i unBN1Y49tadXZQmDkymPGlQqE9SIIfDPm7O4aocHsYVj8xCGQcMwJEQLRFjyu1oipfOc 9Hjq3ScRLDAnV8eVV4M7XyEvdcMBedmy6htWNsnCvyse3v7IFNvSkbxhkIEWav/5VaKi J//DjL0pmxOj33kfsDHPEp/C/UQimubSJDd9clXW9gjllDJ8Mu8Doq42A4bGSnSiZdJz 7C4g== 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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s1-20020a170902ea0100b001b8a70ee029si8728639plg.449.2023.08.02.01.56.01; Wed, 02 Aug 2023 01:56:14 -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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231909AbjHBHzN (ORCPT + 99 others); Wed, 2 Aug 2023 03:55:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51828 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233700AbjHBHyb (ORCPT ); Wed, 2 Aug 2023 03:54:31 -0400 Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9DE674EFE; Wed, 2 Aug 2023 00:52:27 -0700 (PDT) Received: from kwepemm600003.china.huawei.com (unknown [172.30.72.54]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4RG40J4DZwzVjxw; Wed, 2 Aug 2023 15:50:40 +0800 (CST) Received: from localhost.localdomain (10.67.174.95) by kwepemm600003.china.huawei.com (7.193.23.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Wed, 2 Aug 2023 15:52:24 +0800 From: Yang Jihong To: , , , , , , , , , , , , , , , CC: Subject: [PATCH v4 5/7] perf test: Update base-record & system-wide-dummy attr expected values for test-record-C0 Date: Wed, 2 Aug 2023 07:49:46 +0000 Message-ID: <20230802074948.136468-6-yangjihong1@huawei.com> X-Mailer: git-send-email 2.30.GIT In-Reply-To: <20230802074948.136468-1-yangjihong1@huawei.com> References: <20230802074948.136468-1-yangjihong1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.67.174.95] X-ClientProxiedBy: dggems705-chm.china.huawei.com (10.3.19.182) To kwepemm600003.china.huawei.com (7.193.23.202) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773106966547095029 X-GMAIL-MSGID: 1773106966547095029 1. Because a dummy sideband event is added to the sampling of specified CPUs. When evlist contains evsel of different sample_type, evlist__config() will change the default PERF_SAMPLE_ID bit to PERF_SAMPLE_IDENTIFICATION bit. The attr sample_type expected value of base-record and system-wide-dummy in test-record-C0 needs to be updated. 2. The perf record uses evlist__add_aux_dummy() instead of evlist__add_dummy() to add a dummy event. The expected value of system-wide-dummy attr needs to be updated. The perf test result is as follows: # ./perf test list 2>&1 | grep 'Setup struct perf_event_attr' 17: Setup struct perf_event_attr # ./perf test 17 17: Setup struct perf_event_attr : Ok Signed-off-by: Yang Jihong --- tools/perf/tests/attr/system-wide-dummy | 14 ++++++++------ tools/perf/tests/attr/test-record-C0 | 4 ++-- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/tools/perf/tests/attr/system-wide-dummy b/tools/perf/tests/attr/system-wide-dummy index 2f3e3eb728eb..a1e1d6a263bf 100644 --- a/tools/perf/tests/attr/system-wide-dummy +++ b/tools/perf/tests/attr/system-wide-dummy @@ -9,8 +9,10 @@ flags=8 type=1 size=136 config=9 -sample_period=4000 -sample_type=455 +sample_period=1 +# PERF_SAMPLE_IP | PERF_SAMPLE_TID | PERF_SAMPLE_TIME | +# PERF_SAMPLE_CPU | PERF_SAMPLE_IDENTIFIER +sample_type=65671 read_format=4|20 # Event will be enabled right away. disabled=0 @@ -18,12 +20,12 @@ inherit=1 pinned=0 exclusive=0 exclude_user=0 -exclude_kernel=0 -exclude_hv=0 +exclude_kernel=1 +exclude_hv=1 exclude_idle=0 mmap=1 comm=1 -freq=1 +freq=0 inherit_stat=0 enable_on_exec=0 task=1 @@ -32,7 +34,7 @@ precise_ip=0 mmap_data=0 sample_id_all=1 exclude_host=0 -exclude_guest=0 +exclude_guest=1 exclude_callchain_kernel=0 exclude_callchain_user=0 mmap2=1 diff --git a/tools/perf/tests/attr/test-record-C0 b/tools/perf/tests/attr/test-record-C0 index 317730b906dd..198e8429a1bf 100644 --- a/tools/perf/tests/attr/test-record-C0 +++ b/tools/perf/tests/attr/test-record-C0 @@ -10,9 +10,9 @@ cpu=0 enable_on_exec=0 # PERF_SAMPLE_IP | PERF_SAMPLE_TID | PERF_SAMPLE_TIME | -# PERF_SAMPLE_ID | PERF_SAMPLE_PERIOD +# PERF_SAMPLE_PERIOD | PERF_SAMPLE_IDENTIFIER # + PERF_SAMPLE_CPU added by -C 0 -sample_type=455 +sample_type=65927 # Dummy event handles mmaps, comm and task. mmap=0 From patchwork Wed Aug 2 07:49:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yang Jihong X-Patchwork-Id: 129711 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9f41:0:b0:3e4:2afc:c1 with SMTP id v1csp309902vqx; Wed, 2 Aug 2023 01:54:51 -0700 (PDT) X-Google-Smtp-Source: APBJJlHD4PYykDAs8MqAbV4ksmeEiMNNuDyDGGDrdzQ3kGWxTShtjodWtVd3bsIX8MEXUx8IdJuS X-Received: by 2002:a05:6a20:6a23:b0:13c:a846:366 with SMTP id p35-20020a056a206a2300b0013ca8460366mr19723890pzk.2.1690966490757; Wed, 02 Aug 2023 01:54:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690966490; cv=none; d=google.com; s=arc-20160816; b=XHjPz4bRqldpLxAJXVcHcxiU7QF4uA04S9Bty9kO5bErNy3kP6ikk1Wp1Mw/YHqwk/ /In3Bkik6PtbqQbWT9cQK+K3IAiYIfpMAowAICn8T9yko36uLdk+TmD6ITX9ci8gXtIk OUmLZXdhQLc5dOB+0pyrH5vyn0Xgwqocnu8wNam03ji0PTcm1h8pk3pCVd1El3K2UOZd NZNxF9Jt9fFXkxuvZJeMs7KMJf39i7iF4OMP2alcAVDdiTqwLaGyu5EvUIX5IE5JLZpq hQ6DBs+0emlSuaysKncr8qfGzTk9Q4e+/VLwSaD8vU6haqK1+gfmnuTdSMHiDN1KLmsY IC0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=iejwYS8mXOE1t7MAlx0EeafSG2w9VAh+amsIpKvufsg=; fh=Ib1wi7jRbo+eNDLEErvWCJx+cnUm87PkGFthhdFf08Y=; b=RjM1MDJX8GWMDsSC/GmG7efvSTYhYcvcGT32HkPKieoPSss/sDUd30HpSzI5AUgM3i jWAkoNp58O/gnAtthA0YpvE6Z940/8Zw+ZOQnkbxr74atEz7BQmSby+tknPXKrdNHyI4 w9UUIju8R/2UhOEdxhhxhEDbbMBI5VDzLJRR0IEotFd4J3ojxkM7VK8aiAo1D5DYJ7v8 mx38SIl8Lu6tlRf35zJDDHOX4Vt22t0u2TuOpaxuRvTCstXbjexgtgc8/5k1n6Ix8rMX vPJ4Vn5/dEpanrxk1QzLLFZbkXOGh3yVj39/tLHACVA9nqfN7FOpgVIwB5qAlUoHin6F fPXA== 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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f10-20020a63de0a000000b00564514df64bsi4473114pgg.897.2023.08.02.01.54.36; Wed, 02 Aug 2023 01:54:50 -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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232897AbjHBHzL (ORCPT + 99 others); Wed, 2 Aug 2023 03:55:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51198 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233728AbjHBHyb (ORCPT ); Wed, 2 Aug 2023 03:54:31 -0400 Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A05C95242; Wed, 2 Aug 2023 00:52:27 -0700 (PDT) Received: from kwepemm600003.china.huawei.com (unknown [172.30.72.55]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4RG3yR67FRztRn2; Wed, 2 Aug 2023 15:49:03 +0800 (CST) Received: from localhost.localdomain (10.67.174.95) by kwepemm600003.china.huawei.com (7.193.23.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Wed, 2 Aug 2023 15:52:24 +0800 From: Yang Jihong To: , , , , , , , , , , , , , , , CC: Subject: [PATCH v4 6/7] perf test: Add test case for record sideband events Date: Wed, 2 Aug 2023 07:49:47 +0000 Message-ID: <20230802074948.136468-7-yangjihong1@huawei.com> X-Mailer: git-send-email 2.30.GIT In-Reply-To: <20230802074948.136468-1-yangjihong1@huawei.com> References: <20230802074948.136468-1-yangjihong1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.67.174.95] X-ClientProxiedBy: dggems705-chm.china.huawei.com (10.3.19.182) To kwepemm600003.china.huawei.com (7.193.23.202) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773106879122703464 X-GMAIL-MSGID: 1773106879122703464 Add a new test case to record sideband events for all CPUs when tracing selected CPUs Test result: # ./perf test list 2>&1 | grep 'perf record sideband tests' 95: perf record sideband tests # ./perf test 95 95: perf record sideband tests : Ok Signed-off-by: Yang Jihong --- tools/perf/tests/shell/record_sideband.sh | 44 +++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100755 tools/perf/tests/shell/record_sideband.sh diff --git a/tools/perf/tests/shell/record_sideband.sh b/tools/perf/tests/shell/record_sideband.sh new file mode 100755 index 000000000000..2ecf00011cb1 --- /dev/null +++ b/tools/perf/tests/shell/record_sideband.sh @@ -0,0 +1,44 @@ +#!/bin/sh +# perf record sideband tests +# SPDX-License-Identifier: GPL-2.0 + +set -e + +err=0 +perfdata=$(mktemp /tmp/__perf_test.perf.data.XXXXX) + +can_cpu_wide() +{ + if ! perf record -o ${perfdata} -BN --no-bpf-event -C $1 true 2>&1 >/dev/null + then + echo "record sideband test [Skipped cannot record cpu$1]" + err=2 + fi + + rm -f ${perfdata} + return $err +} + +test_system_wide_tracking() +{ + # Need CPU 0 and CPU 1 + can_cpu_wide 0 || return 0 + can_cpu_wide 1 || return 0 + + # Record on CPU 0 a task running on CPU 1 + perf record -BN --no-bpf-event -o ${perfdata} -C 0 -- taskset --cpu-list 1 true + + # Should get MMAP events from CPU 1 + mmap_cnt=`perf script -i ${perfdata} --show-mmap-events -C 1 2>/dev/null | grep MMAP | wc -l` + + rm -f ${perfdata} + + if [ ${mmap_cnt} -gt 0 ] ; then + return 0 + fi + + echo "Failed to record MMAP events on CPU 1 when tracing CPU 0" + return 1 +} + +test_system_wide_tracking From patchwork Wed Aug 2 07:49:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yang Jihong X-Patchwork-Id: 129697 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9f41:0:b0:3e4:2afc:c1 with SMTP id v1csp297734vqx; Wed, 2 Aug 2023 01:24:40 -0700 (PDT) X-Google-Smtp-Source: APBJJlEUsR5T0xdF4GaAUp8AwRHFQCLqICJry9QDBtt+QhvvwbZzVsnHFTM4oskLgt/LaJXPaSc9 X-Received: by 2002:a05:6a20:8e2a:b0:137:4bff:7c92 with SMTP id y42-20020a056a208e2a00b001374bff7c92mr15804793pzj.0.1690964679676; Wed, 02 Aug 2023 01:24:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690964679; cv=none; d=google.com; s=arc-20160816; b=op7e7PWEtL86o6tPk9quWpsdpoSk+o0sqbkwYRhnmfzP6na4Vo7pueV+UU6rZnja0M HmFvi6siPd2U/Xhr4m30QKqDNzdnvDBDbkE7v2aeEXySlbcpDj863eaUhmTP8BqGp195 0JVVPq0WLidiUFWlYB+PZFEafmtCpVRNHSqu72jqsWvbIANHXvyeidjUXk530DVN4Cnr +CFUFY1rubeyOCpmhh2ylEinUHqTRDHV/Uy5crVCN4Y0epzTp+MNCbiWDDs1WQIpJWdb A9kuJOE4EmuWaa0ArPoYuIUXiTFQUmmeBg3CbEED4jRb84mmAz7MCtsMDWdyHCoHjfsb 7RzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=JOUwhvppmFzhMBDIfloajUyKoLO/Rxi5/FcJH2nZIhs=; fh=Ib1wi7jRbo+eNDLEErvWCJx+cnUm87PkGFthhdFf08Y=; b=w7xVT6j6JB4PVNU8LbpfuTe/elAX2nP34ynduJgCOp4eZ/aeS7y9xvUCDGNdW+yn57 EaoY+nC1pgt7dV2dtG1OL0f/BWt5Xi6DwVfGJI2QnLEb783iuQAzGB2VrNO69qHxGUSD WXIVBsYVPvHepYI5mGXVQBooVIzUodXkobhAWslsVHOdDCnCHbHexFYfWAOyBl7ht++6 i4GoYn8vkAkY7djsp7EqSV2tSx1wOfCAoXX9thj6YQ70QAbYgWQV88YrBwFMWdZa11ao /bT2TETCz0dZq29omi4bgHdCYjQST9Y5T1rNwTEdiqwBwV6GRseRA4L6tBSvPX1onuIw uhqA== 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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k186-20020a6384c3000000b0055ffa8eb7f5si2892753pgd.28.2023.08.02.01.24.25; Wed, 02 Aug 2023 01:24:39 -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=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230474AbjHBHzP (ORCPT + 99 others); Wed, 2 Aug 2023 03:55:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51870 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231490AbjHBHye (ORCPT ); Wed, 2 Aug 2023 03:54:34 -0400 Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 601305254; Wed, 2 Aug 2023 00:52:28 -0700 (PDT) Received: from kwepemm600003.china.huawei.com (unknown [172.30.72.54]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4RG4173dLrzrS62; Wed, 2 Aug 2023 15:51:23 +0800 (CST) Received: from localhost.localdomain (10.67.174.95) by kwepemm600003.china.huawei.com (7.193.23.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Wed, 2 Aug 2023 15:52:25 +0800 From: Yang Jihong To: , , , , , , , , , , , , , , , CC: Subject: [PATCH v4 7/7] perf test: Add perf_event_attr test for record selected CPUs exclude_user Date: Wed, 2 Aug 2023 07:49:48 +0000 Message-ID: <20230802074948.136468-8-yangjihong1@huawei.com> X-Mailer: git-send-email 2.30.GIT In-Reply-To: <20230802074948.136468-1-yangjihong1@huawei.com> References: <20230802074948.136468-1-yangjihong1@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.67.174.95] X-ClientProxiedBy: dggems705-chm.china.huawei.com (10.3.19.182) To kwepemm600003.china.huawei.com (7.193.23.202) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773104979575392654 X-GMAIL-MSGID: 1773104979575392654 If all (non-dummy) evsel have exclude_user, system_wide sideband is not needed. Add this test scenario. Signed-off-by: Yang Jihong --- .../perf/tests/attr/test-record-C0-all-kernel | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 tools/perf/tests/attr/test-record-C0-all-kernel diff --git a/tools/perf/tests/attr/test-record-C0-all-kernel b/tools/perf/tests/attr/test-record-C0-all-kernel new file mode 100644 index 000000000000..2d7549277c1e --- /dev/null +++ b/tools/perf/tests/attr/test-record-C0-all-kernel @@ -0,0 +1,32 @@ +[config] +command = record +args = --no-bpf-event --all-kernel -C 0 kill >/dev/null 2>&1 +ret = 1 + +[event:base-record] +cpu=0 + +# no enable on exec for CPU attached +enable_on_exec=0 + +# PERF_SAMPLE_IP | PERF_SAMPLE_TID | PERF_SAMPLE_TIME | +# PERF_SAMPLE_PERIOD | PERF_SAMPLE_IDENTIFIER +# + PERF_SAMPLE_CPU added by -C 0 +sample_type=65927 + +# Dummy event handles mmaps, comm and task. +mmap=0 +comm=0 +task=0 + +# exclude_user for all-kernel option +exclude_user=1 + +[event:system-wide-dummy] + +# system_wide is not need for all (non-dummy) events have exclude_user +cpu=0 + +# exclude_user for all-kernel option +exclude_user=1 +exclude_kernel=0