Received: by 2002:a05:6358:9144:b0:117:f937:c515 with SMTP id r4csp1203424rwr; Thu, 27 Apr 2023 14:04:16 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ56vEBku1FBui24GGff5WClk95+04xLqC8WDNLWV+rBboBFWD20WRaknYXc9Ex/Rw736G9/ X-Received: by 2002:a17:902:db03:b0:1a9:7707:80b1 with SMTP id m3-20020a170902db0300b001a9770780b1mr3293427plx.67.1682629455726; Thu, 27 Apr 2023 14:04:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1682629455; cv=none; d=google.com; s=arc-20160816; b=gERHyWous/Di9XvynBY3be8bKpyi5jiOiJi4pjPi/Lfx824ign75e6ZrmJ19+RhdJ1 J4amz9X/YAbOkDh9rGwiNHxNpHA1JO16v7wilvG9EEual159ZphyF5T/FI+k/1/fUqOG 6M3x9t65yYjBA9BGRb9wEhQJdqtjl+UEP3hx9zTCNLPS7sMb4v8MZIm2kQrsBUm5Xmnb 00LIqWpEHf5vtfmNnplL/d5gvYIHfJgqYZImWthwW3nliSFq3Rr04BRO70pezIEipgVQ A+owXegmr8RmwihrEvQwYlKE4K8hk6abnOJ1pdJ88IUSGkmz2S52cD11oPK9QU0OyZZx cOiw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version; bh=bkIvCQEULwiNVbD2j2SbhQjvvV4fcTuOx9or5wg/938=; b=BBPgFe3fkQNy6K7A5DiOM+/3y8dlNZDU8mFcekJmA8h2tX2g1PZB1C78TpmexoQFRJ 3uTe6jsQ/aMUUi+hRagVBMbF9invxSgMFwJCCsDkK7MTReaDV8JldTUOq1I9ZggsFdbR C0bDzsOOXHfAQb7df7V5WcE5qeiGt1uL8tsbUAR3UkaRxZcqldD2GKVy+YBb7qAKAySn jfWYs5jHjH9SrOLb6GZTPCAdQcCP5hHBdPJ9eMrWLAuo8LuzvfMCm8uPTbhRI++s5R51 l3g6GnlG4BiRKeQiC2PLAL5+KdDQFL7w+m45FD0AAxdBSnZlY5C7pGRC957M0hl3qFNU y6Zg== 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 o6-20020a170902d4c600b0019f33c0d583si20932695plg.315.2023.04.27.14.04.01; Thu, 27 Apr 2023 14:04:15 -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 S229925AbjD0VAy convert rfc822-to-8bit (ORCPT + 99 others); Thu, 27 Apr 2023 17:00:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48724 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229508AbjD0VAx (ORCPT ); Thu, 27 Apr 2023 17:00:53 -0400 Received: from mail-yb1-f176.google.com (mail-yb1-f176.google.com [209.85.219.176]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D52C91FCF; Thu, 27 Apr 2023 14:00:51 -0700 (PDT) Received: by mail-yb1-f176.google.com with SMTP id 3f1490d57ef6-b9246a5f3feso15938328276.1; Thu, 27 Apr 2023 14:00:51 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682629251; x=1685221251; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4kvYxpjeLPo7WDMrzQZYkWfCYagia5wd3uIpVtMajJE=; b=Ll03KH4f0DkA/YO7rDLoRaA4RvqAc8oVh/i8sYiSQXgNa0kAyPxCouxU7/wR/aI6f7 7qrXV+V9x/igzMdeV1fCzsLIN4PeCRxsHfrcau26fgL7NpWNOTeOOPUrS1ZDB2S9arJD lynlBkkkznfiMzqJMaFnGAvvqrm4G+4BdGsTLBPLD8Y5NuCkX0SZGoXQijCVVP2soFpZ zgexOXE9REaypbDqVAT6cmrNVSNXu3UKsULHFkUnbwZGTfM4mYrs1cjj9iXni8ls0+Lq e6+vQ48G8Q67bhoIP4ridw0FJOjlPmemr/ouJLDV7l27hGYpvE8mMoUmTWkKVr72krqK /xaA== X-Gm-Message-State: AC+VfDwHKi5KLJuKPjGjBTgIN+3jjUiMcS8AvP4DIl3afvq3PVH+lT59 6/Xx23/pZX1OQiv+v2a2qQsn6tQMZh6LJ/B7uh1UiMST X-Received: by 2002:a25:ad12:0:b0:b99:4af6:185d with SMTP id y18-20020a25ad12000000b00b994af6185dmr2138029ybi.6.1682629250755; Thu, 27 Apr 2023 14:00:50 -0700 (PDT) MIME-Version: 1.0 References: <20230426070050.1315519-1-irogers@google.com> <20230426070050.1315519-2-irogers@google.com> <77dd1ab3-9c94-c04a-24de-f8c192a6c8d2@linux.intel.com> In-Reply-To: From: Namhyung Kim Date: Thu, 27 Apr 2023 14:00:39 -0700 Message-ID: Subject: Re: [PATCH v1 01/40] perf stat: Introduce skippable evsels To: Ian Rogers Cc: "Liang, Kan" , Arnaldo Carvalho de Melo , Ahmad Yasin , Peter Zijlstra , Ingo Molnar , Stephane Eranian , Andi Kleen , Perry Taylor , Samantha Alt , Caleb Biggers , Weilin Wang , Edward Baker , Mark Rutland , Alexander Shishkin , Jiri Olsa , Adrian Hunter , Florian Fischer , Rob Herring , Zhengjun Xing , John Garry , Kajol Jain , Sumanth Korikkar , Thomas Richter , Tiezhu Yang , Ravi Bangoria , Leo Yan , Yang Jihong , James Clark , Suzuki Poulouse , Kang Minchul , Athira Rajeev , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8BIT 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_H2,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 Hello, On Thu, Apr 27, 2023 at 1:21 PM Ian Rogers wrote: > > On Thu, Apr 27, 2023 at 11:54 AM Liang, Kan wrote: > > > > > > > > On 2023-04-26 3:00 a.m., Ian Rogers wrote: > > > Perf stat with no arguments will use default events and metrics. These > > > events may fail to open even with kernel and hypervisor disabled. When > > > these fail then the permissions error appears even though they were > > > implicitly selected. This is particularly a problem with the automatic > > > selection of the TopdownL1 metric group on certain architectures like > > > Skylake: > > > > > > ``` > > > $ perf stat true > > > Error: > > > Access to performance monitoring and observability operations is limited. > > > Consider adjusting /proc/sys/kernel/perf_event_paranoid setting to open > > > access to performance monitoring and observability operations for processes > > > without CAP_PERFMON, CAP_SYS_PTRACE or CAP_SYS_ADMIN Linux capability. > > > More information can be found at 'Perf events and tool security' document: > > > https://www.kernel.org/doc/html/latest/admin-guide/perf-security.html > > > perf_event_paranoid setting is 2: > > > -1: Allow use of (almost) all events by all users > > > Ignore mlock limit after perf_event_mlock_kb without CAP_IPC_LOCK > > >> = 0: Disallow raw and ftrace function tracepoint access > > >> = 1: Disallow CPU event access > > >> = 2: Disallow kernel profiling > > > To make the adjusted perf_event_paranoid setting permanent preserve it > > > in /etc/sysctl.conf (e.g. kernel.perf_event_paranoid = ) > > > ``` > > > > > > This patch adds skippable evsels that when they fail to open won't > > > fail and won't appear in output. The TopdownL1 events, from the metric > > > group, are marked as skippable. This turns the failure above to: > > > > > > ``` > > > $ perf stat true > > > > > > Performance counter stats for 'true': > > > > > > 1.26 msec task-clock:u # 0.328 CPUs utilized > > > 0 context-switches:u # 0.000 /sec > > > 0 cpu-migrations:u # 0.000 /sec > > > 49 page-faults:u # 38.930 K/sec > > > 176,449 cycles:u # 0.140 GHz (48.99%) > > > 122,905 instructions:u # 0.70 insn per cycle > > > 28,264 branches:u # 22.456 M/sec > > > 2,405 branch-misses:u # 8.51% of all branches > > > > > > 0.003834565 seconds time elapsed > > > > > > 0.000000000 seconds user > > > 0.004130000 seconds sys > > > ``` > > > > If the same command runs with root permission, a different output will > > be displayed as below: > > > > $ sudo ./perf stat sleep 1 > > > > Performance counter stats for 'sleep 1': > > > > 0.97 msec task-clock # 0.001 CPUs > > utilized > > 1 context-switches # 1.030 K/sec > > 0 cpu-migrations # 0.000 /sec > > 67 page-faults # 69.043 K/sec > > 1,135,552 cycles # 1.170 GHz > > (50.51%) > > 1,126,446 instructions # 0.99 insn > > per cycle > > 252,904 branches # 260.615 M/sec > > 7,297 branch-misses # 2.89% of > > all branches > > 22,518 CPU_CLK_UNHALTED.REF_XCLK # 23.205 > > M/sec > > 56,994 INT_MISC.RECOVERY_CYCLES_ANY # 58.732 M/sec > > > > The last two events are useless. > > You missed the system wide (-a) flag. > > Thanks, > Ian > > > It's not reliable to rely on perf_event_open()/kernel to tell whether > > an event is available or skippable. Kernel wouldn't check a specific event. > > > > The patch works for the non-root mode is just because the event requires > > root permission. It's rejected by the kernel because of lacking > > permission. But if the same command runs with root privileges, the trash > > events are printed as above. > > > > I think a better way is to check the HW capability and decided whether > > to append the TopdownL1 metrics. > > > > https://lore.kernel.org/lkml/20230427182906.3411695-1-kan.liang@linux.intel.com/ Maybe we can also check if the event is actually enabled like checking the enabled_time. Then skip the skippable and not enabled ones. Thanks, Namhyung