[igt-dev] [PATCH i-g-t 06/11] trace.pl: Improve context colouring for large context id's

John Harrison John.C.Harrison at Intel.com
Wed Jul 11 22:16:42 UTC 2018


On 7/9/2018 6:19 AM, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
>
> John reports that on a long runnning systems the huge disparity between
> kernel context and user context id's causes all interesting colours to be
> clustered too close together.
>
> Fix this by assigning colours to seen contexts instead of basing purely
> on context id's.
>
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> Suggested-by: John Harrison <John.C.Harrison at Intel.com>
> Cc: John Harrison <John.C.Harrison at Intel.com>
> ---
>   scripts/trace.pl | 25 ++++++++++++++++++++-----
>   1 file changed, 20 insertions(+), 5 deletions(-)
>
> diff --git a/scripts/trace.pl b/scripts/trace.pl
> index aeaf2392162e..60a8e441c1d9 100755
> --- a/scripts/trace.pl
> +++ b/scripts/trace.pl
> @@ -336,7 +336,7 @@ sub sanitize_ctx
>   {
>   	my ($ctx, $ring) = @_;
>   
> -	if (exists $ctxdb{$ctx}) {
> +	if (exists $ctxdb{$ctx} and $ctxdb{$ctx} > 1) {
>   		return $ctx . '.' . $ctxdb{$ctx};
>   	} else {
>   		return $ctx;
> @@ -425,6 +425,8 @@ while (<>) {
>   			$ctxdb{$orig_ctx}++;
>   			$ctx = sanitize_ctx($orig_ctx, $ring);
>   			$key = db_key($ring, $ctx, $seqno);
> +		} else {
> +			$ctxdb{$orig_ctx} = 1;
>   		}
>   
>   		$queue{$key} = $time;
> @@ -592,7 +594,7 @@ foreach my $key (@sorted_keys) {
>   
>   my $last_ts = 0;
>   my $first_ts;
> -my ($min_ctx, $max_ctx);
> +my $min_ctx;
>   
>   foreach my $key (@sorted_keys) {
>   	my $ring = $db{$key}->{'ring'};
> @@ -604,8 +606,6 @@ foreach my $key (@sorted_keys) {
>   	$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'};
> @@ -739,6 +739,21 @@ say sprintf('GPU: %.2f%% idle, %.2f%% busy',
>   my $timeline_text = $colour_contexts ?
>   		    'Per context coloured shading like:' : 'Box shading like:';
>   
> +my %ctx_colours;
> +
> +sub generate_ctx_colours
> +{
> +	my $num_ctx = keys %ctxdb;
> +	my $i = 0;
> +
> +	foreach my $ctx (sort keys %ctxdb) {
> +		$ctx_colours{$ctx} = int(360 / $num_ctx * $i++);
> +	}
> +}
> +
> +
> +generate_ctx_colours() if $html and $colour_contexts;
> +
>   my $queued_style = box_style($min_ctx, 'queue');
>   my $ready_style = box_style($min_ctx, 'ready');
>   my $execute_style = box_style($min_ctx, 'execute');
> @@ -947,7 +962,7 @@ sub ctx_colour
>   			$l = 25;
>   		}
>   
> -		$val = int(360 / ($max_ctx - $min_ctx + 1)) * ($ctx - $min_ctx);
> +		$val = $ctx_colours{$ctx};
>   	}
>   
>   	$l = int($l * $lfac);

Oops, I think I had already squashed this patch into patch #2 in my 
brain. So some of my comments (and certainly the legend tweak patch) 
probably apply to here instead. So I guess you might need to either 
split my comments/tweaks up across the two patches or possibly just 
squash this one into the other for real :).



More information about the igt-dev mailing list