From: Andrea Righi <andrea@betterlinux.com>
To: "Pádraig Brady" <P@draigBrady.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Minchan Kim <minchan.kim@gmail.com>,
Peter Zijlstra <peterz@infradead.org>,
Johannes Weiner <hannes@cmpxchg.org>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Andrea Arcangeli <aarcange@redhat.com>,
Hugh Dickins <hughd@google.com>,
Jerry James <jamesjer@betterlinux.com>,
Marcus Sorensen <marcus@bluehost.com>,
Matt Heaton <matt@bluehost.com>,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
Rik van Riel <riel@redhat.com>, Theodore Tso <tytso@mit.edu>,
Shaohua Li <shaohua.li@intel.com>, linux-mm <linux-mm@kvack.org>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v4 0/2] fadvise: move active pages to inactive list with POSIX_FADV_DONTNEED
Date: Wed, 29 Jun 2011 16:04:53 +0200 [thread overview]
Message-ID: <20110629140453.GA13456@thinkpad> (raw)
In-Reply-To: <4E0B0A76.5010204@draigBrady.com>
On Wed, Jun 29, 2011 at 12:20:22PM +0100, Pádraig Brady wrote:
> On 29/06/11 00:03, Andrew Morton wrote:
> > On Wed, 29 Jun 2011 00:56:45 +0200
> > Andrea Righi <andrea@betterlinux.com> wrote:
> >
> >>>>
> >>>> In this way if the backup was the only user of a page, that page will be
> >>>> immediately removed from the page cache by calling POSIX_FADV_DONTNEED. If the
> >>>> page was also touched by other processes it'll be moved to the inactive list,
> >>>> having another chance of being re-added to the working set, or simply reclaimed
> >>>> when memory is needed.
> >>>
> >>> So if an application touches a page twice and then runs
> >>> POSIX_FADV_DONTNEED, that page will now not be freed.
> >>>
> >>> That's a big behaviour change. For many existing users
> >>> POSIX_FADV_DONTNEED simply doesn't work any more!
> >>
> >> Yes. This is the main concern that was raised by P__draig.
> >>
> >>>
> >>> I'd have thought that adding a new POSIX_FADV_ANDREA would be safer
> >>> than this.
> >>
> >> Actually Jerry (in cc) proposed
> >> POSIX_FADV_IDONTNEEDTHISBUTIFSOMEBODYELSEDOESTHENDONTTOUCHIT in a
> >> private email. :)
> >
> > Sounds good. Needs more underscores though.
> >
> >>>
> >>>
> >>> The various POSIX_FADV_foo's are so ill-defined that it was a mistake
> >>> to ever use them. We should have done something overtly linux-specific
> >>> and given userspace more explicit and direct pagecache control.
> >>
> >> That would give us the possibility to implement a wide range of
> >> different operations (drop, drop if used once, add to the active list,
> >> add to the inactive list, etc..). Some users always complain that they
> >> would like to have a better control over the page cache from userspace.
> >
> > Well, I'd listen to proposals ;)
> >
> > One thing we must be careful about is to not expose things like "active
> > list" to userspace. linux-4.5 may not _have_ an active list, and its
> > implementors would hate us and would have to jump through hoops to
> > implement vaguely compatible behaviour in the new scheme.
> >
> > So any primitives which are exposed should be easily implementable and
> > should *make sense* within any future scheme...
>
> Agreed.
>
> In fairness to posix_fadvise(), I think it's designed to
> specify hints for the current process' use of data
> so that it can get at it more efficiently and also be
> allow the system to manipulate cache more efficiently.
> I.E. it's not meant for direct control of the cache.
>
> That being said, existing use has allowed this,
> and it would be nice not to change without consideration.
>
> I've mentioned how high level cache control functions
> might map to the existing FADV knobs here:
>
> http://marc.info/?l=linux-kernel&m=130917619416123&w=2
>
> cheers,
> Pádraig.
OK, your proposal seems a good start to implement a better cache control
interface.
Basically you're proposing to provide the following operations:
1. DROP
2. DROP if used once
3. ADD
4. ADD if there's space
I would also add for sure:
5. ADD and will use once
Some of them are already implemented by the available fadvise()
operations, like 1 (POSIX_FADV_DONTNEED) and 3 (POSIX_FADV_WILLNEED).
Option 5 can be mapped to POSIX_FADV_NOREUSE, but it's not yet
implemented.
I need to think a little bit more about all of this. I'll try to post a
new RFC, proposing the list of high-level operations to implement the
better page cache control from userspace.
Suggestions, comments, ideas are always welcome.
Thanks,
-Andrea
WARNING: multiple messages have this Message-ID (diff)
From: Andrea Righi <andrea@betterlinux.com>
To: "Pádraig Brady" <P@draigBrady.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Minchan Kim <minchan.kim@gmail.com>,
Peter Zijlstra <peterz@infradead.org>,
Johannes Weiner <hannes@cmpxchg.org>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Andrea Arcangeli <aarcange@redhat.com>,
Hugh Dickins <hughd@google.com>,
Jerry James <jamesjer@betterlinux.com>,
Marcus Sorensen <marcus@bluehost.com>,
Matt Heaton <matt@bluehost.com>,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
Rik van Riel <riel@redhat.com>, Theodore Tso <tytso@mit.edu>,
Shaohua Li <shaohua.li@intel.com>, linux-mm <linux-mm@kvack.org>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v4 0/2] fadvise: move active pages to inactive list with POSIX_FADV_DONTNEED
Date: Wed, 29 Jun 2011 16:04:53 +0200 [thread overview]
Message-ID: <20110629140453.GA13456@thinkpad> (raw)
In-Reply-To: <4E0B0A76.5010204@draigBrady.com>
On Wed, Jun 29, 2011 at 12:20:22PM +0100, Padraig Brady wrote:
> On 29/06/11 00:03, Andrew Morton wrote:
> > On Wed, 29 Jun 2011 00:56:45 +0200
> > Andrea Righi <andrea@betterlinux.com> wrote:
> >
> >>>>
> >>>> In this way if the backup was the only user of a page, that page will be
> >>>> immediately removed from the page cache by calling POSIX_FADV_DONTNEED. If the
> >>>> page was also touched by other processes it'll be moved to the inactive list,
> >>>> having another chance of being re-added to the working set, or simply reclaimed
> >>>> when memory is needed.
> >>>
> >>> So if an application touches a page twice and then runs
> >>> POSIX_FADV_DONTNEED, that page will now not be freed.
> >>>
> >>> That's a big behaviour change. For many existing users
> >>> POSIX_FADV_DONTNEED simply doesn't work any more!
> >>
> >> Yes. This is the main concern that was raised by P__draig.
> >>
> >>>
> >>> I'd have thought that adding a new POSIX_FADV_ANDREA would be safer
> >>> than this.
> >>
> >> Actually Jerry (in cc) proposed
> >> POSIX_FADV_IDONTNEEDTHISBUTIFSOMEBODYELSEDOESTHENDONTTOUCHIT in a
> >> private email. :)
> >
> > Sounds good. Needs more underscores though.
> >
> >>>
> >>>
> >>> The various POSIX_FADV_foo's are so ill-defined that it was a mistake
> >>> to ever use them. We should have done something overtly linux-specific
> >>> and given userspace more explicit and direct pagecache control.
> >>
> >> That would give us the possibility to implement a wide range of
> >> different operations (drop, drop if used once, add to the active list,
> >> add to the inactive list, etc..). Some users always complain that they
> >> would like to have a better control over the page cache from userspace.
> >
> > Well, I'd listen to proposals ;)
> >
> > One thing we must be careful about is to not expose things like "active
> > list" to userspace. linux-4.5 may not _have_ an active list, and its
> > implementors would hate us and would have to jump through hoops to
> > implement vaguely compatible behaviour in the new scheme.
> >
> > So any primitives which are exposed should be easily implementable and
> > should *make sense* within any future scheme...
>
> Agreed.
>
> In fairness to posix_fadvise(), I think it's designed to
> specify hints for the current process' use of data
> so that it can get at it more efficiently and also be
> allow the system to manipulate cache more efficiently.
> I.E. it's not meant for direct control of the cache.
>
> That being said, existing use has allowed this,
> and it would be nice not to change without consideration.
>
> I've mentioned how high level cache control functions
> might map to the existing FADV knobs here:
>
> http://marc.info/?l=linux-kernel&m=130917619416123&w=2
>
> cheers,
> Padraig.
OK, your proposal seems a good start to implement a better cache control
interface.
Basically you're proposing to provide the following operations:
1. DROP
2. DROP if used once
3. ADD
4. ADD if there's space
I would also add for sure:
5. ADD and will use once
Some of them are already implemented by the available fadvise()
operations, like 1 (POSIX_FADV_DONTNEED) and 3 (POSIX_FADV_WILLNEED).
Option 5 can be mapped to POSIX_FADV_NOREUSE, but it's not yet
implemented.
I need to think a little bit more about all of this. I'll try to post a
new RFC, proposing the list of high-level operations to implement the
better page cache control from userspace.
Suggestions, comments, ideas are always welcome.
Thanks,
-Andrea
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2011-06-29 14:05 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-27 13:29 [PATCH v4 0/2] fadvise: move active pages to inactive list with POSIX_FADV_DONTNEED Andrea Righi
2011-06-27 13:29 ` Andrea Righi
2011-06-27 13:29 ` [PATCH v4 1/2] mm: introduce __invalidate_mapping_pages() Andrea Righi
2011-06-27 13:29 ` Andrea Righi
2011-06-27 13:29 ` [PATCH v4 2/2] fadvise: move active pages to inactive list with POSIX_FADV_DONTNEED Andrea Righi
2011-06-27 13:29 ` Andrea Righi
2011-06-28 22:12 ` [PATCH v4 0/2] " Andrew Morton
2011-06-28 22:12 ` Andrew Morton
2011-06-28 22:56 ` Andrea Righi
2011-06-28 22:56 ` Andrea Righi
2011-06-28 23:03 ` Andrew Morton
2011-06-28 23:03 ` Andrew Morton
2011-06-29 11:20 ` Pádraig Brady
2011-06-29 11:20 ` Pádraig Brady
2011-06-29 14:04 ` Andrea Righi [this message]
2011-06-29 14:04 ` Andrea Righi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110629140453.GA13456@thinkpad \
--to=andrea@betterlinux.com \
--cc=P@draigBrady.com \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=hannes@cmpxchg.org \
--cc=hughd@google.com \
--cc=jamesjer@betterlinux.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=marcus@bluehost.com \
--cc=matt@bluehost.com \
--cc=minchan.kim@gmail.com \
--cc=peterz@infradead.org \
--cc=riel@redhat.com \
--cc=shaohua.li@intel.com \
--cc=tytso@mit.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.