On Wed 03-05-17 15:52:04, David Rientjes wrote: > On Wed, 3 May 2017, Michal Hocko wrote: [...] > > /* > > - * If there is enough inactive page cache, i.e. if the size of the > > - * inactive list is greater than that of the active list *and* the > > - * inactive list actually has some pages to scan on this priority, we > > - * do not reclaim anything from the anonymous working set right now. > > - * Without the second condition we could end up never scanning an > > - * lruvec even if it has plenty of old anonymous pages unless the > > - * system is under heavy pressure. > > + * Make sure there are enough pages on the biased LRU before we go > > + * and do an exclusive reclaim from that list, i.e. if the > > + * size of the inactive list is greater than that of the active list > > + * *and* the inactive list actually has some pages to scan on this > > + * priority. > > + * Without the second condition we could end up never scanning other > > + * lruvecs even if they have plenty of old pages unless the system is > > + * under heavy pressure. > > */ > > - if (!inactive_list_is_low(lruvec, true, memcg, sc, false) && > > - lruvec_lru_size(lruvec, LRU_INACTIVE_FILE, sc->reclaim_idx) >> sc->priority) { > > - scan_balance = SCAN_FILE; > > + lru = LRU_INACTIVE_ANON + LRU_FILE * (scan_balance == SCAN_FILE); > > This part seems to complicate the logic since it determines the lru under > test based on the current setting of scan_balance. I think I prefer > individual heuristics with well written comments, but others may feel > differently about this. I do not claim the code would more obvious than before but it gets rid of the duplication which is usually a good thing. This size check has the same reasoning regardless of the type of the LRU. But I am not going to insist... > > + if (!inactive_list_is_low(lruvec, is_file_lru(lru), memcg, sc, false) && > > + lruvec_lru_size(lruvec, lru, sc->reclaim_idx) >> sc->priority) > > goto out; > > - } > > > > scan_balance = SCAN_FRACT; > > -- Michal Hocko SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>