Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
To: <igt-dev@lists.freedesktop.org>,
	Lionel G Landwerlin <lionel.g.landwerlin@intel.com>,
	Ashutosh Dixit <ashutosh.dixit@intel.com>
Subject: Re: [igt-dev] [PATCH i-g-t v6 32/36] tools/i915-perf: add option to printout reports data
Date: Mon, 10 Oct 2022 16:03:52 -0700	[thread overview]
Message-ID: <Y0Sk2NISMkbIIIbD@unerlige-ril> (raw)
In-Reply-To: <20221010214215.5378-33-umesh.nerlige.ramappa@intel.com>

On Mon, Oct 10, 2022 at 09:42:11PM +0000, Umesh Nerlige Ramappa wrote:
>From: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

>
>This is helpful to get an idea of how timelines of reports should be
>built.
>
>Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
>---
> tools/i915-perf/i915_perf_reader.c | 88 ++++++++++++++++++++----------
> 1 file changed, 58 insertions(+), 30 deletions(-)
>
>diff --git a/tools/i915-perf/i915_perf_reader.c b/tools/i915-perf/i915_perf_reader.c
>index 9be1a9fc..bcd40624 100644
>--- a/tools/i915-perf/i915_perf_reader.c
>+++ b/tools/i915-perf/i915_perf_reader.c
>@@ -53,7 +53,8 @@ usage(void)
> 	       "     --help,    -h             Print this screen\n"
> 	       "     --counters, -c c1,c2,...  List of counters to display values for.\n"
> 	       "                               Use 'all' to display all counters.\n"
>-	       "                               Use 'list' to list available counters.\n");
>+	       "                               Use 'list' to list available counters.\n"
>+	       "     --reports, -r             Print out data per report.\n");
> }
>
> static struct intel_perf_logical_counter *
>@@ -165,12 +166,49 @@ get_logical_counters(struct intel_perf_metric_set *metric_set,
> 	return counters;
> }
>
>+static void
>+print_report_deltas(const struct intel_perf_data_reader *reader,
>+		    const struct drm_i915_perf_record_header *i915_report0,
>+		    const struct drm_i915_perf_record_header *i915_report1,
>+		    struct intel_perf_logical_counter **counters,
>+		    uint32_t n_counters)
>+{
>+	struct intel_perf_accumulator accu;
>+
>+	intel_perf_accumulate_reports(&accu,
>+				      reader->perf, reader->metric_set,
>+				      i915_report0, i915_report1);
>+
>+	for (uint32_t c = 0; c < n_counters; c++) {
>+		struct intel_perf_logical_counter *counter = counters[c];
>+
>+		switch (counter->storage) {
>+		case INTEL_PERF_LOGICAL_COUNTER_STORAGE_UINT64:
>+		case INTEL_PERF_LOGICAL_COUNTER_STORAGE_UINT32:
>+		case INTEL_PERF_LOGICAL_COUNTER_STORAGE_BOOL32:
>+			fprintf(stdout, "   %s: %" PRIu64 "\n",
>+				counter->symbol_name, counter->read_uint64(reader->perf,
>+									   reader->metric_set,
>+									   accu.deltas));
>+			break;
>+		case INTEL_PERF_LOGICAL_COUNTER_STORAGE_DOUBLE:
>+		case INTEL_PERF_LOGICAL_COUNTER_STORAGE_FLOAT:
>+			fprintf(stdout, "   %s: %f\n",
>+				counter->symbol_name, counter->read_float(reader->perf,
>+									  reader->metric_set,
>+									  accu.deltas));
>+			break;
>+		}
>+	}
>+}
>+
> int
> main(int argc, char *argv[])
> {
> 	const struct option long_options[] = {
> 		{"help",             no_argument, 0, 'h'},
> 		{"counters",   required_argument, 0, 'c'},
>+		{"reports",          no_argument, 0, 'r'},
> 		{0, 0, 0, 0}
> 	};
> 	struct intel_perf_data_reader reader;
>@@ -179,8 +217,9 @@ main(int argc, char *argv[])
> 	const char *counter_names = NULL;
> 	int32_t n_counters;
> 	int fd, opt;
>+	bool print_reports = false;
>
>-	while ((opt = getopt_long(argc, argv, "hc:", long_options, NULL)) != -1) {
>+	while ((opt = getopt_long(argc, argv, "hc:r", long_options, NULL)) != -1) {
> 		switch (opt) {
> 		case 'h':
> 			usage();
>@@ -188,6 +227,9 @@ main(int argc, char *argv[])
> 		case 'c':
> 			counter_names = optarg;
> 			break;
>+		case 'r':
>+			print_reports = true;
>+			break;
> 		default:
> 			fprintf(stderr, "Internal error: "
> 				"unexpected getopt value: %d\n", opt);
>@@ -268,11 +310,6 @@ main(int argc, char *argv[])
>
> 	for (uint32_t i = 0; i < reader.n_timelines; i++) {
> 		const struct intel_perf_timeline_item *item = &reader.timelines[i];
>-		const struct drm_i915_perf_record_header *i915_report0 =
>-			reader.records[item->record_start];
>-		const struct drm_i915_perf_record_header *i915_report1 =
>-			reader.records[item->record_end];
>-		struct intel_perf_accumulator accu;
>
> 		fprintf(stdout, "Time: CPU=0x%016" PRIx64 "-0x%016" PRIx64
> 			" GPU=0x%016" PRIx64 "-0x%016" PRIx64"\n",
>@@ -281,29 +318,20 @@ main(int argc, char *argv[])
> 		fprintf(stdout, "hw_id=0x%x %s\n",
> 			item->hw_id, item->hw_id == 0xffffffff ? "(idle)" : "");
>
>-		intel_perf_accumulate_reports(&accu,
>-					      reader.perf, reader.metric_set,
>-					      i915_report0, i915_report1);
>-
>-		for (uint32_t c = 0; c < n_counters; c++) {
>-			struct intel_perf_logical_counter *counter = counters[c];
>-
>-			switch (counter->storage) {
>-			case INTEL_PERF_LOGICAL_COUNTER_STORAGE_UINT64:
>-			case INTEL_PERF_LOGICAL_COUNTER_STORAGE_UINT32:
>-			case INTEL_PERF_LOGICAL_COUNTER_STORAGE_BOOL32:
>-				fprintf(stdout, "   %s: %" PRIu64 "\n",
>-					counter->symbol_name, counter->read_uint64(reader.perf,
>-										   reader.metric_set,
>-										   accu.deltas));
>-				break;
>-			case INTEL_PERF_LOGICAL_COUNTER_STORAGE_DOUBLE:
>-			case INTEL_PERF_LOGICAL_COUNTER_STORAGE_FLOAT:
>-				fprintf(stdout, "   %s: %f\n",
>-					counter->symbol_name, counter->read_float(reader.perf,
>-										  reader.metric_set,
>-										  accu.deltas));
>-				break;
>+		print_report_deltas(&reader,
>+				    reader.records[item->record_start],
>+				    reader.records[item->record_end],
>+				    counters, n_counters);
>+
>+		if (print_reports) {
>+			for (uint32_t r = item->record_start; r < item->record_end; r++) {
>+				fprintf(stdout, " report%i = %s\n",
>+					r - item->record_start,
>+					intel_perf_read_report_reason(reader.perf, reader.records[r]));
>+				print_report_deltas(&reader,
>+						    reader.records[r],
>+						    reader.records[r + 1],
>+						    counters, n_counters);
> 			}
> 		}
> 	}
>-- 
>2.25.1
>

  reply	other threads:[~2022-10-10 23:03 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-10 21:41 [igt-dev] [PATCH i-g-t v6 00/36] Add DG2 OA test Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 01/36] i915/perf: Check regularly if we are done reading reports Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 02/36] i915/perf: Fix OA short_reads test Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 03/36] i915/perf: Check return value from getparam Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 04/36] i915/perf: Limit sseu-config tests for gen11 Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 05/36] i915/perf: Account for OA sampling interval in polling test Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 06/36] i915/perf: Define OA report types and fix oa-formats test Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 07/36] i915/perf: Use ARRAY_SIZE consistently for num_properties Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 08/36] i915/perf: Use gt in perf tests and lib Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 09/36] i915/perf: Explicitly state rendercopy needs for a test Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 10/36] i915/perf: Skip tests that use rendercopy Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 11/36] i915/perf: Add OA formats for DG2 Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 12/36] i915/perf: Fix CS timestamp vs OA timstamp mismatch Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 13/36] i915/perf: Wait longer for rc6 residency in DG2 Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 14/36] lib/i915/perf: implement report accumulation for new format Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 15/36] lib/i915/perf: fixup conversion script for XEHPSDV Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 16/36] lib/i915/perf: make warning message more helpful Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 17/36] lib/i915/perf: expose new operators for codegen Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 18/36] tools/i915-perf-recorder: add ability to select device Umesh Nerlige Ramappa
