From: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
To: igt-dev@lists.freedesktop.org
Subject: [igt-dev] [PATCH 27/29] tools/i915-perf: add option to printout reports data
Date: Tue, 25 Oct 2022 20:07:07 +0000 [thread overview]
Message-ID: <20221025200709.83314-28-umesh.nerlige.ramappa@intel.com> (raw)
In-Reply-To: <20221025200709.83314-1-umesh.nerlige.ramappa@intel.com>
From: Lionel Landwerlin <lionel.g.landwerlin@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>
Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@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
next prev parent reply other threads:[~2022-10-25 20:07 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-25 20:06 [igt-dev] [PATCH 00/29] Second part of DG2 OA tests Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 01/29] lib/i915/perf-config: Bump up the soversion Umesh Nerlige Ramappa
2022-10-25 22:05 ` Lionel Landwerlin
2022-10-25 20:06 ` [igt-dev] [PATCH 02/29] i915/perf: Check regularly if we are done reading reports Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 03/29] i915/perf: Fix OA short_reads test Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 04/29] i915/perf: Check return value from getparam Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 05/29] i915/perf: Limit sseu-config tests for gen11 Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 06/29] i915/perf: Account for OA sampling interval in polling test Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 07/29] i915/perf: Define OA report types and fix oa-formats test Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 08/29] i915/perf: Use ARRAY_SIZE consistently for num_properties Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 09/29] i915/perf: Use gt in perf tests and lib Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 10/29] i915/perf: Explicitly state rendercopy needs for a test Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 11/29] i915/perf: Skip tests that use rendercopy Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 12/29] i915/perf: Add OA formats for DG2 Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 13/29] i915/perf: Fix CS timestamp vs OA timstamp mismatch Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 14/29] i915/perf: Wait longer for rc6 residency in DG2 Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 15/29] lib/i915/perf: implement report accumulation for new format Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 16/29] tools/i915-perf-recorder: add ability to select device Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 17/29] lib/i915/perf: fixup report validity Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 18/29] lib/i915/perf: add a helper to read timestamps Umesh Nerlige Ramappa
2022-10-25 20:06 ` [igt-dev] [PATCH 19/29] lib/i915/perf: store bit shifting required for OA timestamps Umesh Nerlige Ramappa
2022-10-25 20:07 ` [igt-dev] [PATCH 20/29] lib/i915/perf: indentation fix Umesh Nerlige Ramappa
2022-10-25 20:07 ` [igt-dev] [PATCH 21/29] tools/i915-perf-recorder: capture OA & CS frequencies Umesh Nerlige Ramappa
2022-10-25 20:07 ` [igt-dev] [PATCH 22/29] tools/i915-perf: make timestamp range easier to compare Umesh Nerlige Ramappa
2022-10-25 20:07 ` [igt-dev] [PATCH 23/29] tools/i915-perf: printout CPU clock used Umesh Nerlige Ramappa
2022-10-25 20:07 ` [igt-dev] [PATCH 24/29] tools/i915-perf: record remaining perf data on exit Umesh Nerlige Ramappa
2022-10-25 20:07 ` [igt-dev] [PATCH 25/29] lib/i915/perf: add a raw timestamp utility Umesh Nerlige Ramappa
2022-10-25 20:07 ` [igt-dev] [PATCH 26/29] lib/i915/perf: add helper function to get report reason Umesh Nerlige Ramappa
2022-10-25 20:07 ` Umesh Nerlige Ramappa [this message]
2022-10-25 20:07 ` [igt-dev] [PATCH 28/29] lib/i915: add new ACM/DG2 format in codegen Umesh Nerlige Ramappa
2022-10-25 20:07 ` [igt-dev] [PATCH 29/29] lib/i915/perf: configure OA timestamp shift and mask for ACM Umesh Nerlige Ramappa
2022-10-25 20:48 ` [igt-dev] ✓ Fi.CI.BAT: success for Second part of DG2 OA tests Patchwork
2022-10-26 11:17 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
2022-10-26 21:27 ` 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=20221025200709.83314-28-umesh.nerlige.ramappa@intel.com \
--to=umesh.nerlige.ramappa@intel.com \
--cc=igt-dev@lists.freedesktop.org \
/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