Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Lucas De Marchi <lucas.demarchi@intel.com>
To: igt-dev@lists.freedesktop.org
Cc: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>,
	Tvrtko Ursulin <tursulin@ursulin.net>,
	Lucas De Marchi <lucas.demarchi@intel.com>
Subject: [PATCH i-g-t v2 13/21] lib/igt_drm_clients: Rename engine busyness variables
Date: Tue, 23 Apr 2024 16:44:23 -0700	[thread overview]
Message-ID: <20240423234431.1959354-14-lucas.demarchi@intel.com> (raw)
In-Reply-To: <20240423234431.1959354-1-lucas.demarchi@intel.com>

Follow the comment documenting "val" and "last" that it's related to the
engine busyness.  This will make it easier to follow the code when
additional methods to calculate utilization is added: "busy" refers to
the time in the CPU clock domain parsed from drm-engine-*.

Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
---
 lib/igt_drm_clients.c | 20 +++++++++++---------
 lib/igt_drm_clients.h |  4 ++--
 tools/gputop.c        |  2 +-
 tools/intel_gpu_top.c | 14 +++++++-------
 4 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/lib/igt_drm_clients.c b/lib/igt_drm_clients.c
index 40d494441..940c95381 100644
--- a/lib/igt_drm_clients.c
+++ b/lib/igt_drm_clients.c
@@ -109,13 +109,13 @@ igt_drm_client_update(struct igt_drm_client *c, unsigned int pid, char *name,
 	for (i = 0; i <= c->engines->max_engine_id; i++) {
 		assert(i < ARRAY_SIZE(info->busy));
 
-		if (info->busy[i] < c->last[i])
+		if (info->busy[i] < c->last_busy[i])
 			continue; /* It will catch up soon. */
 
 		c->total_runtime += info->busy[i];
-		c->val[i] = info->busy[i] - c->last[i];
-		c->last_runtime += c->val[i];
-		c->last[i] = info->busy[i];
+		c->delta_busy[i] = info->busy[i] - c->last_busy[i];
+		c->last_runtime += c->delta_busy[i];
+		c->last_busy[i] = info->busy[i];
 	}
 
 	/* Memory regions */
@@ -183,9 +183,11 @@ igt_drm_client_add(struct igt_drm_clients *clients,
 		c->engines->max_engine_id = i;
 	}
 
-	c->val = calloc(c->engines->max_engine_id + 1, sizeof(*c->val));
-	c->last = calloc(c->engines->max_engine_id + 1, sizeof(*c->last));
-	assert(c->val && c->last);
+	c->delta_busy = calloc(c->engines->max_engine_id + 1,
+			       sizeof(*c->delta_busy));
+	c->last_busy = calloc(c->engines->max_engine_id + 1,
+			      sizeof(*c->last_busy));
+	assert(c->delta_busy && c->last_busy);
 
 	/* Memory regions */
 	c->regions = calloc(1, sizeof(*c->regions));
@@ -223,8 +225,8 @@ void igt_drm_client_free(struct igt_drm_client *c, bool clear)
 	}
 	free(c->engines);
 
