From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
To: John.C.Harrison@Intel.com, Intel-GFX@Lists.FreeDesktop.Org
Subject: Re: [PATCH i-g-t 2/4] scripts/trace.pl: Sort order
Date: Mon, 22 Jan 2018 10:19:53 +0000 [thread overview]
Message-ID: <577f873d-e9f1-1591-7b7a-c835889eadd2@linux.intel.com> (raw)
In-Reply-To: <20180120002421.13919-3-John.C.Harrison@Intel.com>
On 20/01/2018 00:24, 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.
Makes sense. I guess I never expected ns resolution time stamps to be
different.
> As the comparison test is now more than a single equation, moved it
> out into a separate sort function.
>
> Signed-off-by: John Harrison <John.C.Harrison@intel.com>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> ---
> scripts/trace.pl | 26 ++++++++++++++++++++++----
> 1 file changed, 22 insertions(+), 4 deletions(-)
>
> diff --git a/scripts/trace.pl b/scripts/trace.pl
> index 7b8a920e..cf841b7e 100755
> --- a/scripts/trace.pl
> +++ b/scripts/trace.pl
> @@ -540,7 +540,25 @@ 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'};
> +
> + return $as <=> $bs if($as ne $bs);
In the spirit of the last round of optimising work, I would check if
this is the most optimal way to write this. Perhaps it would be better
with a single comparison on this line. And not mixing string and
numerical context? Like:
my $val = $as <=> $bs;
$val = $a cmp $b if $val == 0;
return $val;
?
> +
> + return $a cmp $b;
> +}
> +
> +sub sortQueue {
> + my $as = $db{$a}->{'queue'};
> + my $bs = $db{$b}->{'queue'};
> +
> + return $as <=> $bs if($as ne $bs);
> +
> + return $a cmp $b;
> +}
> +
> +my @sorted_keys = sort sortStart keys %db;
> my $re_sort = 0;
> die "Database changed size?!" unless scalar(@sorted_keys) == $keyCount;
>
> @@ -589,9 +607,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};
> @@ -831,7 +849,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'};
>
Rest looks OK.
Regards,
Tvrtko
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2018-01-22 10:19 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-20 0:24 [PATCH i-g-t 0/4] scripts/trace.pl: Re-order calculations and fixups John.C.Harrison
2018-01-20 0:24 ` [PATCH i-g-t 1/4] scripts/trace.pl: More hash key optimisations John.C.Harrison
2018-01-22 10:14 ` Tvrtko Ursulin
2018-01-22 22:48 ` John Harrison
2018-01-20 0:24 ` [PATCH i-g-t 2/4] scripts/trace.pl: Sort order John.C.Harrison
2018-01-22 10:19 ` Tvrtko Ursulin [this message]
2018-01-22 22:51 ` John Harrison
2018-01-20 0:24 ` [PATCH i-g-t 3/4] scripts/trace.pl: Calculate stats only after all munging John.C.Harrison
2018-01-22 10:54 ` Tvrtko Ursulin
2018-01-22 22:53 ` John Harrison
2018-01-20 0:24 ` [PATCH i-g-t 4/4] scripts/trace.pl: Simplify 'end' & 'notify' generation John.C.Harrison
2018-01-22 12:01 ` Tvrtko Ursulin
2018-01-20 0:48 ` ✓ Fi.CI.BAT: success for scripts/trace.pl: Re-order calculations and fixups Patchwork
2018-01-20 9:31 ` ✗ Fi.CI.IGT: failure " 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=577f873d-e9f1-1591-7b7a-c835889eadd2@linux.intel.com \
--to=tvrtko.ursulin@linux.intel.com \
--cc=Intel-GFX@Lists.FreeDesktop.Org \
--cc=John.C.Harrison@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