On 7/19/26 19:54, Aditya Sharma wrote: > Address-space teardown on process exit runs synchronously in the dying > task's context: exit_mm() -> mmput() -> __mmput() -> exit_mmap() walks > page tables, updates rmap, frees the RSS and drops file references, all > on the exiting CPU. For a multi-GB process that is hundreds of > milliseconds of exit-path latency, paid by whoever is waiting on the > death: a supervisor's kill-and-respawn cycle, a shell's waitpid(), an > orchestrator reaping a fleet of workers. On the test box below, killing > a 16GB process costs ~280ms before the parent's waitpid() returns. > > This series adds CONFIG_ASYNC_MM_TEARDOWN: an opt-in, default-off path > that defers __mmput() of large exiting processes to a dedicated kernel > thread (mm_reaper), so the exiting CPU is released as soon as the task > is reaped and the teardown runs off to the side.
QEMU has an rather short implementation for async teardown using clone(CLONE_VM), which is IIRC essentially the result of Claudios previous kernel work you note below. So nothing got merged because the problem was solvable in userspace. Without something like CONFIG_ASYNC_MM_TEARDOWN in the kernel. [1] https://github.com/qemu/qemu/blob/master/system/async-teardown.c -- Cheers, David
