[PATCH v3 3/8] drm/sched: Make timeout KUnit tests faster
Philipp Stanner
phasta at mailbox.org
Mon Jun 30 12:20:17 UTC 2025
On Mon, 2025-06-30 at 09:05 -0300, Maíra Canal wrote:
> Hi Philipp,
>
> On 30/06/25 08:53, Philipp Stanner wrote:
> > On Wed, 2025-06-18 at 11:47 -0300, Maíra Canal wrote:
> > > As more KUnit tests are introduced to evaluate the basic
> > > capabilities
> > > of
> > > the `timedout_job()` hook, the test suite will continue to
> > > increase
> > > in
> > > duration. To reduce the overall running time of the test suite,
> > > decrease
> > > the scheduler's timeout for the timeout tests.
> > >
> > > Before this commit:
> > >
> > > [15:42:26] Elapsed time: 15.637s total, 0.002s configuring,
> > > 10.387s
> > > building, 5.229s running
> > >
> > > After this commit:
> > >
> > > [15:45:26] Elapsed time: 9.263s total, 0.002s configuring, 5.168s
> > > building, 4.037s running
> >
> > I guess those times were measured with the entire series?
>
> No, they were measured without the new test that I introduced in the
> next patch.
>
> >
> > It's not clear to me whether this patch is independent from the
> > series.
> > I suppose it is. We should aim towards having series's narrowly
> > focused
> > topic-wise, but I get why you included it here.
>
> From my perspective, this patch is a preparation to the next one. As
> I'll introduce another timeout-related test in the next patch, I was
> trying to ensure that we will keep the time-budget reasonable.
>
> >
> > That said, is there a specific reason for you aiming at ~10s
> > (9.263)?
> > That's only a bit faster than the 15.637.
> >
>
> Actually, the only thing that this patch affects is the runtime. So,
> it
> went from 5.229s to 4.037s (-22.8%). However, as we add more and more
> timeout tests, the absolute difference would get more significant.
I understand that. My point is that the decrease of total run time that
you state in your commit message doesn't sound that significant to me.
~10s is still pretty long.
>
> > Couldn't it make sense, as you're at it already, to speed this up
> > to
> > just a few seconds, like 3-5? Then it should really be quiet IRW
> > that
> > topic for a while.
>
> I believe that further decreasing the timeout could lead to racy
> scenarios and flaky tests.
That doesn't make sense to me. What could race with what? I guess you
mean the completion's timeout racing with the signaling timer.
Anyways, I'm personally not suffering from the tests being too slow. So
just take this as ideas. I'm fine with it being merged as it is now.
P.
>
> Best Regards,
> - Maíra
>
> >
> >
> > P.
> >
> > >
> > > Signed-off-by: Maíra Canal <mcanal at igalia.com>
> > > Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at igalia.com>
> > > ---
> > > drivers/gpu/drm/scheduler/tests/tests_basic.c | 8 +++++---
> > > 1 file changed, 5 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/scheduler/tests/tests_basic.c
> > > b/drivers/gpu/drm/scheduler/tests/tests_basic.c
> > > index
> > > 7230057e0594c6246f02608f07fcb1f8d738ac75..41c648782f4548e202bd871
> > > 1b45
> > > d28eead9bd0b2 100644
> > > --- a/drivers/gpu/drm/scheduler/tests/tests_basic.c
> > > +++ b/drivers/gpu/drm/scheduler/tests/tests_basic.c
> > > @@ -5,6 +5,8 @@
> > >
> > > #include "sched_tests.h"
> > >
> > > +#define MOCK_TIMEOUT (HZ / 5)
> > > +
> > > /*
> > > * DRM scheduler basic tests should check the basic functional
> > > correctness of
> > > * the scheduler, including some very light smoke testing. More
> > > targeted tests,
> > > @@ -28,7 +30,7 @@ static void drm_sched_basic_exit(struct kunit
> > > *test)
> > >
> > > static int drm_sched_timeout_init(struct kunit *test)
> > > {
> > > - test->priv = drm_mock_sched_new(test, HZ);
> > > + test->priv = drm_mock_sched_new(test, MOCK_TIMEOUT);
> > >
> > > return 0;
> > > }
> > > @@ -227,14 +229,14 @@ static void drm_sched_basic_timeout(struct
> > > kunit *test)
> > > done = drm_mock_sched_job_wait_scheduled(job, HZ);
> > > KUNIT_ASSERT_TRUE(test, done);
> > >
> > > - done = drm_mock_sched_job_wait_finished(job, HZ / 2);
> > > + done = drm_mock_sched_job_wait_finished(job,
> > > MOCK_TIMEOUT /
> > > 2);
> > > KUNIT_ASSERT_FALSE(test, done);
> > >
> > > KUNIT_ASSERT_EQ(test,
> > > job->flags &
> > > DRM_MOCK_SCHED_JOB_TIMEDOUT,
> > > 0);
> > >
> > > - done = drm_mock_sched_job_wait_finished(job, HZ);
> > > + done = drm_mock_sched_job_wait_finished(job,
> > > MOCK_TIMEOUT);
> > > KUNIT_ASSERT_FALSE(test, done);
> > >
> > > KUNIT_ASSERT_EQ(test,
> > >
> >
>
More information about the dri-devel
mailing list