Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
To: John.C.Harrison@Intel.com, IGT-Dev@Lists.FreeDesktop.Org
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Subject: Re: [igt-dev] [PATCH i-g-t v2 2/4] scripts/trace.pl: Sort order
Date: Wed, 24 Jan 2018 10:10:01 +0000	[thread overview]
Message-ID: <04a238b6-d404-7b49-5795-1fab5772ea28@linux.intel.com> (raw)
In-Reply-To: <20180123063237.32039-3-John.C.Harrison@Intel.com>


On 23/01/2018 06:32, John.C.Harrison@Intel.com wrote:
> From: John Harrison <John.C.Harrison@Intel.com>
> 
> Add an extra level to the databse key sort so that the ordering is
> deterministic. If the time stamp matches, it now compares the key
> itself as well (context/seqno). This makes it much easier to determine
> if a change has actually broken anything. Previously back to back runs
> with no changes could still produce different output, especially when
> adding extra debug output during the calculations.
> 
> As the comparison test is now more than a single equation, moved it
> out into a separate sort function.
> 
> v2: Re-work sort func for readability/performance [Tvrtko]
> 
> Signed-off-by: John Harrison <John.C.Harrison@intel.com>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> ---
>   scripts/trace.pl | 30 ++++++++++++++++++++++++++----
>   1 file changed, 26 insertions(+), 4 deletions(-)
> 
> diff --git a/scripts/trace.pl b/scripts/trace.pl
> index a73fcf38..b528d482 100755
> --- a/scripts/trace.pl
> +++ b/scripts/trace.pl
> @@ -539,7 +539,29 @@ my (%submit_avg, %execute_avg, %ctxsave_avg);
>   my $last_ts = 0;
>   my $first_ts;
>   
> -my @sorted_keys = sort {$db{$a}->{'start'} <=> $db{$b}->{'start'}} keys %db;
> +sub sortStart {
> +	my $as = $db{$a}->{'start'};
> +	my $bs = $db{$b}->{'start'};
> +	my $val;
> +
> +	$val = $as <=> $bs;
> +	$val = $a cmp $b if $val == 0;
> +
> +	return $val;
> +}
> +
> +sub sortQueue {
> +	my $as = $db{$a}->{'queue'};
> +	my $bs = $db{$b}->{'queue'};
> +	my $val;
> +
> +	$val = $as <=> $bs;
> +	$val = $a cmp $b if $val == 0;
> +
> +	return $val;
> +}
> +
> +my @sorted_keys = sort sortStart keys %db;
>   my $re_sort = 0;
>   die "Database changed size?!" unless scalar(@sorted_keys) == $key_count;
>   
> @@ -588,9 +610,9 @@ foreach my $key (@sorted_keys) {
>   	$ctxsave_avg{$ring} += $db{$key}->{'end'} - $db{$key}->{'notify'};
>   }
>   
> -@sorted_keys = sort {$db{$a}->{'start'} <=> $db{$b}->{'start'}} keys %db if $re_sort;
> +@sorted_keys = sort sortStart keys %db if $re_sort;
>   
> -foreach my $ring (keys %batch_avg) {
> +foreach my $ring (sort keys %batch_avg) {
>   	$batch_avg{$ring} /= $batch_count{$ring};
>   	$batch_total_avg{$ring} /= $batch_count{$ring};
>   	$submit_avg{$ring} /= $batch_count{$ring};
> @@ -830,7 +852,7 @@ print <<ENDHTML;
>   ENDHTML
>   
>   my $i = 0;
> -foreach my $key (sort {$db{$a}->{'queue'} <=> $db{$b}->{'queue'}} keys %db) {
> +foreach my $key (sort sortQueue keys %db) {
>   	my ($name, $ctx, $seqno) = ($db{$key}->{'name'}, $db{$key}->{'ctx'}, $db{$key}->{'seqno'});
>   	my ($queue, $start, $notify, $end) = ($db{$key}->{'queue'}, $db{$key}->{'start'}, $db{$key}->{'notify'}, $db{$key}->{'end'});
>   	my $submit = $queue + $db{$key}->{'submit-delay'};
> 

Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Regards,

Tvrtko
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

  reply	other threads:[~2018-01-24 10:10 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-23  6:32 [igt-dev] [PATCH i-g-t v2 0/4] scripts/trace.pl: Re-order calculations and fixups John.C.Harrison
2018-01-23  6:32 ` [igt-dev] [PATCH i-g-t v2 1/4] scripts/trace.pl: More hash key optimisations John.C.Harrison
2018-01-24 10:07   ` Tvrtko Ursulin
2018-01-25 16:18     ` John.C.Harrison
2018-01-25 16:24     ` John.C.Harrison
2018-01-25 16:36       ` Tvrtko Ursulin
2018-01-23  6:32 ` [igt-dev] [PATCH i-g-t v2 2/4] scripts/trace.pl: Sort order John.C.Harrison
2018-01-24 10:10   ` Tvrtko Ursulin [this message]
2018-01-23  6:32 ` [igt-dev] [PATCH i-g-t v2 3/4] scripts/trace.pl: Calculate stats only after all munging John.C.Harrison
2018-01-24 10:11   ` Tvrtko Ursulin
2018-01-25 18:11   ` Tvrtko Ursulin
2018-01-23  6:32 ` [igt-dev] [PATCH i-g-t v2 4/4] scripts/trace.pl: Simplify 'end' & 'notify' generation John.C.Harrison
2018-01-24 10:12   ` Tvrtko Ursulin
2018-01-23  6:53 ` [igt-dev] ✓ Fi.CI.BAT: success for scripts/trace.pl: Re-order calculations and fixups Patchwork
2018-01-23 10:20 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2018-01-25 16:40 ` [igt-dev] ✓ Fi.CI.BAT: success for scripts/trace.pl: Re-order calculations and fixups (rev2) Patchwork
2018-01-25 16:57 ` [igt-dev] ✓ Fi.CI.BAT: success for scripts/trace.pl: Re-order calculations and fixups (rev3) Patchwork
2018-01-25 18:04 ` [igt-dev] ✗ Fi.CI.IGT: warning for scripts/trace.pl: Re-order calculations and fixups (rev2) Patchwork
2018-01-25 18:49 ` [igt-dev] ✗ Fi.CI.IGT: failure for scripts/trace.pl: Re-order calculations and fixups (rev3) Patchwork

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=04a238b6-d404-7b49-5795-1fab5772ea28@linux.intel.com \
    --to=tvrtko.ursulin@linux.intel.com \
    --cc=IGT-Dev@Lists.FreeDesktop.Org \
    --cc=John.C.Harrison@Intel.com \
    --cc=tvrtko.ursulin@intel.com \
    /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