Messages in this thread |  | | | Date | Wed, 29 Apr 2009 12:18:22 -0400 | | From | Rik van Riel <> | | Subject | Re: [PATCH] vmscan: evict use-once pages first (v2) |
| |
KOSAKI Motohiro wrote: > Hi > > Looks good than previous version. but I have one question. > > >> diff --git a/mm/vmscan.c b/mm/vmscan.c >> index eac9577..4471dcb 100644 >> --- a/mm/vmscan.c >> +++ b/mm/vmscan.c >> @@ -1489,6 +1489,18 @@ static void shrink_zone(int priority, struct zone *zone, >> nr[l] = scan; >> } >> >> + /* >> + * When the system is doing streaming IO, memory pressure here >> + * ensures that active file pages get deactivated, until more >> + * than half of the file pages are on the inactive list. >> + * >> + * Once we get to that situation, protect the system's working >> + * set from being evicted by disabling active file page aging. >> + * The logic in get_scan_ratio protects anonymous pages. >> + */ >> + if (nr[LRU_INACTIVE_FILE] > nr[LRU_ACTIVE_FILE]) >> + nr[LRU_ACTIVE_FILE] = 0; >> + >> while (nr[LRU_INACTIVE_ANON] || nr[LRU_ACTIVE_FILE] || >> nr[LRU_INACTIVE_FILE]) { >> for_each_evictable_lru(l) { >> > > we handle active_anon vs inactive_anon ratio by shrink_list(). > Why do you insert this logic insert shrink_zone() ? > Good question. I guess that at lower priority levels, we get to scan a lot more pages and we could go from having too many inactive file pages to not having enough in one invocation of shrink_zone().
That makes shrink_list() the better place to implement this, even if it means doing this comparison more often.
I'll send a new patch this afternoon.
|  |