From: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
To: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: <igt-dev@lists.freedesktop.org>, Tvrtko Ursulin <tursulin@ursulin.net>
Subject: Re: [PATCH i-g-t v3 13/13] gputop: Add support to drm-cycles/drm-total-cycles
Date: Wed, 8 May 2024 12:11:54 -0700 [thread overview]
Message-ID: <ZjvOeqh067bPEJkf@orsosgc001> (raw)
In-Reply-To: <20240504064643.25863-14-lucas.demarchi@intel.com>
On Fri, May 03, 2024 at 11:46:43PM -0700, Lucas De Marchi wrote:
>Add support for using only GPU timestamps to calculate the utilization.
>It uses drm-cycles and drm-total-cycles read from fdinfo. For any
>2 samples, the utilization is calculated as:
>
> u[i+1] - u[i]
> pct = -----------------
> Gt[i+1] - Gt[i]
>
>with u == drm-cycles and Gt == drm-total-cycles.
>
>Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
LGTM,
Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Thanks,
Umesh
>---
> tools/gputop.c | 41 +++++++++++++++++++++++++++++++++++++----
> 1 file changed, 37 insertions(+), 4 deletions(-)
>
>diff --git a/tools/gputop.c b/tools/gputop.c
>index aa88a8021..11e0db482 100644
>--- a/tools/gputop.c
>+++ b/tools/gputop.c
>@@ -30,6 +30,11 @@
> #include "igt_drm_fdinfo.h"
> #include "drmtest.h"
>
>+enum utilization_type {
>+ UTILIZATION_TYPE_ENGINE_TIME,
>+ UTILIZATION_TYPE_TOTAL_CYCLES,
>+};
>+
> static const char *bars[] = { " ", "▏", "▎", "▍", "▌", "▋", "▊", "▉", "█" };
>
> static void n_spaces(const unsigned int n)
>@@ -171,13 +176,33 @@ print_client(struct igt_drm_client *c, struct igt_drm_client **prevc,
> double t, int lines, int con_w, int con_h,
> unsigned int period_us, int *engine_w)
> {
>+ enum utilization_type utilization_type;
> unsigned int i;
> uint64_t sz;
> int len;
>
>+ if (c->utilization_mask & IGT_DRM_CLIENT_UTILIZATION_TOTAL_CYCLES &&
>+ c->utilization_mask & IGT_DRM_CLIENT_UTILIZATION_CYCLES)
>+ utilization_type = UTILIZATION_TYPE_TOTAL_CYCLES;
>+ else if (c->utilization_mask & IGT_DRM_CLIENT_UTILIZATION_ENGINE_TIME)
>+ utilization_type = UTILIZATION_TYPE_ENGINE_TIME;
>+ else
>+ return 0;
>+
>+ if (c->samples < 2)
>+ return 0;
>+
> /* Filter out idle clients. */
>- if (!c->total_engine_time || c->samples < 2)
>- return lines;
>+ switch (utilization_type) {
>+ case UTILIZATION_TYPE_ENGINE_TIME:
>+ if (!c->total_engine_time)
>+ return 0;
>+ break;
>+ case UTILIZATION_TYPE_TOTAL_CYCLES:
>+ if (!c->total_total_cycles)
>+ return 0;
>+ break;
>+ }
>
> /* Print header when moving to a different DRM card. */
> if (newheader(c, *prevc)) {
>@@ -208,8 +233,16 @@ print_client(struct igt_drm_client *c, struct igt_drm_client **prevc,
> if (!c->engines->capacity[i])
> continue;
>
>- pct = (double)c->utilization[i].delta_engine_time / period_us / 1e3 * 100 /
>- c->engines->capacity[i];
>+ switch (utilization_type) {
>+ case UTILIZATION_TYPE_ENGINE_TIME:
>+ pct = (double)c->utilization[i].delta_engine_time / period_us / 1e3 * 100 /
>+ c->engines->capacity[i];
>+ break;
>+ case UTILIZATION_TYPE_TOTAL_CYCLES:
>+ pct = (double)c->utilization[i].delta_cycles / c->utilization[i].delta_total_cycles * 100 /
>+ c->engines->capacity[i];
>+ break;
>+ }
>
> /*
> * Guard against fluctuations between our scanning period and
>--
>2.43.0
>
next prev parent reply other threads:[~2024-05-08 19:12 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-04 6:46 [PATCH i-g-t v3 00/12] gputop: Add support for xe Lucas De Marchi
2024-05-04 6:46 ` [PATCH i-g-t v3 01/13] lib/igt_drm_fdinfo: Extract ignore_space() Lucas De Marchi
2024-05-06 20:21 ` Umesh Nerlige Ramappa
2024-05-04 6:46 ` [PATCH i-g-t v3 02/13] lib/igt_drm_fdinfo: Allow any number of spaces before unit Lucas De Marchi
2024-05-06 20:28 ` Umesh Nerlige Ramappa
2024-05-06 20:32 ` Umesh Nerlige Ramappa
2024-05-06 20:38 ` Lucas De Marchi
2024-05-04 6:46 ` [PATCH i-g-t v3 03/13] fixup! " Lucas De Marchi
2024-05-06 20:33 ` Umesh Nerlige Ramappa
2024-05-04 6:46 ` [PATCH i-g-t v3 04/13] lib/igt_drm_fdinfo: Stop passing key twice Lucas De Marchi
2024-05-04 6:46 ` [PATCH i-g-t v3 05/13] lib/igt_drm_fdinfo: Remove prefix arg from parse functions Lucas De Marchi
2024-05-04 6:46 ` [PATCH i-g-t v3 06/13] lib/igt_drm_fdinfo: Parse drm-cycles Lucas De Marchi
2024-05-07 1:11 ` Umesh Nerlige Ramappa
2024-05-04 6:46 ` [PATCH i-g-t v3 07/13] lib/igt_drm_fdinfo: Start tracking available engine keys Lucas De Marchi
2024-05-07 1:14 ` Umesh Nerlige Ramappa
2024-05-04 6:46 ` [PATCH i-g-t v3 08/13] treewide: Rename engine busyness variables Lucas De Marchi
2024-05-08 18:45 ` Umesh Nerlige Ramappa
2024-05-21 13:47 ` Lucas De Marchi
2024-05-04 6:46 ` [PATCH i-g-t v3 09/13] lib/igt_drm_clients: Move engine fields to substruct Lucas De Marchi
2024-05-08 18:45 ` Umesh Nerlige Ramappa
2024-05-04 6:46 ` [PATCH i-g-t v3 10/13] lib/igt_drm_clients: Record drm-cycles Lucas De Marchi
2024-05-08 18:48 ` Umesh Nerlige Ramappa
2024-05-04 6:46 ` [PATCH i-g-t v3 11/13] lib/igt_drm_fdinfo: Parse drm-total-cycles Lucas De Marchi
2024-05-08 18:49 ` Umesh Nerlige Ramappa
2024-05-04 6:46 ` [PATCH i-g-t v3 12/13] lib/igt_drm_clients: Record total cycles Lucas De Marchi
2024-05-08 19:01 ` Umesh Nerlige Ramappa
2024-05-08 19:07 ` Umesh Nerlige Ramappa
2024-05-04 6:46 ` [PATCH i-g-t v3 13/13] gputop: Add support to drm-cycles/drm-total-cycles Lucas De Marchi
2024-05-08 19:11 ` Umesh Nerlige Ramappa [this message]
2024-05-04 7:31 ` ✓ Fi.CI.BAT: success for gputop: Add support for xe (rev4) Patchwork
2024-05-04 7:36 ` ✓ CI.xeBAT: " Patchwork
2024-05-04 8:33 ` ✗ CI.xeFULL: failure " Patchwork
2024-05-04 12:50 ` ✗ Fi.CI.IGT: " Patchwork
2024-05-06 10:37 ` [PATCH i-g-t v3 00/12] gputop: Add support for xe Tvrtko Ursulin
2024-05-06 20:40 ` Lucas De Marchi
2024-05-08 16:25 ` (subset) " Lucas De Marchi
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=ZjvOeqh067bPEJkf@orsosgc001 \
--to=umesh.nerlige.ramappa@intel.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=lucas.demarchi@intel.com \
--cc=tursulin@ursulin.net \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.