The number of writeback and dirty page can be read out from memcg, the unnecessary waiting can be avoided by these counts Signed-off-by: Li RongQing <lirongqing@xxxxxxxxx> --- mm/memcontrol.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 9ec024b862ac..5258651bd4ec 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -2613,9 +2613,13 @@ static int mem_cgroup_force_empty(struct mem_cgroup *memcg) progress = try_to_free_mem_cgroup_pages(memcg, 1, GFP_KERNEL, true); if (!progress) { + unsigned long num; + + num = memcg_page_state(memcg, NR_WRITEBACK) + + memcg_page_state(memcg, NR_FILE_DIRTY); nr_retries--; - /* maybe some writeback is necessary */ - congestion_wait(BLK_RW_ASYNC, HZ/10); + if (num) + congestion_wait(BLK_RW_ASYNC, HZ/10); } } -- 2.11.0 -- To unsubscribe from this list: send the line "unsubscribe cgroups" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html