From patchwork Thu Feb 2 19:22:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Liang, Kan" X-Patchwork-Id: 52154 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp434764wrn; Thu, 2 Feb 2023 11:42:02 -0800 (PST) X-Google-Smtp-Source: AK7set+FHlrKB8ewOtwPskTKQQ5l8V9cMQ9mLDxrqECTqgIDS7Ws8agJGQT+QMWC8TuWPMvACXIu X-Received: by 2002:a17:907:6d89:b0:878:52cd:9006 with SMTP id sb9-20020a1709076d8900b0087852cd9006mr8658940ejc.69.1675366922430; Thu, 02 Feb 2023 11:42:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675366922; cv=none; d=google.com; s=arc-20160816; b=v4DfTPFQbb5uBHn6/Q2KzPFbpWSSjJTjU6H1PmgZwtW8HUAN2MkXpTA/+iNyqsG4XV vVyi4MpLK0kxMt2WR5BupbZ4/YB2/fTmfxuZti+uCEpR32XXJfFEqwNOp/VqndB2gqze Yty2STXeozQCTpkY55z8i0ZmwvgV1RATawABAQUlTyJ4nn0ilhP291n9OxcveFd0JJU1 OFoFqNo2nE2zmRGoPeAEP5cYAVFuZVb+j1NAZF2gRrDglx4EegQbWMAPApR878vsia+d 5x4n7UcaxUt2SUg4I84hYDN4mn1OP4SDhEEB2+REadqBr/TOeTvm+QoNxRWRG5/RSoi+ ngxg== 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 :dkim-signature; bh=EEGw+awQWl7jZgnqWQUG1Vdeq1k7JQgAZhDUdzRqRho=; b=ZbyklrX4nUkPvjhSCwCT0ElyrfKTfCJjeQSyx5zw0Ja4ZcHsSYIuEsTHN/V/SCv16j F9tRBx6tNh1QRVbGKlp6AiG3zk0JCZ09DgF56k+OlX6Rg+9KCTZZnD/9edKEheRFDFIv Dkar1oH4WFK4wK7jMjqtk3O50bOX+8ti3cD5dnieLwlck7DYb11g3KARdDa+DhxdzoTM waMZelfRZqUHlDNCCyRbMB2tnVJ1RbgrV5aQ+KXUFTKLhvUrDmSC4F/CL5Ndvnu7pOXx 9KcmjhIw7g0mY+ucCr/6b5ICSXSKAbVsfwYNqNRBtJXSf+zrLlELufMnmMQ7C4mRufkD 4bhg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=AJVY6HJL; 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=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id up17-20020a170907cc9100b0088f14ed898asi448963ejc.725.2023.02.02.11.41.38; Thu, 02 Feb 2023 11:42:02 -0800 (PST) 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; dkim=pass header.i=@intel.com header.s=Intel header.b=AJVY6HJL; 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=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233197AbjBBTWb (ORCPT + 99 others); Thu, 2 Feb 2023 14:22:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53342 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233185AbjBBTW3 (ORCPT ); Thu, 2 Feb 2023 14:22:29 -0500 Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EAFBE6CCAA for ; Thu, 2 Feb 2023 11:22:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1675365747; x=1706901747; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=v295qWvEx3Nv9XHY8DcBdTrp9kA8mC30r+JvmTkGgi4=; b=AJVY6HJLj21CIHLt7iILdqF/KKar0fBbvd+t3Z0Nfsw7Cxo3sEZlKwko P9dcoHI+w95XKMCDhbj4P3LfTkwP3CeGFn+Zok22zHy0+C2P/jM2XOsKI 6DFLlkSj7gX+NIVF+6ZM3NdUpXvosgtMhdiSOmv/Qwzprjlze+d5s2uD/ QjSDOYMrDWlp/2t3QYq5+rKnQMyhc7EC3gksNLwjeGYP+RheENebwmJ7E C8AizMsoP3YhBeWzZh97v3Bu9WacoDaOXVaOGPMB2DDg+cqExxTah5Ddu SxLjuKPIrIQviQQ5yQYahrTFh69aHl0AKo1c/rb1rY3bcjKo1N83PyPEF w==; X-IronPort-AV: E=McAfee;i="6500,9779,10609"; a="312194496" X-IronPort-AV: E=Sophos;i="5.97,268,1669104000"; d="scan'208";a="312194496" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Feb 2023 11:22:12 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10609"; a="697793086" X-IronPort-AV: E=Sophos;i="5.97,268,1669104000"; d="scan'208";a="697793086" Received: from kanliang-dev.jf.intel.com ([10.165.154.102]) by orsmga001.jf.intel.com with ESMTP; 02 Feb 2023 11:22:11 -0800 From: kan.liang@linux.intel.com To: acme@kernel.org, peterz@infradead.org, mingo@redhat.com, linux-kernel@vger.kernel.org Cc: ak@linux.intel.com, eranian@google.com, irogers@google.com, Kan Liang Subject: [PATCH V3 2/3] perf script: Support Retire Latency Date: Thu, 2 Feb 2023 11:22:08 -0800 Message-Id: <20230202192209.1795329-2-kan.liang@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20230202192209.1795329-1-kan.liang@linux.intel.com> References: <20230202192209.1795329-1-kan.liang@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,SPF_HELO_NONE,SPF_NONE 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: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756749546164206947?= X-GMAIL-MSGID: =?utf-8?q?1756749546164206947?= From: Kan Liang The Retire Latency field is added in the var3_w of the PERF_SAMPLE_WEIGHT_STRUCT. The Retire Latency reports the number of elapsed core clocks between the retirement of the instruction indicated by the Instruction Pointer field of the PEBS record and the retirement of the prior instruction. That's quite useful to display the information with perf script. Add a new field retire_lat for the Retire Latency information. Reviewed-by: Andi Kleen Signed-off-by: Kan Liang --- Change from V2 - Rebase on top of tmp.perf/core - Update perf-script.txt tools/perf/Documentation/perf-script.txt | 2 +- tools/perf/builtin-script.c | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/tools/perf/Documentation/perf-script.txt b/tools/perf/Documentation/perf-script.txt index a2ebadc9d948..777a0d8ba7d1 100644 --- a/tools/perf/Documentation/perf-script.txt +++ b/tools/perf/Documentation/perf-script.txt @@ -134,7 +134,7 @@ OPTIONS srcline, period, iregs, uregs, brstack, brstacksym, flags, bpf-output, brstackinsn, brstackinsnlen, brstackoff, callindent, insn, insnlen, synth, phys_addr, metric, misc, srccode, ipc, data_page_size, code_page_size, ins_lat, - machine_pid, vcpu, cgroup. + machine_pid, vcpu, cgroup, retire_lat. Field list can be prepended with the type, trace, sw or hw, to indicate to which event type the field list applies. e.g., -F sw:comm,tid,time,ip,sym and -F trace:time,cpu,trace diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index cb6b34da4eef..3fe9b1c4caaf 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c @@ -132,6 +132,7 @@ enum perf_output_field { PERF_OUTPUT_MACHINE_PID = 1ULL << 37, PERF_OUTPUT_VCPU = 1ULL << 38, PERF_OUTPUT_CGROUP = 1ULL << 39, + PERF_OUTPUT_RETIRE_LAT = 1ULL << 40, }; struct perf_script { @@ -203,6 +204,7 @@ struct output_option { {.str = "machine_pid", .field = PERF_OUTPUT_MACHINE_PID}, {.str = "vcpu", .field = PERF_OUTPUT_VCPU}, {.str = "cgroup", .field = PERF_OUTPUT_CGROUP}, + {.str = "retire_lat", .field = PERF_OUTPUT_RETIRE_LAT}, }; enum { @@ -278,7 +280,7 @@ static struct { PERF_OUTPUT_ADDR | PERF_OUTPUT_DATA_SRC | PERF_OUTPUT_WEIGHT | PERF_OUTPUT_PHYS_ADDR | PERF_OUTPUT_DATA_PAGE_SIZE | PERF_OUTPUT_CODE_PAGE_SIZE | - PERF_OUTPUT_INS_LAT, + PERF_OUTPUT_INS_LAT | PERF_OUTPUT_RETIRE_LAT, .invalid_fields = PERF_OUTPUT_TRACE | PERF_OUTPUT_BPF_OUTPUT, }, @@ -551,6 +553,10 @@ static int evsel__check_attr(struct evsel *evsel, struct perf_session *session) return -EINVAL; } + if (PRINT_FIELD(RETIRE_LAT) && + evsel__check_stype(evsel, PERF_SAMPLE_WEIGHT_STRUCT, "WEIGHT_STRUCT", PERF_OUTPUT_RETIRE_LAT)) + return -EINVAL; + return 0; } @@ -2187,6 +2193,9 @@ static void process_event(struct perf_script *script, if (PRINT_FIELD(INS_LAT)) fprintf(fp, "%16" PRIu16, sample->ins_lat); + if (PRINT_FIELD(RETIRE_LAT)) + fprintf(fp, "%16" PRIu16, sample->retire_lat); + if (PRINT_FIELD(IP)) { struct callchain_cursor *cursor = NULL; @@ -3876,7 +3885,7 @@ int cmd_script(int argc, const char **argv) "brstacksym,flags,data_src,weight,bpf-output,brstackinsn," "brstackinsnlen,brstackoff,callindent,insn,insnlen,synth," "phys_addr,metric,misc,srccode,ipc,tod,data_page_size," - "code_page_size,ins_lat,machine_pid,vcpu,cgroup", + "code_page_size,ins_lat,machine_pid,vcpu,cgroup,retire_lat", parse_output_fields), OPT_BOOLEAN('a', "all-cpus", &system_wide, "system-wide collection from all CPUs"),