On Thu, Apr 22, 2021 at 01:37:02PM +0300, Vasily Averin wrote: > When user creates IPC objects it forces kernel to allocate memory for > these long-living objects. > > It makes sense to account them to restrict the host's memory consumption > from inside the memcg-limited container. > > This patch enables accounting for IPC shared memory segments, messages > semaphores and semaphore's undo lists. > --- a/ipc/msg.c > +++ b/ipc/msg.c > @@ -147,7 +147,7 @@ static int newque(struct ipc_namespace *ns, struct ipc_params *params) > key_t key = params->key; > int msgflg = params->flg; > > - msq = kvmalloc(sizeof(*msq), GFP_KERNEL); > + msq = kvmalloc(sizeof(*msq), GFP_KERNEL_ACCOUNT); Why this requires vmalloc? struct msg_queue is not big at all. > --- a/ipc/shm.c > +++ b/ipc/shm.c > @@ -619,7 +619,7 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params) > ns->shm_tot + numpages > ns->shm_ctlall) > return -ENOSPC; > > - shp = kvmalloc(sizeof(*shp), GFP_KERNEL); > + shp = kvmalloc(sizeof(*shp), GFP_KERNEL_ACCOUNT); Same question. Kmem caches can be GFP_ACCOUNT by default.