From: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
To: Tvrtko Ursulin <tursulin@ursulin.net>, igt-dev@lists.freedesktop.org
Cc: Intel-gfx@lists.freedesktop.org
Subject: Re: [igt-dev] [Intel-gfx] [PATCH i-g-t 09/11] trace.pl: Add support for colouring context execution
Date: Wed, 18 Apr 2018 10:02:49 -0700 [thread overview]
Message-ID: <5c11b428-d2b1-64e4-e040-80ee30b52636@intel.com> (raw)
In-Reply-To: <20180306124315.30208-10-tvrtko.ursulin@linux.intel.com>
One suggestion below, otherwise :
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
On 06/03/18 04:43, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>
> Add the command line switch which uses different colours for different
> context execution boxes.
>
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> Cc: John Harrison <John.C.Harrison@intel.com>
> ---
> scripts/trace.pl | 41 +++++++++++++++++++++++++++++++++++++++--
> 1 file changed, 39 insertions(+), 2 deletions(-)
>
> diff --git a/scripts/trace.pl b/scripts/trace.pl
> index e7ce273ef26a..ff61dea0768d 100755
> --- a/scripts/trace.pl
> +++ b/scripts/trace.pl
> @@ -40,6 +40,7 @@ my $trace = 0;
> my $avg_delay_stats = 0;
> my $squash_context_id = 0;
> my $gpu_timeline = 0;
> +my $colour_contexts = 0;
>
> my @args;
>
> @@ -110,6 +111,8 @@ Usage:
> --squash-ctx-id Squash context id by substracting engine
> id from ctx id.
> --gpu-timeline Draw overall GPU busy timeline.
> + --colour-contexts / -c Use different colours for different
> + context execution boxes.
> ENDHELP
>
> exit 0;
> @@ -279,6 +282,20 @@ sub arg_skip_box
> return @_;
> }
>
> +sub arg_colour_contexts
> +{
> + return unless scalar(@_);
> +
> + if ($_[0] eq '--colour-contexts' or
> + $_[0] eq '--color-contexts' or
> + $_[0] eq '-c') {
> + shift @_;
> + $colour_contexts = 1;
> + }
> +
> + return @_;
> +}
> +
> @args = @ARGV;
> while (@args) {
> my $left = scalar(@args);
> @@ -294,6 +311,7 @@ while (@args) {
> @args = arg_split_requests(@args);
> @args = arg_ignore_ring(@args);
> @args = arg_skip_box(@args);
> + @args = arg_colour_contexts(@args);
>
> last if $left == scalar(@args);
> }
> @@ -581,6 +599,7 @@ foreach my $key (@sorted_keys) {
>
> my $last_ts = 0;
> my $first_ts;
> +my $min_ctx;
>
> foreach my $key (@sorted_keys) {
> my $ring = $db{$key}->{'ring'};
> @@ -590,6 +609,8 @@ foreach my $key (@sorted_keys) {
>
> $first_ts = $db{$key}->{'queue'} if not defined $first_ts or $db{$key}->{'queue'} < $first_ts;
> $last_ts = $end if $end > $last_ts;
> + $min_ctx = $db{$key}->{'ctx'} if not defined $min_ctx or
> + $db{$key}->{'ctx'} < $min_ctx;
>
> $db{$key}->{'context-complete-delay'} = $end - $notify;
> $db{$key}->{'execute-delay'} = $start - $db{$key}->{'submit'};
> @@ -721,6 +742,8 @@ foreach my $key (keys %reqwait) {
> say sprintf('GPU: %.2f%% idle, %.2f%% busy',
> $flat_busy{'gpu-idle'}, $flat_busy{'gpu-busy'}) unless $html;
>
> +my $execute_colour = $colour_contexts ? 'multi-colour' : 'pink';
> +
> print <<ENDHTML if $html;
> <!DOCTYPE HTML>
> <html>
> @@ -741,7 +764,7 @@ print <<ENDHTML if $html;
> <button onclick="toggleStackSubgroups()">Toggle stacking</button>
>
> <p>
> -pink = requests executing on the GPU<br>
> +$execute_colour = requests executing on the GPU<br>
> grey = runnable requests waiting for a slot on GPU<br>
> blue = requests waiting on fences and dependencies before they are runnable<br>
> </p>
> @@ -861,6 +884,19 @@ sub sortQueue {
> return $val;
> }
>
> +my @html_colours = ( 'Pink', 'Green', 'Purple', 'Gold', 'Cyan', 'Brown',
> + 'DeepPink', 'LightGreen', 'Plum', 'Orange', 'Teal', 'Peru',
> + 'Indigo', 'Khaki', 'Coral', 'Olive' );
One way to generate as many colors as you need is to use hsv and divide
the hue range into as many colors you need.
Then the color for element X is X * 360 / n_colors (http://colorizer.org/)
Just a suggestion :)
> +
> +sub ctx_colour
> +{
> + my ($ctx) = (@_);
> +
> + return 'Pink' unless $colour_contexts;
> +
> + return $html_colours[($ctx - $min_ctx) % scalar(@html_colours)];
> +}
> +
> my $i = 0;
> foreach my $key (sort sortQueue keys %db) {
> my ($name, $ctx, $seqno) = ($db{$key}->{'name'}, $db{$key}->{'ctx'}, $db{$key}->{'seqno'});
> @@ -898,7 +934,8 @@ foreach my $key (sort sortQueue keys %db) {
> if (exists $db{$key}->{'incomplete'}) {
> $style = 'color: white; background-color: red;';
> } else {
> - $style = 'color: black; background-color: pink;';
> + $style = 'color: black; background-color: ' .
> + ctx_colour($ctx) . ';';
> }
> $content = "$name <small>$db{$key}->{'port'}</small>";
> $content .= ' <small><i>???</i></small> ' if exists $db{$key}->{'incomplete'};
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
next prev parent reply other threads:[~2018-04-18 17:02 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-06 12:43 [Intel-gfx] [PATCH i-g-t v2 00/11] trace.pl fixes Tvrtko Ursulin
2018-03-06 12:43 ` [Intel-gfx] [PATCH i-g-t 01/11] trace.pl: Catch-up with tracepoint renames Tvrtko Ursulin
2018-03-06 12:43 ` [igt-dev] [PATCH i-g-t 02/11] scripts/trace.pl: More hash key optimisations Tvrtko Ursulin
2018-03-06 12:43 ` [igt-dev] [PATCH i-g-t 03/11] scripts/trace.pl: Sort order Tvrtko Ursulin
2018-03-06 12:43 ` [igt-dev] [PATCH i-g-t 04/11] scripts/trace.pl: Calculate stats only after all munging Tvrtko Ursulin
2018-03-06 12:43 ` [igt-dev] [PATCH i-g-t 05/11] scripts/trace.pl: Simplify 'end' & 'notify' generation Tvrtko Ursulin
2018-03-06 12:43 ` [igt-dev] [PATCH i-g-t 06/11] trace.pl: Move sortQueue near its user Tvrtko Ursulin
2018-04-18 16:56 ` [Intel-gfx] " Lionel Landwerlin
2018-03-06 12:43 ` [igt-dev] [PATCH i-g-t 07/11] trace.pl: Move min/max timestamp lookup to last loop Tvrtko Ursulin
2018-04-18 16:56 ` Lionel Landwerlin
2018-03-06 12:43 ` [igt-dev] [PATCH i-g-t 08/11] trace.pl: Fix engine busy accounting in split mode Tvrtko Ursulin
2018-03-06 12:43 ` [igt-dev] [PATCH i-g-t 09/11] trace.pl: Add support for colouring context execution Tvrtko Ursulin
2018-04-18 17:02 ` Lionel Landwerlin [this message]
2018-03-06 12:43 ` [Intel-gfx] [PATCH i-g-t 10/11] trace.pl: Fix incomplete request handling Tvrtko Ursulin
2018-03-06 12:43 ` [igt-dev] [PATCH i-g-t 11/11] trace.pl: Fix request split mode Tvrtko Ursulin
2018-03-06 14:18 ` [igt-dev] ✓ Fi.CI.BAT: success for trace.pl fixes (rev2) Patchwork
2018-03-06 19:29 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2018-04-18 14:52 ` [igt-dev] [PATCH i-g-t v2 00/11] trace.pl fixes Tvrtko Ursulin
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=5c11b428-d2b1-64e4-e040-80ee30b52636@intel.com \
--to=lionel.g.landwerlin@intel.com \
--cc=Intel-gfx@lists.freedesktop.org \
--cc=igt-dev@lists.freedesktop.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox