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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id AACEEC77B61 for ; Thu, 27 Apr 2023 21:00:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229832AbjD0VAy convert rfc822-to-8bit (ORCPT ); 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-Google-Smtp-Source: ACHHUZ5kVD5gERQXzSBOXyhV079FHn4ViQgX/oMFP1P3ERlbBzWOrMhQB7zIgrJtOzwXz9iUymQ9fW5GpLWs63mD2Bk= 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 Precedence: bulk List-ID: X-Mailing-List: linux-perf-users@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