Re: [PATCH v3 08/16] memcg: enable accounting of ipc resources
From: Vasily Averin <hidden>
Date: 2021-04-23 12:32:01
On 4/23/21 3:16 PM, Alexey Dobriyan wrote:
On Thu, Apr 22, 2021 at 01:37:02PM +0300, Vasily Averin wrote:quoted
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.quoted
--- 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.quoted
--- 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.
It is side effect: previously all these objects was allocated via ipc_alloc/ipc_alloc_rcu function called kvmalloc inside. Should I replace it to kmalloc right in this patch? Thank you, Vasily Averin