HomeFreeBSD

uma: Use a taskqueue to execute uma_timeout()

Description

uma: Use a taskqueue to execute uma_timeout()

uma_timeout() has several responsibilities; it visits every UMA zone and
as of recently will drain underutilized caches, so is rather expensive
(>1ms in some cases). Currently it is executed by softclock threads
and so will preempt most other CPU activity. None of this work requires
a high scheduling priority, though, so defer it to a taskqueue so as to
avoid stalling higher-priority work.

Reviewed by: rlibby, alc, mav, kib
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D35738

Details

Provenance
markjAuthored on Jul 11 2022, 7:45 PM
Reviewer
rlibby
Differential Revision
D35738: uma: Use a taskqueue to execute uma_timeout()
Parents
rGa889a65ba369: eventtimer: Fix several races in the timer reload code
Branches
Unknown
Tags
Unknown