Re: [PATCH 1/1] mm: introduce process_reap system call

From: Suren Baghdasaryan
Date: Wed Jun 30 2021 - 15:06:53 EST


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!