-	free(c->val);
-	free(c->last);
+	free(c->delta_busy);
+	free(c->last_busy);
 
 	if (c->regions) {
 		for (i = 0; i <= c->regions->max_region_id; i++)
diff --git a/lib/igt_drm_clients.h b/lib/igt_drm_clients.h
index 52888aedc..06b29cfd1 100644
--- a/lib/igt_drm_clients.h
+++ b/lib/igt_drm_clients.h
@@ -65,8 +65,8 @@ struct igt_drm_client {
 	unsigned int samples; /* Count of times scanning updated this client. */
 	unsigned long total_runtime; /* Aggregate busyness on all engines since client start. */
 	unsigned long last_runtime; /* Aggregate busyness on all engines since previous scan. */
-	unsigned long *val; /* Array of engine busyness data, relative to previous scan. */
-	uint64_t *last; /* Array of engine busyness data as parsed from fdinfo. */
+	unsigned long *delta_busy; /* Array of engine busyness data, relative to previous scan. */
+	uint64_t *last_busy; /* Array of engine busyness data as parsed from fdinfo. */
 	struct drm_client_meminfo *memory; /* Array of region memory utilisation as parsed from fdinfo. */
 };
 
diff --git a/tools/gputop.c b/tools/gputop.c
index 8cec951b4..2946aaa5e 100644
--- a/tools/gputop.c
+++ b/tools/gputop.c
@@ -208,7 +208,7 @@ print_client(struct igt_drm_client *c, struct igt_drm_client **prevc,
 		if (!c->engines->capacity[i])
 			continue;
 
-		pct = (double)c->val[i] / period_us / 1e3 * 100 /
+		pct = (double)c->delta_busy[i] / period_us / 1e3 * 100 /
 		      c->engines->capacity[i];
 
 		/*
diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c
index 5b4f94d7d..adc95a95e 100644
--- a/tools/intel_gpu_top.c
+++ b/tools/intel_gpu_top.c
@@ -893,9 +893,9 @@ static struct igt_drm_clients *display_clients(struct igt_drm_clients *clients)
 			strcpy(ac->pid_str, c->pid_str);
 			strcpy(ac->print_name, c->print_name);
 			ac->engines = c->engines;
-			ac->val = calloc(c->engines->max_engine_id + 1,
-					 sizeof(ac->val[0]));
-			assert(ac->val);
+			ac->delta_busy = calloc(c->engines->max_engine_id + 1,
+						sizeof(ac->delta_busy[0]));
+			assert(ac->delta_busy);
 			ac->regions = c->regions;
 			ac->memory = calloc(c->regions->max_region_id + 1,
 					    sizeof(ac->memory[0]));
@@ -912,7 +912,7 @@ static struct igt_drm_clients *display_clients(struct igt_drm_clients *clients)
 		ac->last_runtime += c->last_runtime;
 
 		for (i = 0; i <= c->engines->max_engine_id; i++)
-			ac->val[i] += c->val[i];
+			ac->delta_busy[i] += c->delta_busy[i];
 
 		for (i = 0; i <= c->regions->max_region_id; i++) {
 			ac->memory[i].total += c->memory[i].total;
@@ -946,7 +946,7 @@ static void free_display_clients(struct igt_drm_clients *clients)
 	 * or borrowed fields which we don't want the library to try and free.
 	 */
 	igt_for_each_drm_client(clients, c, tmp) {
-		free(c->val);
+		free(c->delta_busy);
 		free(c->memory);
 	}
 
@@ -2161,7 +2161,7 @@ print_client(struct igt_drm_client *c, struct engines *engines, double t, int li
 				continue;
 			}
 
-			pct = (double)c->val[i] / period_us / 1e3 * 100;
+			pct = (double)c->delta_busy[i] / period_us / 1e3 * 100;
 
 			/*
 			 * Guard against possible time-drift between sampling
@@ -2235,7 +2235,7 @@ print_client(struct igt_drm_client *c, struct engines *engines, double t, int li
 					 iclients->classes.names[i]);
 				pops->open_struct(buf);
 
-				pct = (double)c->val[i] / period_us / 1e3 * 100;
+				pct = (double)c->delta_busy[i] / period_us / 1e3 * 100;
 				snprintf(buf, sizeof(buf), "%f", pct);
 				__json_add_member("busy", buf);
 
-- 
2.43.0


  parent reply	other threads:[~2024-04-23 23:44 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-23 23:44 [PATCH i-g-t v2 00/21] gputop: Add support for xe Lucas De Marchi
2024-04-23 23:44 ` [PATCH i-g-t v2 01/21] lib/igt_drm_fdinfo: Fix wrong name len assert Lucas De Marchi
2024-04-23 23:44 ` [PATCH i-g-t v2 02/21] lib/igt_drm_fdinfo: Assert pdev is not truncated Lucas De Marchi
2024-04-23 23:44 ` [PATCH i-g-t v2 03/21] lib/igt_drm_fdinfo: Detect invalid drm-client-id Lucas De Marchi
2024-04-23 23:44 ` [PATCH i-g-t v2 04/21] lib/igt_drm_fdinfo: Stop ignoring space where not needed Lucas De Marchi
2024-04-23 23:44 ` [PATCH i-g-t v2 05/21] gputop: Extract method to update console size Lucas De Marchi
2024-04-23 23:44 ` [PATCH i-g-t v2 06/21] gputop: Extract clrscr() Lucas De Marchi
2024-04-23 23:44 ` [PATCH i-g-t v2 07/21] lib/igt_drm_fdinfo: Extract ignore_space() Lucas De Marchi
2024-04-23 23:44 ` [PATCH i-g-t v2 08/21] lib/igt_drm_fdinfo: Allow any number of spaces before unit Lucas De Marchi
2024-04-23 23:44 ` [PATCH i-g-t v2 09/21] lib/igt_drm_fdinfo: Stop passing key twice Lucas De Marchi
2024-04-25 21:27   ` Lucas De Marchi
2024-04-23 23:44 ` [PATCH i-g-t v2 10/21] lib/igt_drm_fdinfo: Remove prefix arg from parse functions Lucas De Marchi
2024-04-23 23:44 ` [PATCH i-g-t v2 11/21] lib/igt_drm_fdinfo: Parse drm-cycles Lucas De Marchi
2024-04-23 23:44 ` [PATCH i-g-t v2 12/21] lib/igt_drm_fdinfo: Parse drm-total-cycles Lucas De Marchi
2024-04-26 11:03   ` Tvrtko Ursulin
2024-04-23 23:44 ` Lucas De Marchi [this message]
2024-04-23 23:44 ` [PATCH i-g-t v2 14/21] lib/igt_drm_clients: Move engine fields to substruct Lucas De Marchi
2024-04-26 11:05   ` Tvrtko Ursulin
2024-04-23 23:44 ` [PATCH i-g-t v2 15/21] lib/igt_drm_clients: Record total cycles Lucas De Marchi
2024-04-26 11:11   ` Tvrtko Ursulin
2024-04-26 13:28     ` Lucas De Marchi
2024-04-23 23:44 ` [PATCH i-g-t v2 16/21] gputop: Add support to drm-cycles/drm-total-cycles Lucas De Marchi
2024-04-23 23:44 ` [PATCH i-g-t v2 17/21] gputop: print percentage number Lucas De Marchi
2024-04-26 11:16   ` Tvrtko Ursulin
2024-04-23 23:44 ` [PATCH i-g-t v2 18/21] gputop: Add option parsing Lucas De Marchi
2024-04-23 23:44 ` [PATCH i-g-t v2 19/21] gputop: Allow to limit number of executions Lucas De Marchi
2024-04-23 23:44 ` [PATCH i-g-t v2 20/21] gputop: Allow to set delay interval Lucas De Marchi
2024-04-23 23:44 ` [PATCH i-g-t v2 21/21] lib/igt_drm_clients: lazy stat process Lucas De Marchi
2024-04-24  0:32 ` ✗ GitLab.Pipeline: warning for gputop: Add support for xe (rev2) Patchwork
2024-04-24  0:53 ` ✓ Fi.CI.BAT: success " Patchwork
2024-04-24  1:29 ` ✓ CI.xeBAT: " Patchwork
2024-04-24 11:47 ` ✗ Fi.CI.IGT: failure " Patchwork
2024-04-24 15:23 ` ✗ CI.xeFULL: " Patchwork
2024-04-25 22:17 ` ✓ CI.xeBAT: success for gputop: Add support for xe (rev3) Patchwork
2024-04-25 22:20 ` ✓ Fi.CI.BAT: " Patchwork
2024-04-26  1:38 ` ✗ Fi.CI.IGT: failure " Patchwork

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=20240423234431.1959354-14-lucas.demarchi@intel.com \
    --to=lucas.demarchi@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=tursulin@ursulin.net \
    --cc=umesh.nerlige.ramappa@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