mm: vmpressure: Ignore costly-order allocations for direct reclaim too

The direct reclaim vmpressure path was erroneously excluded from the
PAGE_ALLOC_COSTLY_ORDER check which was added in commit "mm: vmpressure:
Ignore allocation orders above PAGE_ALLOC_COSTLY_ORDER".

Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
Signed-off-by: azrim <mirzaspc@gmail.com>
This commit is contained in:
Sultan Alsawaf 2021-07-01 23:07:00 -07:00 committed by azrim
parent 2c81993096
commit 8baa118367
No known key found for this signature in database
GPG Key ID: 497F8FB059B45D1C
3 changed files with 7 additions and 3 deletions

View File

@ -35,7 +35,8 @@ extern int vmpressure_notifier_unregister(struct notifier_block *nb);
extern void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, bool tree, extern void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, bool tree,
unsigned long scanned, unsigned long reclaimed, unsigned long scanned, unsigned long reclaimed,
int order); int order);
extern void vmpressure_prio(gfp_t gfp, struct mem_cgroup *memcg, int prio); extern void vmpressure_prio(gfp_t gfp, struct mem_cgroup *memcg, int prio,
int order);
#ifdef CONFIG_MEMCG #ifdef CONFIG_MEMCG
extern void vmpressure_init(struct vmpressure *vmpr); extern void vmpressure_init(struct vmpressure *vmpr);

View File

@ -436,8 +436,11 @@ void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, bool tree,
* *
* This function does not return any value. * This function does not return any value.
*/ */
void vmpressure_prio(gfp_t gfp, struct mem_cgroup *memcg, int prio) void vmpressure_prio(gfp_t gfp, struct mem_cgroup *memcg, int prio, int order)
{ {
if (order > PAGE_ALLOC_COSTLY_ORDER)
return;
/* /*
* We only use prio for accounting critical level. For more info * We only use prio for accounting critical level. For more info
* see comment for vmpressure_level_critical_prio variable above. * see comment for vmpressure_level_critical_prio variable above.

View File

@ -2947,7 +2947,7 @@ retry:
do { do {
vmpressure_prio(sc->gfp_mask, sc->target_mem_cgroup, vmpressure_prio(sc->gfp_mask, sc->target_mem_cgroup,
sc->priority); sc->priority, sc->order);
sc->nr_scanned = 0; sc->nr_scanned = 0;
shrink_zones(zonelist, sc); shrink_zones(zonelist, sc);