Messages in this thread | | | From | "Rafael J. Wysocki" <> | Subject | Re: [PATCHv2 2/5] vmscan: Kill hibernation specific reclaim logic and unify it | Date | Mon, 2 Nov 2009 20:05:04 +0100 |
| |
On Monday 02 November 2009, KOSAKI Motohiro wrote: > Hi > > Thank you for the reviewing :) > > > > 2) shrink_all_zone() try to shrink all pages at a time. but it doesn't works > > > fine on numa system. > > > example) > > > System has 4GB memory and each node have 2GB. and hibernate need 1GB. > > > > > > optimal) > > > steal 500MB from each node. > > > shrink_all_zones) > > > steal 1GB from node-0. > > > > I haven't given much thought to numa awareness in hibernate code, but I > > can say that the shrink_all_memory interface is woefully inadequate as > > far as zone awareness goes. Since lowmem needs to be atomically restored > > before we can restore highmem, we really need to be able to ask for a > > particular number of pages of a particular zone type to be freed. > > Honestly, I am not suspend/hibernation expert. Can I ask why caller need to know > per-zone number of freed pages information? if hibernation don't need highmem.
It does need highmem. At least the mainline version does.
> following incremental patch prevent highmem reclaim perfectly. Is it enough?
Thanks, Rafael
> --- > mm/vmscan.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/mm/vmscan.c b/mm/vmscan.c > index e6ea011..7fb3435 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -2265,7 +2265,7 @@ unsigned long shrink_all_memory(unsigned long nr_to_reclaim) > { > struct reclaim_state reclaim_state; > struct scan_control sc = { > - .gfp_mask = GFP_HIGHUSER_MOVABLE, > + .gfp_mask = GFP_KERNEL, > .may_swap = 1, > .may_unmap = 1, > .may_writepage = 1,
| |