All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH i-g-t 1/7] trace.pl: Add support for colouring context execution
@ 2018-05-08 17:31 ` Tvrtko Ursulin
  0 siblings, 0 replies; 20+ messages in thread
From: Tvrtko Ursulin @ 2018-05-08 17:31 UTC (permalink / raw)
  To: igt-dev; +Cc: Intel-gfx

From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Add the command line switch which uses different colours for different
context execution boxes.

v2:
 * Use HSL to simplify color generation. (Lionel)
 * Colour other boxes in the same colour but different shade so it is
   easier to follow the timeline.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: John Harrison <John.C.Harrison@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> # v1
---
 scripts/trace.pl | 54 ++++++++++++++++++++++++++++++++++++++++++++++++------
 1 file changed, 48 insertions(+), 6 deletions(-)

diff --git a/scripts/trace.pl b/scripts/trace.pl
index 27b39efcebbd..c8182a8ea86d 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, $max_ctx);
 
 foreach my $key (@sorted_keys) {
 	my $ring = $db{$key}->{'ring'};
@@ -590,6 +609,10 @@ 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;
+	$max_ctx = $db{$key}->{'ctx'} if not defined $max_ctx or
+					 $db{$key}->{'ctx'} > $max_ctx;
 
 	$db{$key}->{'context-complete-delay'} = $end - $notify;
 	$db{$key}->{'execute-delay'} = $start - $db{$key}->{'submit'};
@@ -720,6 +743,10 @@ foreach my $key (keys %reqwait) {
 say sprintf('GPU: %.2f%% idle, %.2f%% busy',
 	     $flat_busy{'gpu-idle'}, $flat_busy{'gpu-busy'}) unless $html;
 
+my $queued_colour = $colour_contexts ? 'multi-colour light' : 'blue';
+my $runnable_colour = $colour_contexts ? 'multi-colour dark' : 'grey';
+my $execute_colour = $colour_contexts ? 'multi-colour' : 'pink';
+
 print <<ENDHTML if $html;
 <!DOCTYPE HTML>
 <html>
@@ -740,9 +767,9 @@ print <<ENDHTML if $html;
 <button onclick="toggleStackSubgroups()">Toggle stacking</button>
 
 <p>
-pink = 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>
+$execute_colour = requests executing on the GPU<br>
+$runnable_colour = runnable requests waiting for a slot on GPU<br>
+$queued_colour = requests waiting on fences and dependencies before they are runnable<br>
 </p>
 <p>
 Boxes are in format 'ctx-id/seqno'.
@@ -860,6 +887,18 @@ sub sortQueue {
 	return $val;
 }
 
+sub ctx_colour
+{
+	my ($ctx, $s, $l) = (@_);
+	my $val;
+
+	return 'Pink;' unless $colour_contexts;
+
+	$val = int(360 / ($max_ctx - $min_ctx + 1)) * ($ctx - $min_ctx);
+
+	return "hsl($val, $s%, $l%);";
+}
+
 my $i = 0;
 foreach my $key (sort sortQueue keys %db) {
 	my ($name, $ctx, $seqno) = ($db{$key}->{'name'}, $db{$key}->{'ctx'}, $db{$key}->{'seqno'});
@@ -874,7 +913,8 @@ foreach my $key (sort sortQueue keys %db) {
 	# submit to execute
 	unless (exists $skip_box{'queue'}) {
 		$skey = 2 * $max_seqno * $ctx + 2 * $seqno;
-		$style = 'color: black; background-color: lightblue;';
+		$style = 'color: black; background-color: ' .
+			 ctx_colour($ctx, 35, 85);
 		$content = "$name<br>$db{$key}->{'submit-delay'}us <small>($db{$key}->{'execute-delay'}us)</small>";
 		$startend = 'start: \'' . ts($queue) . '\', end: \'' . ts($submit) . '\'';
 		print "\t{id: $i, key: $skey, $type group: $group, subgroup: 1, subgroupOrder: 1, content: '$content', $startend, style: \'$style\'},\n";
@@ -884,7 +924,8 @@ foreach my $key (sort sortQueue keys %db) {
 	# execute to start
 	unless (exists $skip_box{'ready'}) {
 		$skey = 2 * $max_seqno * $ctx + 2 * $seqno + 1;
-		$style = 'color: black; background-color: lightgrey;';
+		$style = 'color: black; background-color: ' .
+			 ctx_colour($ctx, 35, 45);
 		$content = "<small>$name<br>$db{$key}->{'execute-delay'}us</small>";
 		$startend = 'start: \'' . ts($submit) . '\', end: \'' . ts($start) . '\'';
 		print "\t{id: $i, key: $skey, $type group: $group, subgroup: 1, subgroupOrder: 2, content: '$content', $startend, style: \'$style\'},\n";
@@ -897,7 +938,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, 80, 65);
 		}
 		$content = "$name <small>$db{$key}->{'port'}</small>";
 		$content .= ' <small><i>???</i></small> ' if exists $db{$key}->{'incomplete'};
-- 
2.14.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2018-05-09 19:10 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-08 17:31 [PATCH i-g-t 1/7] trace.pl: Add support for colouring context execution Tvrtko Ursulin
2018-05-08 17:31 ` [Intel-gfx] " Tvrtko Ursulin
2018-05-08 17:31 ` [PATCH i-g-t 2/7] trace.pl: Improve readability of graphical timeline representation Tvrtko Ursulin
2018-05-08 17:31   ` [igt-dev] " Tvrtko Ursulin
2018-05-08 17:31 ` [PATCH i-g-t 3/7] trace.pl: Remove context squashing option Tvrtko Ursulin
2018-05-08 17:31   ` [igt-dev] " Tvrtko Ursulin
2018-05-08 17:31 ` [PATCH i-g-t 4/7] trace.pl: Fix engine busy accounting in split mode Tvrtko Ursulin
2018-05-08 17:31   ` [igt-dev] " Tvrtko Ursulin
2018-05-08 17:31 ` [PATCH i-g-t 5/7] trace.pl: Fix incomplete request handling Tvrtko Ursulin
2018-05-08 17:31   ` [igt-dev] " Tvrtko Ursulin
2018-05-08 17:31 ` [PATCH i-g-t 6/7] trace.pl: Basic preemption support Tvrtko Ursulin
2018-05-08 17:31   ` [igt-dev] " Tvrtko Ursulin
2018-05-08 17:31 ` [PATCH i-g-t 7/7] trace.pl: Fix request split mode Tvrtko Ursulin
2018-05-08 17:31   ` [igt-dev] " Tvrtko Ursulin
2018-05-09 15:32   ` [PATCH i-g-t v4 " Tvrtko Ursulin
2018-05-09 15:32     ` [igt-dev] " Tvrtko Ursulin
2018-05-08 19:09 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,1/7] trace.pl: Add support for colouring context execution Patchwork
2018-05-08 23:01 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
2018-05-09 15:59 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,1/7] trace.pl: Add support for colouring context execution (rev2) Patchwork
2018-05-09 19:10 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork

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.