On Wed, Feb 21, 2018 at 9:57 AM, Christopher Lameter <cl@xxxxxxxxx> wrote: > On Wed, 21 Feb 2018, Shakeel Butt wrote: > >> On Wed, Feb 21, 2018 at 8:09 AM, Christopher Lameter <cl@xxxxxxxxx> wrote: >> > Another way to solve this is to switch the user context right? >> > >> > Isnt it possible to avoid these patches if do the allocation in another >> > task context instead? >> > >> >> Sorry, can you please explain what you mean by 'switch the user >> context'. Is there any example in kernel which does something similar? > > See include/linux/task_work.h. One use case is in mntput_no_expire() in > linux/fs/namespace.c > >From what I understand, using task_work will require fanotify/inotify event handler to allocate memory asynchronously. IMHO the code will be much more complex if we go through that route. > Another way is by adding a field 'remote_memcg_to_charge' in > task_struct and set it before the allocation and in memcontrol.c, > first check if current->remote_memcg_to_charge is set otherwise use > the memcg of current. Also if we provide a wrapper to do that for the > user, there will be a lot less plumbing. > > Please let me know if you prefer this approach. > What do you think of the above approach. I think the amount and complexity of code will be much less. >> > Are there really any other use cases beyond fsnotify? >> > >> >> Another use case I have in mind and plan to upstream is to bind a >> filesystem mount with a memcg. So, all the file pages (or anon pages >> for shmem) and kmem (like inodes and dentry) will be charged to that >> memcg. > > The mount logic already uses task_work.h. That may be the approach to > expand there. The task_work approach will require that the job is already running at the time of mount operation. Usually the mount operations are done by either admin or the control task starting the job and is a part of setting up the environment. So, there might not be any process running at the time of mount operation. -- To unsubscribe from this list: send the line "unsubscribe cgroups" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html