[Intel-gfx] [PATCH i-g-t v5 07/11] tests/perf: make enable-disable more reliable
Matthew Auld
matthew.william.auld at gmail.com
Tue Sep 26 17:43:30 UTC 2017
On 31 August 2017 at 11:35, Lionel Landwerlin
<lionel.g.landwerlin at intel.com> wrote:
> Estimation of the amount of reports can only refer to periodic ones,
> as context switch reports completely depend on what happens on the
> system. Also generate some load to prevent clock frequency changes to
> impact our measurement.
>
> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
> ---
> tests/perf.c | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
> 1 file changed, 90 insertions(+), 6 deletions(-)
>
> diff --git a/tests/perf.c b/tests/perf.c
> index 15a43cf8..3b2e1763 100644
> --- a/tests/perf.c
> +++ b/tests/perf.c
> @@ -2796,10 +2796,18 @@ test_enable_disable(void)
> int n_full_oa_reports = oa_buf_size / report_size;
> uint64_t fill_duration = n_full_oa_reports * oa_period;
>
> + load_helper_init();
> + load_helper_run(HIGH);
> +
> stream_fd = __perf_open(drm_fd, ¶m);
>
> for (int i = 0; i < 5; i++) {
> int len;
> + uint32_t n_periodic_reports;
> + struct drm_i915_perf_record_header *header;
> + uint32_t first_timestamp = 0, last_timestamp = 0;
> + uint32_t last_periodic_report[64];
> + double tick_per_period;
>
> /* Giving enough time for an overflow might help catch whether
> * the OA unit has been enabled even if the driver might at
> @@ -2819,18 +2827,91 @@ test_enable_disable(void)
>
> nanosleep(&(struct timespec){ .tv_sec = 0,
> .tv_nsec = fill_duration / 2 },
> - NULL);
> + NULL);
>
> - while ((len = read(stream_fd, buf, buf_size)) == -1 && errno == EINTR)
> - ;
> + n_periodic_reports = 0;
>
> - igt_assert_neq(len, -1);
> + /* Because of the race condition between notification of new
> + * reports and reports landing in memory, we need to rely on
> + * timestamps to figure whether we've read enough of them.
> + */
> + while (((last_timestamp - first_timestamp) * oa_exponent_to_ns(oa_exponent)) <
(last_timestamp - first_timestamp) * oa_period
Reviewed-by: Matthew Auld <matthew.auld at intel.com>
More information about the Intel-gfx
mailing list