* [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