* [PATCH] MM: clarify effort used in alloc_pages_bulk_*()
[not found] ` <12B831AA-4A4E-4102-ADA3-97B6FA0B119E@oracle.com>
@ 2021-08-29 22:28 ` NeilBrown
2021-08-30 9:11 ` Mel Gorman
0 siblings, 1 reply; 2+ messages in thread
From: NeilBrown @ 2021-08-29 22:28 UTC (permalink / raw)
To: Chuck Lever III, Mel Gorman
Cc: Mike Javorski, Linux NFS Mailing List, linux-mm
The alloc_pages_bulk_*() interfaces do not make it clear what degree
of success can be expected.
The code appears to allocate at least one page with the same effort as
alloc_page() when used with the same GFP flags, and then to allocate any
more only opportunistically. So a caller should not *expect* to get a
full allocation, but should not be *surprised* by one either.
Add text to the comment clarifying this.
Also fix a bug. When alloc_pages_bulk_array() is called on an array
that is partially allocated, the level of effort to get a single page is
less than when the array was completely unallocated. This behaviour is
inconsistent, but now fixed.
Fixes: 0f87d9d30f21 ("mm/page_alloc: add an array-based interface to the bulk page allocator")
Signed-off-by: NeilBrown <neilb@suse.de>
---
mm/page_alloc.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index eeb3a9cb36bb..083316c45964 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -5206,6 +5206,11 @@ static inline bool prepare_alloc_pages(gfp_t gfp_mask, unsigned int order,
* is the maximum number of pages that will be stored in the array.
*
* Returns the number of pages on the list or array.
+ *
+ * At least one page will be allocated if that is possible while
+ * remaining consistent with @gfp. Extra pages up to the requested
+ * total will be allocated opportunistically when doing so is
+ * significantly cheaper than having the caller repeat the request.
*/
unsigned long __alloc_pages_bulk(gfp_t gfp, int preferred_nid,
nodemask_t *nodemask, int nr_pages,
@@ -5307,7 +5312,7 @@ unsigned long __alloc_pages_bulk(gfp_t gfp, int preferred_nid,
pcp, pcp_list);
if (unlikely(!page)) {
/* Try and get at least one page */
- if (!nr_populated)
+ if (!nr_account)
goto failed_irq;
break;
}
--
2.32.0
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] MM: clarify effort used in alloc_pages_bulk_*()
2021-08-29 22:28 ` [PATCH] MM: clarify effort used in alloc_pages_bulk_*() NeilBrown
@ 2021-08-30 9:11 ` Mel Gorman
0 siblings, 0 replies; 2+ messages in thread
From: Mel Gorman @ 2021-08-30 9:11 UTC (permalink / raw)
To: NeilBrown
Cc: Chuck Lever III, Mike Javorski, Linux NFS Mailing List, linux-mm
On Mon, Aug 30, 2021 at 08:28:15AM +1000, NeilBrown wrote:
>
> The alloc_pages_bulk_*() interfaces do not make it clear what degree
> of success can be expected.
>
> The code appears to allocate at least one page with the same effort as
> alloc_page() when used with the same GFP flags, and then to allocate any
> more only opportunistically. So a caller should not *expect* to get a
> full allocation, but should not be *surprised* by one either.
>
> Add text to the comment clarifying this.
>
> Also fix a bug. When alloc_pages_bulk_array() is called on an array
> that is partially allocated, the level of effort to get a single page is
> less than when the array was completely unallocated. This behaviour is
> inconsistent, but now fixed.
>
> Fixes: 0f87d9d30f21 ("mm/page_alloc: add an array-based interface to the bulk page allocator")
> Signed-off-by: NeilBrown <neilb@suse.de>
Acked-by: Mel Gorman <mgorman@suse.com>
--
Mel Gorman
SUSE Labs
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-08-30 9:11 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <CAOv1SKCmdtchm5Z2NU80o49tkrHpAkPFaHKj4-vLDN5bZNCz-Q@mail.gmail.com>
[not found] ` <162846730406.22632.14734595494457390936@noble.neil.brown.name>
[not found] ` <CAOv1SKBZ7sGBnvG9-M+De+s=CfU=H_GBs4hJah1E4ks+NSMyPw@mail.gmail.com>
[not found] ` <CAOv1SKCUM5cGuXWAc7dsXtbmPMATqd245juC+S9gVXHWiZsvmQ@mail.gmail.com>
[not found] ` <162855893202.12431.3423894387218130632@noble.neil.brown.name>
[not found] ` <CAOv1SKAaSbfw53LWCCrvGCHESgdtCf5h275Zkzi9_uHkqnCrdg@mail.gmail.com>
[not found] ` <162882238416.1695.4958036322575947783@noble.neil.brown.name>
[not found] ` <CAOv1SKB_dsam7P9pzzh_SKCtA8uE9cyFdJ=qquEfhLT42-szPA@mail.gmail.com>
[not found] ` <CAOv1SKDDOj5UeUwztrMSNJnLgSoEgD8OU55hqtLHffHvaCQzzA@mail.gmail.com>
[not found] ` <162907681945.1695.10796003189432247877@noble.neil.brown.name>
[not found] ` <87777C39-BDDA-4E1E-83FA-5B46918A66D3@oracle.com>
[not found] ` <CAOv1SKA5ByO7PYQwvd6iBcPieWxEp=BfUZuigJ=7Hm4HAmTuMA@mail.gmail.com>
[not found] ` <162915491276.9892.7049267765583701172@noble.neil.brown.name>
[not found] ` <162941948235.9892.6790956894845282568@noble.neil.brown.name>
[not found] ` <CAOv1SKAyr0Cixc8eQf8-Fdnf=9Db_xZGsweq9K2E5AkALFqavQ@mail.gmail.com>
[not found] ` <CAOv1SKDDUFpgexZ_xYCe6c2-UCBK0+vicoG+LAtG2Zhispd_jg@mail.gmail.com>
[not found] ` <162960371884.9892.13803244995043191094@noble.neil.brown.name>
[not found] ` <CAOv1SKBePD6N-R0uETgcSPA-LZZ4895ZJDKTY7mYvhfu184OQQ@mail.gmail.com>
[not found] ` <162966962721.9892.5962616727949224286@noble.neil.brown.name>
[not found] ` <CAOv1SKB6xqyduf5L5hcXOe-xMN-UJOfFeE5eXVga3TviKuH0PA@mail.gmail.com>
[not found] ` <163001427749.7591.7281634750945934559@noble.neil.brown.name>
[not found] ` <CAOv1SKC+3LXhM+L9MwU2D03bpeof55-g+i=r3SWEjVWcPVCi8Q@mail.gmail.com>
[not found] ` <163004202961.7591.12633163545286005205@noble.neil.brown.name>
[not found] ` <CAOv1SKDTcg5WDp5zf3ZGL0enJ7K693W-9TMYKcrgweyzp6Qjhg@mail.gmail.com>
[not found] ` <163004848514.7591.2757618782251492498@noble.neil.brown.name>
[not found] ` <6CC9C852-CEE3-4657-86AD-9D5759E2BE1C@oracle.com>
[not found] ` <CAOv1SKAiPB62sQcnDCKC5vYbbmakfbe80KRu3JEVZVO7Trk8cw@mail.gmail.com>
[not found] ` <CAOv1SKATk1iP=J9r2x0CQzNuwq2VoRvN8Mkba3DsKq6W_tfrDQ@mail.gmail.com>
[not found] ` <416268C9-BEAC-483C-9392-8139340BC849@oracle.com>
[not found] ` <CAOv1SKCjvgSfUoFtufZ5-dB-quG=djnn-UHO286S410aVxrV0Q@mail.gmail.com>
[not found] ` <12B831AA-4A4E-4102-ADA3-97B6FA0B119E@oracle.com>
2021-08-29 22:28 ` [PATCH] MM: clarify effort used in alloc_pages_bulk_*() NeilBrown
2021-08-30 9:11 ` Mel Gorman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox