From patchwork Thu Feb 29 00:18:00 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Rogers X-Patchwork-Id: 208106 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:2097:b0:108:e6aa:91d0 with SMTP id gs23csp90567dyb; Wed, 28 Feb 2024 16:23:28 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCXiTLpSfmPCUOX1W1W0AkufylK/SHC4s+l5WLe9br0wspsEMJHlSiucmPS3Og+y893hSKfIAD3nufSrmLEytmQMmrRkdA== X-Google-Smtp-Source: AGHT+IHuc3hxvVDA9ACQKHQ59zmkp0mm5+Eigk0NGpFBkJriOr7maLEcSa6IJDh8RNnR0iz5couy X-Received: by 2002:a0c:ebc3:0:b0:68f:3ba2:232e with SMTP id k3-20020a0cebc3000000b0068f3ba2232emr770232qvq.0.1709166208335; Wed, 28 Feb 2024 16:23:28 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709166208; cv=pass; d=google.com; s=arc-20160816; b=rNHgMlDooyBA4hj/jPL4Jeha8WS9ZOy9+tBkShtC1TXRn1ofCzY9SHBjnAYHh+VEdq gmx7tDkppM9vZJbZ4EjP3vZ1SgCNNofSNLhA9A2VBn0165YWrKQW8zfMDFt6WZcITwBh fU7M1LuurFRevQ1OwcnEpBwJp61VgegopJI1T5nGZPQfihO8wnoQn1wsss/02r3BdTPW L1xDRPhlcr8CXzIXiD1M4Lw/V6ogAoxz5itdxO05AscVWInknjzPGriV0f3zOrnbiPUl 6p9O1qheZbTbKS8EzsHT90ujN5XAGiLLeubQW0MS27GN9eQWRJymuSRJBzHKAYUdiEeM 5H1Q== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=to:from:subject:references:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:in-reply-to:date :dkim-signature; bh=ssvmfSzbf4Bf2vyw+vKAKxfn6gLVPgVaJ3+6XRQ1Cxo=; fh=h3JJ+yuo4jbvp1F+/QIzK7hM5I8D2NXT/Q+V5EhQVGk=; b=X9yZjORVyYE2vHE6yp6LLdJ3f1fenJN4V1rn6sMrgd8GmJJooiAU1sfTVQqK0HdbWr i0fmKuTxkyE1N2E3YxGnkXdgxkOi8BUTh8C7FcWJcXk2fkc16oIcCmImOmu5Deq8UNnA N+2M66Z0J77TRb1BRv6rMnFN6+RwdZRX8K+UKabBIchD7d/PWsNlqT+RDxJ/u+Gw54Pe 5Lgdn3vYoJCGmPbgHE+5rzdN+87EkGfI2R+Z7O/fR+bdmPbnhCIVaMA2D1izA0YFQO6C pyAWGqJCgU00rtWRO6dyG7s8AZrMWPWEuldxWPhicFWsXhAwSXppANkXOUJJnBj69EKm 6PfA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=qrth8MBR; arc=pass (i=1 spf=pass spfdomain=flex--irogers.bounces.google.com dkim=pass dkdomain=google.com dmarc=pass fromdomain=google.com); spf=pass (google.com: domain of linux-kernel+bounces-85908-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-85908-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id t1-20020a05621421a100b0068c6cb82b51si258891qvc.192.2024.02.28.16.23.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Feb 2024 16:23:28 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-85908-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=qrth8MBR; arc=pass (i=1 spf=pass spfdomain=flex--irogers.bounces.google.com dkim=pass dkdomain=google.com dmarc=pass fromdomain=google.com); spf=pass (google.com: domain of linux-kernel+bounces-85908-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-85908-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 1657C1C220A0 for ; Thu, 29 Feb 2024 00:23:28 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9EB465A0FC; Thu, 29 Feb 2024 00:19:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="qrth8MBR" Received: from mail-yw1-f202.google.com (mail-yw1-f202.google.com [209.85.128.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EC8B35CDF1 for ; Thu, 29 Feb 2024 00:18:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709165941; cv=none; b=QyPc9+8DhmdQfKi6WGGUheCBzz+BvVeSs9p+7wY9P+LGYvVwzaLjUSkuiqxxPOOCeteAqzLV/afcLvGi+c1fvZyBgOo8wclmdL+6wWmJ3C2Tq3P8S5XnG6tmeu0dhzqkt6QWlDoDRhsNTNrkyiT0GrO8Bvmq9LAfC05QwbnV2hA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709165941; c=relaxed/simple; bh=n24bfMvbsLQrhJDf7paSd47VFWDE5Eb6tLHa7+2e2r0=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=cn0QmnwPbj9T4Eg2lHT6Reb6p2/JUN/Tbn2vBm2yF0tkloKoQTEUfkNjX+GomOeY/+kJHQlfH0vh0d6QXy1coNg81W/4kRCRrNQ6yz8NyThMfnphqx17FnZ/on/BJ6ECEqNvO/9P6/yrcCb0C9RcOtN4y+WJKgqqaVpc1tr9J2c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=qrth8MBR; arc=none smtp.client-ip=209.85.128.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-6092c637278so5462317b3.0 for ; Wed, 28 Feb 2024 16:18:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709165939; x=1709770739; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=ssvmfSzbf4Bf2vyw+vKAKxfn6gLVPgVaJ3+6XRQ1Cxo=; b=qrth8MBREDCJTrleDBrvcaqUHpkrb00Y19EVfjNfUN9B8oZw1XTRDF0lXpEPIlrxgP 5ENyMP3H/WNzf1eAsoLe3aoIb1RBSZbg/PiVPaewoI8buU2LtG1k4HLbjgr4mGfGDvlD 0/2KND3NLY3iV38VfUIUcnAx3m9dBPsi2XarNSlLycUmRDWI6nbN4ivRD/8gIYSPsCly bb9fGbNMPCREHF2oIVpF3RITj/rX5+cN0m5DciPNRcPbSimBMdwNLSCarEpzbReqn/dF SpphuyVhD+5sUOodIZUqM2Lh0qNbnEt5hRJ+UXSCcaqbzbGiFXIk7FfEf3y2KIaZw67I RIqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709165939; x=1709770739; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ssvmfSzbf4Bf2vyw+vKAKxfn6gLVPgVaJ3+6XRQ1Cxo=; b=HZRlIIsu83BiNW+xkyEGyhvkYFVZnGa1CUZjJAI2IPo0uL+rIle0w6vWKQJhvfEAa9 Klhj/RkAbRkNQ7lMBJqc02aT/0Xbz+m6eJX/dqR+M1NZwmNe04XS3YrUNnFY+2BrNEiz sqfzG5OFpeB2ZTR2o4R6WB86AsrCB5GJOOBeV8eKZIJmVAoKS1zllESdOnRowEUJiFzF Yq8iRH9B2+y1VrTOtnmtdXBd16IJjArz/vingFKPdm/3ZrpG+m4e6kEa/2eNCM+39jBv IEv5033JreLTuYQcbp3ztB5pzrDY84qWmBKX+Ar+VeIzxNFVcqvr9oQaQeVbgEdbSDR2 vuRA== X-Forwarded-Encrypted: i=1; AJvYcCUbSIX+Xe8hOvnL4l121cUSCe1l3yIi9dp6Z3PwnKKVY7RgTEgqqx+2febMkycVwOS1r36A21VG8H+38OURASEcMRw/rxaAY8cwbiou X-Gm-Message-State: AOJu0Yz+TnlECOQpjfRie2J2Qno/Oxbbdx5MPIyWmzmuU8+FWQipVz4M oIQDBYRBtQ0UuuLbP2Lq6NKe619USeY1b1kZrW9e8yONiGtAoRLpODMMkCgAKolERuF55JN38xR ijrsU1w== X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:77dc:144c:334e:e2dd]) (user=irogers job=sendgmr) by 2002:a05:6902:230a:b0:dcc:6bf0:2eb6 with SMTP id do10-20020a056902230a00b00dcc6bf02eb6mr41891ybb.6.1709165939066; Wed, 28 Feb 2024 16:18:59 -0800 (PST) Date: Wed, 28 Feb 2024 16:18:00 -0800 In-Reply-To: <20240229001806.4158429-1-irogers@google.com> Message-Id: <20240229001806.4158429-16-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240229001806.4158429-1-irogers@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Subject: [PATCH v1 15/20] perf jevents: Add mem_bw metric for Intel From: Ian Rogers To: Perry Taylor , Samantha Alt , Caleb Biggers , Weilin Wang , Edward Baker , Andi Kleen , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , John Garry , Kan Liang , Jing Zhang , Thomas Richter , James Clark , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, Stephane Eranian X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1792190665790348023 X-GMAIL-MSGID: 1792190665790348023 Break down memory bandwidth using uncore counters. For many models this matches the memory_bandwidth_* metrics, but these metrics aren't made available on all models. Add support for free running counters. Query the event json when determining which what events/counters are available. Signed-off-by: Ian Rogers --- tools/perf/pmu-events/intel_metrics.py | 62 ++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/tools/perf/pmu-events/intel_metrics.py b/tools/perf/pmu-events/intel_metrics.py index e373f87d499d..8d02be83b491 100755 --- a/tools/perf/pmu-events/intel_metrics.py +++ b/tools/perf/pmu-events/intel_metrics.py @@ -800,6 +800,67 @@ def IntelLdSt() -> Optional[MetricGroup]: ], description = "Breakdown of load/store instructions") +def UncoreMemBw() -> Optional[MetricGroup]: + mem_events = [] + try: + mem_events = json.load(open(f"{os.path.dirname(os.path.realpath(__file__))}" + f"/arch/x86/{args.model}/uncore-memory.json")) + except: + pass + + ddr_rds = 0 + ddr_wrs = 0 + ddr_total = 0 + for x in mem_events: + if "EventName" in x: + name = x["EventName"] + if re.search("^UNC_MC[0-9]+_RDCAS_COUNT_FREERUN", name): + ddr_rds += Event(name) + elif re.search("^UNC_MC[0-9]+_WRCAS_COUNT_FREERUN", name): + ddr_wrs += Event(name) + #elif re.search("^UNC_MC[0-9]+_TOTAL_REQCOUNT_FREERUN", name): + # ddr_total += Event(name) + + if ddr_rds == 0: + try: + ddr_rds = Event("UNC_M_CAS_COUNT.RD") + ddr_wrs = Event("UNC_M_CAS_COUNT.WR") + except: + return None + + ddr_total = ddr_rds + ddr_wrs + + pmm_rds = 0 + pmm_wrs = 0 + try: + pmm_rds = Event("UNC_M_PMM_RPQ_INSERTS") + pmm_wrs = Event("UNC_M_PMM_WPQ_INSERTS") + except: + pass + + pmm_total = pmm_rds + pmm_wrs + + scale = 64 / 1_000_000 + return MetricGroup("mem_bw", [ + MetricGroup("mem_bw_ddr", [ + Metric("mem_bw_ddr_read", "DDR memory read bandwidth", + d_ratio(ddr_rds, interval_sec), f"{scale}MB/s"), + Metric("mem_bw_ddr_write", "DDR memory write bandwidth", + d_ratio(ddr_wrs, interval_sec), f"{scale}MB/s"), + Metric("mem_bw_ddr_total", "DDR memory write bandwidth", + d_ratio(ddr_total, interval_sec), f"{scale}MB/s"), + ], description = "DDR Memory Bandwidth"), + MetricGroup("mem_bw_pmm", [ + Metric("mem_bw_pmm_read", "PMM memory read bandwidth", + d_ratio(pmm_rds, interval_sec), f"{scale}MB/s"), + Metric("mem_bw_pmm_write", "PMM memory write bandwidth", + d_ratio(pmm_wrs, interval_sec), f"{scale}MB/s"), + Metric("mem_bw_pmm_total", "PMM memory write bandwidth", + d_ratio(pmm_total, interval_sec), f"{scale}MB/s"), + ], description = "PMM Memory Bandwidth") if pmm_rds != 0 else None, + ], description = "Memory Bandwidth") + + all_metrics = MetricGroup("", [ Cycles(), Idle(), @@ -815,6 +876,7 @@ all_metrics = MetricGroup("", [ IntelMlp(), IntelPorts(), IntelSwpf(), + UncoreMemBw(), ]) if args.metricgroups: