Commit bce7394a3ef82b8477952fbab838e4a6e8cb47d2

Authored by Minchan Kim
Committed by Linus Torvalds
1 parent 96cb4df5dd

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

... ... @@ -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();
... ... @@ -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.