memcg: fix zone congestion
ZONE_CONGESTED should be a state of global memory reclaim. If not, a busy memcg sets this and give unnecessary throttoling in wait_iff_congested() against memory recalim in other contexts. This makes system performance bad. I'll think about "memcg is congested!" flag is required or not, later. But this fix is required first. Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Reviewed-by: Minchan Kim <minchan.kim@gmail.com> Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp> Acked-by: Ying Han <yinghan@google.com> Cc: Balbir Singh <balbir@in.ibm.com> Cc: Johannes Weiner <jweiner@redhat.com> Cc: Michal Hocko <mhocko@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
d5f33d45e4
commit
d6c438b6cd
1 changed files with 1 additions and 1 deletions
|
@ -937,7 +937,7 @@ static unsigned long shrink_page_list(struct list_head *page_list,
|
||||||
* back off and wait for congestion to clear because further reclaim
|
* back off and wait for congestion to clear because further reclaim
|
||||||
* will encounter the same problem
|
* will encounter the same problem
|
||||||
*/
|
*/
|
||||||
if (nr_dirty == nr_congested && nr_dirty != 0)
|
if (nr_dirty && nr_dirty == nr_congested && scanning_global_lru(sc))
|
||||||
zone_set_flag(zone, ZONE_CONGESTED);
|
zone_set_flag(zone, ZONE_CONGESTED);
|
||||||
|
|
||||||
free_page_list(&free_pages);
|
free_page_list(&free_pages);
|
||||||
|
|
Loading…
Reference in a new issue