From: Tvrtko Ursulin <tursulin@ursulin.net>
To: igt-dev@lists.freedesktop.org
Cc: intel-gfx@lists.freedesktop.org
Subject: [PATCH i-g-t 2/8] trace.pl: Improve readability of graphical timeline representation
Date: Tue, 5 Jun 2018 18:50:44 +0100 [thread overview]
Message-ID: <20180605175050.29850-2-tvrtko.ursulin@linux.intel.com> (raw)
In-Reply-To: <20180605175050.29850-1-tvrtko.ursulin@linux.intel.com>
From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
We add stripes for different stages of request execution so it is easier
to follow one context in the multi-colour mode.
Vertical stripe pattern indicates pipeline "blockages" - requests waiting
for dependencies before they are runnable.
Diagonal stripes indicate runnable requests waiting for GPU time.
Horizontal strips are requests executing on the GPU.
Also use this new multi-coloured mode from media-bench.pl.
v2:
John Harrison:
* Mention media-bench.pl in the commit.
* Fix HTML for single colour mode.
v3:
* Rebase.
* Apply stripes to legacy colouring as well.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
scripts/media-bench.pl | 2 +-
scripts/trace.pl | 56 +++++++++++++++++++++++++++++++-----------
2 files changed, 42 insertions(+), 16 deletions(-)
diff --git a/scripts/media-bench.pl b/scripts/media-bench.pl
index c5628c7f2836..375844d9cdf6 100755
--- a/scripts/media-bench.pl
+++ b/scripts/media-bench.pl
@@ -207,7 +207,7 @@ sub trace_workload
show_cmd($cmd);
system($cmd);
- $cmd = "perf script | $tracepl --html -x ctxsave -s ";
+ $cmd = "perf script | $tracepl --html -x ctxsave -s -c ";
$cmd .= join ' ', map("-i $_", @skip_engine);
$cmd .= " > ${file}.html";
show_cmd($cmd);
diff --git a/scripts/trace.pl b/scripts/trace.pl
index fd414f5a4b1e..7d5c19ffd2e7 100755
--- a/scripts/trace.pl
+++ b/scripts/trace.pl
@@ -727,9 +727,9 @@ 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';
+my $queued_colour = $colour_contexts ? 'multi-colour light, vertical stripes' : 'blue';
+my $runnable_colour = $colour_contexts ? 'multi-colour dark, angled stripes' : 'grey';
+my $execute_colour = $colour_contexts ? 'multi-colour, horizontal stripes' : 'pink';
print <<ENDHTML if $html;
<!DOCTYPE HTML>
@@ -873,17 +873,23 @@ sub sortQueue {
sub ctx_colour
{
- my ($ctx, $stage) = (@_);
+ my ($ctx, $stage, $lfac) = (@_);
my ($s, $l);
my $val;
unless ($colour_contexts) {
if ($stage eq 'queue') {
- return 'lightblue;';
+ $val = 210;
+ $s = 65;
+ $l = 52;
} elsif ($stage eq 'ready') {
- return 'lightgrey;';
+ $val = 0;
+ $s = 0;
+ $l = 47;
} elsif ($stage eq 'execute') {
- return 'pink;';
+ $val = 346;
+ $s = 68;
+ $l = 65;
}
} else {
if ($stage eq 'queue') {
@@ -896,11 +902,34 @@ sub ctx_colour
$s = 80;
$l = 65;
}
+
+ $val = int(360 / ($max_ctx - $min_ctx + 1)) * ($ctx - $min_ctx);
}
- $val = int(360 / ($max_ctx - $min_ctx + 1)) * ($ctx - $min_ctx);
+ $l = int($l * $lfac);
+
+ return "hsl($val, $s%, $l%)";
+}
+
+sub box_style
+{
+ my ($ctx, $stage) = @_;
+ my $deg;
+
+ if ($stage eq 'queue') {
+ $deg = 90;
+ } elsif ($stage eq 'ready') {
+ $deg = 45;
+ } elsif ($stage eq 'execute') {
+ $deg = 0;
+ }
- return "hsl($val, $s%, $l%);";
+ return 'color: black; background: repeating-linear-gradient(' .
+ $deg . 'deg, ' .
+ ctx_colour($ctx, $stage, 1.0) . ', ' .
+ ctx_colour($ctx, $stage, 1.0) . ' 10px, ' .
+ ctx_colour($ctx, $stage, 0.90) . ' 10px, ' .
+ ctx_colour($ctx, $stage, 0.90) . ' 20px);';
}
my $i = 0;
@@ -917,8 +946,7 @@ 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: ' .
- ctx_colour($ctx, 'queue');
+ $style = box_style($ctx, 'queue');
$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";
@@ -928,8 +956,7 @@ 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: ' .
- ctx_colour($ctx, 'ready');
+ $style = box_style($ctx, 'ready');
$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";
@@ -942,8 +969,7 @@ foreach my $key (sort sortQueue keys %db) {
if (exists $db{$key}->{'incomplete'}) {
$style = 'color: white; background-color: red;';
} else {
- $style = 'color: black; background-color: ' .
- ctx_colour($ctx, 'execute');
+ $style = box_style($ctx, 'execute');
}
$content = "$name <small>$db{$key}->{'port'}</small>";
$content .= ' <small><i>???</i></small> ' if exists $db{$key}->{'incomplete'};
--
2.17.0
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2018-06-05 17:50 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-05 17:50 [PATCH i-g-t 1/8] trace.pl: Fix no context colouring mode Tvrtko Ursulin
2018-06-05 17:50 ` Tvrtko Ursulin [this message]
2018-06-05 17:50 ` [PATCH i-g-t 3/8] trace.pl: Fix engine busy accounting in split mode Tvrtko Ursulin
2018-06-05 17:50 ` [PATCH i-g-t 4/8] trace.pl: Skip drawing very short boxes Tvrtko Ursulin
2018-06-05 17:50 ` [PATCH i-g-t 5/8] trace.pl: Context save only applies to last request of a bunch Tvrtko Ursulin
2018-06-05 17:50 ` [PATCH i-g-t 6/8] trace.pl: Fix incomplete request handling Tvrtko Ursulin
2018-06-05 17:50 ` [PATCH i-g-t 7/8] trace.pl: Basic preemption support Tvrtko Ursulin
2018-06-05 17:50 ` [PATCH i-g-t 8/8] trace.pl: Fix request split mode Tvrtko Ursulin
-- strict thread matches above, loose matches on Subject: below --
2018-07-18 9:45 [PATCH i-g-t 0/8] trace.pl fixes and improvements Tvrtko Ursulin
2018-07-18 9:45 ` [PATCH i-g-t 2/8] trace.pl: Improve readability of graphical timeline representation 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=20180605175050.29850-2-tvrtko.ursulin@linux.intel.com \
--to=tursulin@ursulin.net \
--cc=igt-dev@lists.freedesktop.org \
--cc=intel-gfx@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