From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6A85D42395; Wed, 11 Jan 2023 01:32:26 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0B44440E25; Wed, 11 Jan 2023 01:32:26 +0100 (CET) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id 4B5A84021E for ; Wed, 11 Jan 2023 01:32:23 +0100 (CET) Received: by linux.microsoft.com (Postfix, from userid 1086) id BAC7120B92AE; Tue, 10 Jan 2023 16:32:22 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com BAC7120B92AE DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1673397142; bh=BDiXPrMF95SvRkuusjSnznjwDuIWQetNvcyCnSCreOg=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=MQ2tH1SKLqCccjjyDxRM/+EZsCnFZ0PPgXfYK0SZfe9loBkCb019myi8jRlnTJLAP 5A83J+omJz5ap7JcqN1kRykmFCsiXv2HKjN/vKnWtQNIJYi3fc6eM+6GYaTfKyNAqN 3J6a/jriVHs6nxlvq1YCd/wDJIju9kPAHsMuGMY0= Date: Tue, 10 Jan 2023 16:32:22 -0800 From: Tyler Retzlaff To: Tomasz Duszynski , bruce.richardson@intel.com, mb@smartsharesystems.com Cc: dev@dpdk.org, thomas@monjalon.net, jerinj@marvell.com, mb@smartsharesystems.com, Ruifeng.Wang@arm.com, mattias.ronnblom@ericsson.com, zhoumin@loongson.cn Subject: Re: [PATCH v5 0/4] add support for self monitoring Message-ID: <20230111003222.GA24460@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net> References: <20221213104350.3218167-1-tduszynski@marvell.com> <20230110234642.1188550-1-tduszynski@marvell.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230110234642.1188550-1-tduszynski@marvell.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org hi, don't interpret this as an objection to the functionality but this looks like a clear example of something that doesn't belong in the EAL. has there been a discussion as to whether or not this should be in a separate library? a basic test is whether or not an implementation exists or can be reasonably provided for all platforms and that isn't strictly evident here. red flag is to see yet more code being added conditionally compiled for a single platform. Morten, Bruce comments? thanks On Wed, Jan 11, 2023 at 12:46:38AM +0100, Tomasz Duszynski wrote: > This series adds self monitoring support i.e allows to configure and > read performance measurement unit (PMU) counters in runtime without > using perf utility. This has certain adventages when application runs on > isolated cores with nohz_full kernel parameter. > > Events can be read directly using rte_pmu_read() or using dedicated > tracepoint rte_eal_trace_pmu_read(). The latter will cause events to be > stored inside CTF file. > > By design, all enabled events are grouped together and the same group > is attached to lcores that use self monitoring funtionality. > > Events are enabled by names, which need to be read from standard > location under sysfs i.e > > /sys/bus/event_source/devices/PMU/events > > where PMU is a core pmu i.e one measuring cpu events. As of today > raw events are not supported. > > v5: > - address review comments > - fix sign extension while reading pmu on x86 > - fix regex mentioned in doc > - various minor changes/improvements here and there > v4: > - fix freeing mem detected by debug_autotest > v3: > - fix shared build > v2: > - fix problems reported by test build infra > > Tomasz Duszynski (4): > eal: add generic support for reading PMU events > eal/arm: support reading ARM PMU events in runtime > eal/x86: support reading Intel PMU events in runtime > eal: add PMU support to tracing library > > app/test/meson.build | 1 + > app/test/test_pmu.c | 47 +++ > app/test/test_trace_perf.c | 4 + > doc/guides/prog_guide/profile_app.rst | 13 + > doc/guides/prog_guide/trace_lib.rst | 32 ++ > lib/eal/arm/include/meson.build | 1 + > lib/eal/arm/include/rte_pmu_pmc.h | 39 ++ > lib/eal/arm/meson.build | 4 + > lib/eal/arm/rte_pmu.c | 104 +++++ > lib/eal/common/eal_common_trace_points.c | 3 + > lib/eal/common/meson.build | 3 + > lib/eal/common/pmu_private.h | 41 ++ > lib/eal/common/rte_pmu.c | 504 +++++++++++++++++++++++ > lib/eal/include/meson.build | 1 + > lib/eal/include/rte_eal_trace.h | 10 + > lib/eal/include/rte_pmu.h | 202 +++++++++ > lib/eal/linux/eal.c | 4 + > lib/eal/version.map | 7 + > lib/eal/x86/include/meson.build | 1 + > lib/eal/x86/include/rte_pmu_pmc.h | 33 ++ > 20 files changed, 1054 insertions(+) > create mode 100644 app/test/test_pmu.c > create mode 100644 lib/eal/arm/include/rte_pmu_pmc.h > create mode 100644 lib/eal/arm/rte_pmu.c > create mode 100644 lib/eal/common/pmu_private.h > create mode 100644 lib/eal/common/rte_pmu.c > create mode 100644 lib/eal/include/rte_pmu.h > create mode 100644 lib/eal/x86/include/rte_pmu_pmc.h > > -- > 2.34.1