From: Alexander Lobakin <alobakin@pm.me> To: "David S. Miller" <davem@davemloft.net>, Jakub Kicinski <kuba@kernel.org> Cc: John Hubbard <jhubbard@nvidia.com>, David Rientjes <rientjes@google.com>, Yisen Zhuang <yisen.zhuang@huawei.com>, Salil Mehta <salil.mehta@huawei.com>, Jesse Brandeburg <jesse.brandeburg@intel.com>, Tony Nguyen <anthony.l.nguyen@intel.com>, Saeed Mahameed <saeedm@nvidia.com>, Leon Romanovsky <leon@kernel.org>, Andrew Morton <akpm@linux-foundation.org>, Jesper Dangaard Brouer <brouer@redhat.com>, Ilias Apalodimas <ilias.apalodimas@linaro.org>, Jonathan Lemon <jonathan.lemon@gmail.com>, Willem de Bruijn <willemb@google.com>, Randy Dunlap <rdunlap@infradead.org>, Pablo Neira Ayuso <pablo@netfilter.org>, Dexuan Cui <decui@microsoft.com>, Jakub Sitnicki <jakub@cloudflare.com>, Marco Elver <elver@google.com>, Paolo Abeni <pabeni@redhat.com>, Alexander Lobakin <alobakin@pm.me>, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, intel-wired-lan@lists.osuosl.org, linux-rdma@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH v3 net-next 3/5] net: introduce common dev_page_is_reusable() Date: Sun, 31 Jan 2021 12:11:52 +0000 [thread overview] Message-ID: <20210131120844.7529-4-alobakin@pm.me> (raw) In-Reply-To: <20210131120844.7529-1-alobakin@pm.me> A bunch of drivers test the page before reusing/recycling for two common conditions: - if a page was allocated under memory pressure (pfmemalloc page); - if a page was allocated at a distant memory node (to exclude slowdowns). Introduce a new common inline for doing this, with likely() already folded inside to make driver code a bit simpler. Suggested-by: David Rientjes <rientjes@google.com> Suggested-by: Jakub Kicinski <kuba@kernel.org> Cc: John Hubbard <jhubbard@nvidia.com> Signed-off-by: Alexander Lobakin <alobakin@pm.me> Reviewed-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Acked-by: David Rientjes <rientjes@google.com> --- include/linux/skbuff.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index b027526da4f9..0e42c53b8ca9 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -2938,6 +2938,22 @@ static inline struct page *dev_alloc_page(void) return dev_alloc_pages(0); } +/** + * dev_page_is_reusable - check whether a page can be reused for network Rx + * @page: the page to test + * + * A page shouldn't be considered for reusing/recycling if it was allocated + * under memory pressure or at a distant memory node. + * + * Returns false if this page should be returned to page allocator, true + * otherwise. + */ +static inline bool dev_page_is_reusable(const struct page *page) +{ + return likely(page_to_nid(page) == numa_mem_id() && + !page_is_pfmemalloc(page)); +} + /** * skb_propagate_pfmemalloc - Propagate pfmemalloc if skb is allocated after RX page * @page: The page that was allocated from skb_alloc_page -- 2.30.0
WARNING: multiple messages have this Message-ID (diff)
From: Alexander Lobakin <alobakin@pm.me> To: intel-wired-lan@osuosl.org Subject: [Intel-wired-lan] [PATCH v3 net-next 3/5] net: introduce common dev_page_is_reusable() Date: Sun, 31 Jan 2021 12:11:52 +0000 [thread overview] Message-ID: <20210131120844.7529-4-alobakin@pm.me> (raw) In-Reply-To: <20210131120844.7529-1-alobakin@pm.me> A bunch of drivers test the page before reusing/recycling for two common conditions: - if a page was allocated under memory pressure (pfmemalloc page); - if a page was allocated at a distant memory node (to exclude slowdowns). Introduce a new common inline for doing this, with likely() already folded inside to make driver code a bit simpler. Suggested-by: David Rientjes <rientjes@google.com> Suggested-by: Jakub Kicinski <kuba@kernel.org> Cc: John Hubbard <jhubbard@nvidia.com> Signed-off-by: Alexander Lobakin <alobakin@pm.me> Reviewed-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Acked-by: David Rientjes <rientjes@google.com> --- include/linux/skbuff.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index b027526da4f9..0e42c53b8ca9 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -2938,6 +2938,22 @@ static inline struct page *dev_alloc_page(void) return dev_alloc_pages(0); } +/** + * dev_page_is_reusable - check whether a page can be reused for network Rx + * @page: the page to test + * + * A page shouldn't be considered for reusing/recycling if it was allocated + * under memory pressure or at a distant memory node. + * + * Returns false if this page should be returned to page allocator, true + * otherwise. + */ +static inline bool dev_page_is_reusable(const struct page *page) +{ + return likely(page_to_nid(page) == numa_mem_id() && + !page_is_pfmemalloc(page)); +} + /** * skb_propagate_pfmemalloc - Propagate pfmemalloc if skb is allocated after RX page * @page: The page that was allocated from skb_alloc_page -- 2.30.0
next prev parent reply other threads:[~2021-01-31 15:38 UTC|newest] Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-01-31 12:11 [PATCH v3 net-next 0/5] net: consolidate page_is_pfmemalloc() usage Alexander Lobakin 2021-01-31 12:11 ` [Intel-wired-lan] " Alexander Lobakin 2021-01-31 12:11 ` [PATCH v3 net-next 1/5] mm: constify page_is_pfmemalloc() argument Alexander Lobakin 2021-01-31 12:11 ` [Intel-wired-lan] " Alexander Lobakin 2021-01-31 12:17 ` Matthew Wilcox 2021-01-31 12:17 ` [Intel-wired-lan] " Matthew Wilcox 2021-01-31 12:11 ` [Intel-wired-lan] [PATCH v3 net-next 2/5] skbuff: constify skb_propagate_pfmemalloc() "page" argument Alexander Lobakin 2021-01-31 12:11 ` Alexander Lobakin [this message] 2021-01-31 12:11 ` [Intel-wired-lan] [PATCH v3 net-next 3/5] net: introduce common dev_page_is_reusable() Alexander Lobakin 2021-01-31 12:22 ` Matthew Wilcox 2021-01-31 12:22 ` [Intel-wired-lan] " Matthew Wilcox 2021-01-31 12:57 ` Alexander Lobakin 2021-01-31 12:57 ` [Intel-wired-lan] " Alexander Lobakin 2021-01-31 12:12 ` [PATCH v3 net-next 4/5] net: use the new dev_page_is_reusable() instead of private versions Alexander Lobakin 2021-01-31 12:12 ` [Intel-wired-lan] " Alexander Lobakin 2021-01-31 12:12 ` [Intel-wired-lan] [PATCH v3 net-next 5/5] net: page_pool: simplify page recycling condition tests Alexander Lobakin 2021-01-31 12:23 ` Matthew Wilcox 2021-01-31 12:23 ` [Intel-wired-lan] " Matthew Wilcox 2021-01-31 12:48 ` Alexander Lobakin 2021-01-31 12:48 ` [Intel-wired-lan] " Alexander Lobakin 2021-02-02 1:18 ` [PATCH v3 net-next 0/5] net: consolidate page_is_pfmemalloc() usage Jakub Kicinski 2021-02-02 1:18 ` [Intel-wired-lan] " Jakub Kicinski 2021-02-02 13:13 ` Alexander Lobakin 2021-02-02 13:13 ` [Intel-wired-lan] " Alexander Lobakin
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=20210131120844.7529-4-alobakin@pm.me \ --to=alobakin@pm.me \ --cc=akpm@linux-foundation.org \ --cc=anthony.l.nguyen@intel.com \ --cc=brouer@redhat.com \ --cc=davem@davemloft.net \ --cc=decui@microsoft.com \ --cc=elver@google.com \ --cc=ilias.apalodimas@linaro.org \ --cc=intel-wired-lan@lists.osuosl.org \ --cc=jakub@cloudflare.com \ --cc=jesse.brandeburg@intel.com \ --cc=jhubbard@nvidia.com \ --cc=jonathan.lemon@gmail.com \ --cc=kuba@kernel.org \ --cc=leon@kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=linux-rdma@vger.kernel.org \ --cc=netdev@vger.kernel.org \ --cc=pabeni@redhat.com \ --cc=pablo@netfilter.org \ --cc=rdunlap@infradead.org \ --cc=rientjes@google.com \ --cc=saeedm@nvidia.com \ --cc=salil.mehta@huawei.com \ --cc=willemb@google.com \ --cc=yisen.zhuang@huawei.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: linkBe 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.