Commit bce7394a3ef82b8477952fbab838e4a6e8cb47d2
Committed by
Linus Torvalds
1 parent
96cb4df5dd
Exists in
master
and in
20 other branches
page-allocator: reset wmark_min and inactive ratio of zone when hotplug happens
Solve two problems. Whenever memory hotplug sucessfully happens, zone->present_pages have to be changed. 1) Now memory hotplug calls setup_per_zone_wmark_min only when online_pages called, not offline_pages. It breaks balance. 2) If zone->present_pages is changed, we also have to change zone->inactive_ratio. That's because inactive_ratio depends on zone->present_pages. Signed-off-by: Minchan Kim <minchan.kim@gmail.com> Acked-by: Yasunori Goto <y-goto@jp.fujitsu.com> Cc: Rik van Riel <riel@redhat.com> Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Showing 2 changed files with 5 additions and 1 deletions Side-by-side Diff
mm/memory_hotplug.c
... | ... | @@ -423,6 +423,7 @@ |
423 | 423 | zone->zone_pgdat->node_present_pages += onlined_pages; |
424 | 424 | |
425 | 425 | setup_per_zone_wmarks(); |
426 | + calculate_zone_inactive_ratio(zone); | |
426 | 427 | if (onlined_pages) { |
427 | 428 | kswapd_run(zone_to_nid(zone)); |
428 | 429 | node_set_state(zone_to_nid(zone), N_HIGH_MEMORY); |
... | ... | @@ -831,6 +832,9 @@ |
831 | 832 | zone->zone_pgdat->node_present_pages -= offlined_pages; |
832 | 833 | totalram_pages -= offlined_pages; |
833 | 834 | num_physpages -= offlined_pages; |
835 | + | |
836 | + setup_per_zone_wmarks(); | |
837 | + calculate_zone_inactive_ratio(zone); | |
834 | 838 | |
835 | 839 | vm_total_pages = nr_free_pagecache_pages(); |
836 | 840 | writeback_set_ratelimit(); |
mm/page_alloc.c
... | ... | @@ -4397,7 +4397,7 @@ |
4397 | 4397 | |
4398 | 4398 | /** |
4399 | 4399 | * setup_per_zone_wmarks - called when min_free_kbytes changes |
4400 | - * or when memory is hot-added | |
4400 | + * or when memory is hot-{added|removed} | |
4401 | 4401 | * |
4402 | 4402 | * Ensures that the watermark[min,low,high] values for each zone are set |
4403 | 4403 | * correctly with respect to min_free_kbytes. |