2022-10-10 22:06   ` Umesh Nerlige Ramappa
2022-10-11  6:22   ` Petri Latvala
2022-10-18 22:52     ` Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 19/36] lib/i915/perf: fixup report validity Umesh Nerlige Ramappa
2022-10-10 22:08   ` Umesh Nerlige Ramappa
2022-10-10 21:41 ` [igt-dev] [PATCH i-g-t v6 20/36] lib/i915/perf: add a helper to read timestamps Umesh Nerlige Ramappa
2022-10-10 22:22   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 21/36] lib/i915/perf: store bit shifting required for OA timestamps Umesh Nerlige Ramappa
2022-10-10 22:52   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 22/36] lib/i915/perf: indentation fix Umesh Nerlige Ramappa
2022-10-10 22:52   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 23/36] tools/i915-perf-recorder: capture OA & CS frequencies Umesh Nerlige Ramappa
2022-10-10 22:54   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 24/36] tools/i915-perf: make timestamp range easier to compare Umesh Nerlige Ramappa
2022-10-10 22:54   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 25/36] tools/i915-perf: printout CPU clock used Umesh Nerlige Ramappa
2022-10-10 22:55   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 26/36] tools/i915-perf: record remaining perf data on exit Umesh Nerlige Ramappa
2022-10-10 22:55   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 27/36] lib/i915/perf: add support for new EuDualSubslicesTotalCount var Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 28/36] lib/i915/perf-config: extend the device info Umesh Nerlige Ramappa
2022-10-10 22:57   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 29/36] i915/perf: update import script Umesh Nerlige Ramappa
2022-10-10 23:00   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 30/36] lib/i915/perf: add a raw timestamp utility Umesh Nerlige Ramappa
2022-10-10 23:00   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 31/36] lib/i915/perf: add helper function to get report reason Umesh Nerlige Ramappa
2022-10-10 23:02   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 32/36] tools/i915-perf: add option to printout reports data Umesh Nerlige Ramappa
2022-10-10 23:03   ` Umesh Nerlige Ramappa [this message]
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 33/36] lib/i915: prepare codegen for new ACM/DG2 variables Umesh Nerlige Ramappa
2022-10-10 23:04   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 34/36] lib/i915/perf: Add ACM GT1 metrics Umesh Nerlige Ramappa
2022-10-18 22:49   ` Umesh Nerlige Ramappa
2022-10-10 21:42 ` [igt-dev] [PATCH i-g-t v6 35/36] lib/i915/perf: Add ACM GT2 metrics Umesh Nerlige Ramappa
2022-10-18 22:49   ` Umesh Nerlige Ramappa
2022-10-10 22:01 ` [igt-dev] [PATCH i-g-t v6 00/36] Add DG2 OA test Umesh Nerlige Ramappa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Y0Sk2NISMkbIIIbD@unerlige-ril \
    --to=umesh.nerlige.ramappa@intel.com \
    --cc=ashutosh.dixit@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=lionel.g.landwerlin@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox