Messages in this thread | | | From | KOSAKI Motohiro <> | Subject | Re: [PATCH 1/4] Properly account for the number of page cache pages zone_reclaim() can reclaim | Date | Wed, 10 Jun 2009 16:31:49 +0900 (JST) |
| |
> On Wed, Jun 10, 2009 at 01:01:41AM +0800, Mel Gorman wrote: > > On NUMA machines, the administrator can configure zone_reclaim_mode that > > is a more targetted form of direct reclaim. On machines with large NUMA > > distances for example, a zone_reclaim_mode defaults to 1 meaning that clean > > unmapped pages will be reclaimed if the zone watermarks are not being met. > > > > There is a heuristic that determines if the scan is worthwhile but the > > problem is that the heuristic is not being properly applied and is basically > > assuming zone_reclaim_mode is 1 if it is enabled. > > > > Historically, once enabled it was depending on NR_FILE_PAGES which may > > include swapcache pages that the reclaim_mode cannot deal with. Patch > > vmscan-change-the-number-of-the-unmapped-files-in-zone-reclaim.patch by > > Kosaki Motohiro noted that zone_page_state(zone, NR_FILE_PAGES) included > > pages that were not file-backed such as swapcache and made a calculation > > based on the inactive, active and mapped files. This is far superior > > when zone_reclaim==1 but if RECLAIM_SWAP is set, then NR_FILE_PAGES is a > > reasonable starting figure. > > > > This patch alters how zone_reclaim() works out how many pages it might be > > able to reclaim given the current reclaim_mode. If RECLAIM_SWAP is set > > in the reclaim_mode it will either consider NR_FILE_PAGES as potential > > candidates or else use NR_{IN}ACTIVE}_PAGES-NR_FILE_MAPPED to discount > > swapcache and other non-file-backed pages. If RECLAIM_WRITE is not set, > > then NR_FILE_DIRTY number of pages are not candidates. If RECLAIM_SWAP is > > not set, then NR_FILE_MAPPED are not. > > > > Signed-off-by: Mel Gorman <mel@csn.ul.ie> > > Acked-by: Christoph Lameter <cl@linux-foundation.org> > > --- > > mm/vmscan.c | 52 ++++++++++++++++++++++++++++++++++++++-------------- > > 1 files changed, 38 insertions(+), 14 deletions(-) > > > > diff --git a/mm/vmscan.c b/mm/vmscan.c > > index 2ddcfc8..2bfc76e 100644 > > --- a/mm/vmscan.c > > +++ b/mm/vmscan.c > > @@ -2333,6 +2333,41 @@ int sysctl_min_unmapped_ratio = 1; > > */ > > int sysctl_min_slab_ratio = 5; > > > > +static inline unsigned long zone_unmapped_file_pages(struct zone *zone) > > +{ > > + return zone_page_state(zone, NR_INACTIVE_FILE) + > > + zone_page_state(zone, NR_ACTIVE_FILE) - > > + zone_page_state(zone, NR_FILE_MAPPED); > > This may underflow if too many tmpfs pages are mapped.
sorry my fault. I'm preparing updated patch.
| |