All of lore.kernel.org
 help / color / mirror / Atom feed
From: Roman Gushchin <guro@fb.com>
To: <bpf@vger.kernel.org>
Cc: <netdev@vger.kernel.org>, Alexei Starovoitov <ast@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>, <kernel-team@fb.com>,
	<linux-kernel@vger.kernel.org>, Roman Gushchin <guro@fb.com>,
	Song Liu <songliubraving@fb.com>
Subject: [PATCH bpf-next v3 07/29] bpf: refine memcg-based memory accounting for hashtab maps
Date: Thu, 30 Jul 2020 14:22:48 -0700	[thread overview]
Message-ID: <20200730212310.2609108-8-guro@fb.com> (raw)
In-Reply-To: <20200730212310.2609108-1-guro@fb.com>

Include percpu objects and the size of map metadata into the
accounting.

Signed-off-by: Roman Gushchin <guro@fb.com>
Acked-by: Song Liu <songliubraving@fb.com>
---
 kernel/bpf/hashtab.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/kernel/bpf/hashtab.c b/kernel/bpf/hashtab.c
index 024276787055..9d0432170812 100644
--- a/kernel/bpf/hashtab.c
+++ b/kernel/bpf/hashtab.c
@@ -263,10 +263,11 @@ static int prealloc_init(struct bpf_htab *htab)
 		goto skip_percpu_elems;
 
 	for (i = 0; i < num_entries; i++) {
+		const gfp_t gfp = GFP_USER | __GFP_NOWARN | __GFP_ACCOUNT;
 		u32 size = round_up(htab->map.value_size, 8);
 		void __percpu *pptr;
 
-		pptr = __alloc_percpu_gfp(size, 8, GFP_USER | __GFP_NOWARN);
+		pptr = __alloc_percpu_gfp(size, 8, gfp);
 		if (!pptr)
 			goto free_elems;
 		htab_elem_set_ptr(get_htab_elem(htab, i), htab->map.key_size,
@@ -321,7 +322,7 @@ static int alloc_extra_elems(struct bpf_htab *htab)
 	int cpu;
 
 	pptr = __alloc_percpu_gfp(sizeof(struct htab_elem *), 8,
-				  GFP_USER | __GFP_NOWARN);
+				  GFP_USER | __GFP_NOWARN | __GFP_ACCOUNT);
 	if (!pptr)
 		return -ENOMEM;
 
@@ -424,7 +425,7 @@ static struct bpf_map *htab_map_alloc(union bpf_attr *attr)
 	u64 cost;
 	int err;
 
-	htab = kzalloc(sizeof(*htab), GFP_USER);
+	htab = kzalloc(sizeof(*htab), GFP_USER | __GFP_ACCOUNT);
 	if (!htab)
 		return ERR_PTR(-ENOMEM);
 
@@ -827,6 +828,7 @@ static struct htab_elem *alloc_htab_elem(struct bpf_htab *htab, void *key,
 					 bool percpu, bool onallcpus,
 					 struct htab_elem *old_elem)
 {
+	const gfp_t gfp = GFP_ATOMIC | __GFP_NOWARN | __GFP_ACCOUNT;
 	u32 size = htab->map.value_size;
 	bool prealloc = htab_is_prealloc(htab);
 	struct htab_elem *l_new, **pl_new;
@@ -859,8 +861,7 @@ static struct htab_elem *alloc_htab_elem(struct bpf_htab *htab, void *key,
 				l_new = ERR_PTR(-E2BIG);
 				goto dec_count;
 			}
-		l_new = kmalloc_node(htab->elem_size, GFP_ATOMIC | __GFP_NOWARN,
-				     htab->map.numa_node);
+		l_new = kmalloc_node(htab->elem_size, gfp, htab->map.numa_node);
 		if (!l_new) {
 			l_new = ERR_PTR(-ENOMEM);
 			goto dec_count;
@@ -876,8 +877,7 @@ static struct htab_elem *alloc_htab_elem(struct bpf_htab *htab, void *key,
 			pptr = htab_elem_get_ptr(l_new, key_size);
 		} else {
 			/* alloc_percpu zero-fills */
-			pptr = __alloc_percpu_gfp(size, 8,
-						  GFP_ATOMIC | __GFP_NOWARN);
+			pptr = __alloc_percpu_gfp(size, 8, gfp);
 			if (!pptr) {
 				kfree(l_new);
 				l_new = ERR_PTR(-ENOMEM);
-- 
2.26.2


  parent reply	other threads:[~2020-07-30 21:23 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-30 21:22 [PATCH bpf-next v3 00/29] bpf: switch to memcg-based memory accounting Roman Gushchin
2020-07-30 21:22 ` [PATCH bpf-next v3 01/29] bpf: memcg-based memory accounting for bpf progs Roman Gushchin
2020-07-31 22:48   ` Song Liu
2020-07-30 21:22 ` [PATCH bpf-next v3 02/29] bpf: memcg-based memory accounting for bpf maps Roman Gushchin
2020-07-30 21:22 ` [PATCH bpf-next v3 03/29] bpf: refine memcg-based memory accounting for arraymap maps Roman Gushchin
2020-07-30 21:22 ` [PATCH bpf-next v3 04/29] bpf: refine memcg-based memory accounting for cpumap maps Roman Gushchin
2020-07-30 21:22 ` [PATCH bpf-next v3 05/29] bpf: memcg-based memory accounting for cgroup storage maps Roman Gushchin
2020-07-30 21:22 ` [PATCH bpf-next v3 06/29] bpf: refine memcg-based memory accounting for devmap maps Roman Gushchin
2020-07-30 21:22 ` Roman Gushchin [this message]
2020-07-30 21:22 ` [PATCH bpf-next v3 08/29] bpf: memcg-based memory accounting for lpm_trie maps Roman Gushchin
2020-07-30 21:22 ` [PATCH bpf-next v3 09/29] bpf: memcg-based memory accounting for bpf ringbuffer Roman Gushchin
2020-07-30 21:22 ` [PATCH bpf-next v3 10/29] bpf: memcg-based memory accounting for socket storage maps Roman Gushchin
2020-07-30 21:22 ` [PATCH bpf-next v3 11/29] bpf: refine memcg-based memory accounting for sockmap and sockhash maps Roman Gushchin
2020-07-30 21:22 ` [PATCH bpf-next v3 12/29] bpf: refine memcg-based memory accounting for xskmap maps Roman Gushchin
2020-07-30 21:22 ` [PATCH bpf-next v3 13/29] bpf: eliminate rlimit-based memory accounting for arraymap maps Roman Gushchin
2020-07-30 21:22 ` [PATCH bpf-next v3 14/29] bpf: eliminate rlimit-based memory accounting for bpf_struct_ops maps Roman Gushchin
2020-07-30 21:22 ` [PATCH bpf-next v3 15/29] bpf: eliminate rlimit-based memory accounting for cpumap maps Roman Gushchin
2020-07-30 21:22 ` [PATCH bpf-next v3 16/29] bpf: eliminate rlimit-based memory accounting for cgroup storage maps Roman Gushchin
2020-07-30 21:22 ` [PATCH bpf-next v3 17/29] bpf: eliminate rlimit-based memory accounting for devmap maps Roman Gushchin
2020-07-30 21:22 ` [PATCH bpf-next v3 18/29] bpf: eliminate rlimit-based memory accounting for hashtab maps Roman Gushchin
2020-07-30 21:23 ` [PATCH bpf-next v3 19/29] bpf: eliminate rlimit-based memory accounting for lpm_trie maps Roman Gushchin
2020-07-30 21:23 ` [PATCH bpf-next v3 20/29] bpf: eliminate rlimit-based memory accounting for queue_stack_maps maps Roman Gushchin
2020-07-30 21:23 ` [PATCH bpf-next v3 21/29] bpf: eliminate rlimit-based memory accounting for reuseport_array maps Roman Gushchin
2020-07-30 21:23 ` [PATCH bpf-next v3 22/29] bpf: eliminate rlimit-based memory accounting for bpf ringbuffer Roman Gushchin
2020-07-30 21:23 ` [PATCH bpf-next v3 23/29] bpf: eliminate rlimit-based memory accounting for sockmap and sockhash maps Roman Gushchin
2020-07-30 21:23 ` [PATCH bpf-next v3 24/29] bpf: eliminate rlimit-based memory accounting for stackmap maps Roman Gushchin
2020-07-30 21:23 ` [PATCH bpf-next v3 25/29] bpf: eliminate rlimit-based memory accounting for socket storage maps Roman Gushchin
2020-07-30 21:23 ` [PATCH bpf-next v3 26/29] bpf: eliminate rlimit-based memory accounting for xskmap maps Roman Gushchin
2020-07-30 21:23 ` [PATCH bpf-next v3 27/29] bpf: eliminate rlimit-based memory accounting infra for bpf maps Roman Gushchin
2020-07-31 22:47   ` Song Liu
2020-07-30 21:23 ` [PATCH bpf-next v3 28/29] bpf: eliminate rlimit-based memory accounting for bpf progs Roman Gushchin
2020-07-30 21:23 ` [PATCH bpf-next v3 29/29] bpf: samples: do not touch RLIMIT_MEMLOCK Roman Gushchin
2020-08-03 12:05 ` [PATCH bpf-next v3 00/29] bpf: switch to memcg-based memory accounting Daniel Borkmann
2020-08-03 15:34   ` Roman Gushchin
2020-08-03 16:39     ` Daniel Borkmann
2020-08-03 17:05       ` Roman Gushchin
2020-08-03 18:37         ` Daniel Borkmann
2020-08-03 19:06           ` Roman Gushchin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200730212310.2609108-8-guro@fb.com \
    --to=guro@fb.com \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=kernel-team@fb.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=songliubraving@fb.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.