Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
sched/core: Free dead mm structs asynchronously in finish_task_switch()
Although mm structs are not often freed from finish_task_switch() during a context switch, they can still slow things down and waste CPU time on high priority CPUs when freed. Since unbound workqueues are now affined to the little CPU cluster, we can offload the mm struct frees away from the current CPU entirely if it's a high-performance CPU, and defer them onto a little CPU. This reduces the amount of time spent in context switches and reclaims CPU time from more-important CPUs. This is achieved without increasing the size of the mm struct by reusing the mmput async work, which is guaranteed to not be in use by the time mm_count reaches zero. Signed-off-by: Sultan Alsawaf <[email protected]> Signed-off-by: Carlos Ayrton Lopez Arroyo <[email protected]>
- Loading branch information