On Wed, Jun 30, 2021 at 12:00 PM Shakeel Butt <shakeelb@xxxxxxxxxx> wrote: > > On Wed, Jun 30, 2021 at 11:44 AM Suren Baghdasaryan <surenb@xxxxxxxxxx> wrote: > > > [...] > > > > + /* > > > > + * If the task is dying and in the process of releasing its memory > > > > + * then get its mm. > > > > + */ > > > > + task_lock(task); > > > > + if (task_will_free_mem(task) && (task->flags & PF_KTHREAD) == 0) { > > > > > > task_will_free_mem() is fine here but I think in parallel we should > > > optimize this function. At the moment it is traversing all the > > > processes on the machine. It is very normal to have tens of thousands > > > of processes on big machines, so it would be really costly when > > > reaping a bunch of processes. > > > > Hmm. But I think we still need to make sure that the mm is not shared > > with another non-dying process. IIUC that's the point of that > > traversal. Am I mistaken? > > You are right. I am talking about efficiently finding all processes > which are sharing mm (maybe linked into another list) instead of > traversing all the processes on the system. Oh, I see. I think that's a good idea but belongs to a separate patch as an optimization for task_will_free_mem(). Thanks for reviewing and for good suggestions!