On Thu, Nov 18, 2010 at 12:24 PM, Rik van Riel <riel@xxxxxxxxxx> wrote: > On 11/17/2010 09:47 PM, Minchan Kim wrote: >> >> On Thu, Nov 18, 2010 at 1:22 AM, Rik van Riel<riel@xxxxxxxxxx> wrote: >>> >>> On 11/17/2010 05:16 AM, Minchan Kim wrote: >>> >>>> Absolutely. But how about rsync's two touch? >>>> It can evict working set. >>>> >>>> I need the time for investigation. >>>> Thanks for the comment. >>> >>> Maybe we could exempt MADV_SEQUENTIAL and FADV_SEQUENTIAL >>> touches from promoting the page to the active list? >>> >> >> The problem is non-mapped file page. >> non-mapped file page promotion happens by only mark_page_accessed. >> But it doesn't enough information to prevent promotion(ex, vma or file) > > I believe we have enough information in filemap.c and can just > pass that as a parameter to mark_page_accessed. FADV_SEQUENTIAL is per file/vma semantic and It is used by many place. I think changing all those places isn't simple and I don't want to add new structure to propagate the information to mark_page_accessed. > >> Here is another idea. >> Current problem is following as. >> User can use fadivse with FADV_DONTNEED. >> But problem is that it can't affect when it meet dirty pages. >> So user have to sync dirty page before calling fadvise with FADV_DONTNEED. >> It would lose performance. >> >> Let's add some semantic of FADV_DONTNEED. >> It invalidates only pages which are not dirty. >> If it meets dirty page, let's move the page into inactive's tail or head