Re: [PATCH] timekeeping: move multigrain ctime floor handling into timekeeper

From: Christian Brauner
Date: Thu Sep 12 2024 - 08:31:30 EST


On Wed, Sep 11, 2024 at 08:56:56AM GMT, Jeff Layton wrote:
> The kernel test robot reported a performance regression in some
> will-it-scale tests due to the multigrain timestamp patches. The data
> showed that coarse_ctime() was slowing down current_time(), which is
> called frequently in the I/O path.
>
> Add ktime_get_coarse_real_ts64_with_floor(), which returns either the
> coarse time or the floor as a realtime value. This avoids some of the
> conversion overhead of coarse_ctime(), and recovers some of the
> performance in these tests.
>
> The will-it-scale pipe1_threads microbenchmark shows these averages on
> my test rig:
>
> v6.11-rc7: 83830660 (baseline)
> v6.11-rc7 + mgtime series: 77631748 (93% of baseline)
> v6.11-rc7 + mgtime + this: 81620228 (97% of baseline)
>
> Reported-by: kernel test robot <oliver.sang@xxxxxxxxx>
> Closes: https://lore.kernel.org/oe-lkp/202409091303.31b2b713-oliver.sang@xxxxxxxxx
> Suggested-by: Arnd Bergmann <arnd@xxxxxxxxxx>
> Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx>
> ---
> Arnd suggested moving this into the timekeeper when reviewing an earlier
> version of this series, and that turns out to be better for performance.
>
> I'm not sure how this should go in (if acceptable). The multigrain
> timestamp patches that this would affect are in Christian's tree, so
> that may be best if the timekeeper maintainers are OK with this
> approach.

We will need this as otherwise we can't really merge the multigrain
timestamp work with known performance regressions?