Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1714508 > unrolled thread

Re: [RFC PATCH] mm: fadvise: avoid fadvise for fs without backing device

Started byShakeel Butt <shakeelb@google.com>
First post2017-08-18 03:30 +0200
Last post2017-08-23 02:30 +0200
Articles 4 — 2 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: [RFC PATCH] mm: fadvise: avoid fadvise for fs without backing device Shakeel Butt <shakeelb@google.com> - 2017-08-18 03:30 +0200
    Re: [RFC PATCH] mm: fadvise: avoid fadvise for fs without backing  device Andrew Morton <akpm@linux-foundation.org> - 2017-08-18 23:40 +0200
      Re: [RFC PATCH] mm: fadvise: avoid fadvise for fs without backing device Shakeel Butt <shakeelb@google.com> - 2017-08-19 01:20 +0200
        Re: [RFC PATCH] mm: fadvise: avoid fadvise for fs without backing device Shakeel Butt <shakeelb@google.com> - 2017-08-23 02:30 +0200

#1714508 — Re: [RFC PATCH] mm: fadvise: avoid fadvise for fs without backing device

FromShakeel Butt <shakeelb@google.com>
Date2017-08-18 03:30 +0200
SubjectRe: [RFC PATCH] mm: fadvise: avoid fadvise for fs without backing device
Message-ID<ufEgO-4CU-5@gated-at.bofh.it>
+linux-mm, linux-kernel

On Thu, Aug 17, 2017 at 6:10 PM, Shakeel Butt <shakeelb@google.com> wrote:
> The fadvise() manpage is silent on fadvise()'s effect on
> memory-based filesystems (shmem, hugetlbfs & ramfs) and pseudo
> file systems (procfs, sysfs, kernfs). The current implementaion
> of fadvise is mostly a noop for such filesystems except for
> FADV_DONTNEED which will trigger expensive remote LRU cache
> draining. This patch makes the noop of fadvise() on such file
> systems very explicit.
>
> However this change has two side effects for ramfs and one for
> tmpfs. First fadvise(FADV_DONTNEED) can remove the unmapped clean
> zero'ed pages of ramfs (allocated through read, readahead & read
> fault) and tmpfs (allocated through read fault). Also
> fadvise(FADV_WILLNEED) on create such clean zero'ed pages for
> ramfs. This change removes these two interfaces.
>
> Signed-off-by: Shakeel Butt <shakeelb@google.com>
> ---
>  mm/fadvise.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/mm/fadvise.c b/mm/fadvise.c
> index a43013112581..702f239cd6db 100644
> --- a/mm/fadvise.c
> +++ b/mm/fadvise.c
> @@ -52,7 +52,9 @@ SYSCALL_DEFINE4(fadvise64_64, int, fd, loff_t, offset, loff_t, len, int, advice)
>                 goto out;
>         }
>
> -       if (IS_DAX(inode)) {
> +       bdi = inode_to_bdi(mapping->host);
> +
> +       if (IS_DAX(inode) || (bdi == &noop_backing_dev_info)) {
>                 switch (advice) {
>                 case POSIX_FADV_NORMAL:
>                 case POSIX_FADV_RANDOM:
> @@ -75,8 +77,6 @@ SYSCALL_DEFINE4(fadvise64_64, int, fd, loff_t, offset, loff_t, len, int, advice)
>         else
>                 endbyte--;              /* inclusive */
>
> -       bdi = inode_to_bdi(mapping->host);
> -
>         switch (advice) {
>         case POSIX_FADV_NORMAL:
>                 f.file->f_ra.ra_pages = bdi->ra_pages;
> --
> 2.14.1.480.gb18f417b89-goog
>

[toc] | [next] | [standalone]


#1715468 — Re: [RFC PATCH] mm: fadvise: avoid fadvise for fs without backing device

FromAndrew Morton <akpm@linux-foundation.org>
Date2017-08-18 23:40 +0200
SubjectRe: [RFC PATCH] mm: fadvise: avoid fadvise for fs without backing device
Message-ID<ufX9N-Un-31@gated-at.bofh.it>
In reply to#1714508
On Thu, 17 Aug 2017 18:20:17 -0700 Shakeel Butt <shakeelb@google.com> wrote:

> +linux-mm, linux-kernel
> 
> On Thu, Aug 17, 2017 at 6:10 PM, Shakeel Butt <shakeelb@google.com> wrote:
> > The fadvise() manpage is silent on fadvise()'s effect on
> > memory-based filesystems (shmem, hugetlbfs & ramfs) and pseudo
> > file systems (procfs, sysfs, kernfs). The current implementaion
> > of fadvise is mostly a noop for such filesystems except for
> > FADV_DONTNEED which will trigger expensive remote LRU cache
> > draining. This patch makes the noop of fadvise() on such file
> > systems very explicit.
> >
> > However this change has two side effects for ramfs and one for
> > tmpfs. First fadvise(FADV_DONTNEED) can remove the unmapped clean
> > zero'ed pages of ramfs (allocated through read, readahead & read
> > fault) and tmpfs (allocated through read fault). Also
> > fadvise(FADV_WILLNEED) on create such clean zero'ed pages for
> > ramfs. This change removes these two interfaces.
> >

It doesn't sound like a risky change to me, although perhaps someone is
depending on the current behaviour for obscure reasons, who knows.

What are the reasons for this change?  Is the current behaviour causing
some sort of problem for someone?

[toc] | [prev] | [next] | [standalone]


#1715499

FromShakeel Butt <shakeelb@google.com>
Date2017-08-19 01:20 +0200
Message-ID<ufYIx-1WC-7@gated-at.bofh.it>
In reply to#1715468
On Fri, Aug 18, 2017 at 2:34 PM, Andrew Morton
<akpm@linux-foundation.org> wrote:
> On Thu, 17 Aug 2017 18:20:17 -0700 Shakeel Butt <shakeelb@google.com> wrote:
>
>> +linux-mm, linux-kernel
>>
>> On Thu, Aug 17, 2017 at 6:10 PM, Shakeel Butt <shakeelb@google.com> wrote:
>> > The fadvise() manpage is silent on fadvise()'s effect on
>> > memory-based filesystems (shmem, hugetlbfs & ramfs) and pseudo
>> > file systems (procfs, sysfs, kernfs). The current implementaion
>> > of fadvise is mostly a noop for such filesystems except for
>> > FADV_DONTNEED which will trigger expensive remote LRU cache
>> > draining. This patch makes the noop of fadvise() on such file
>> > systems very explicit.
>> >
>> > However this change has two side effects for ramfs and one for
>> > tmpfs. First fadvise(FADV_DONTNEED) can remove the unmapped clean
>> > zero'ed pages of ramfs (allocated through read, readahead & read
>> > fault) and tmpfs (allocated through read fault). Also
>> > fadvise(FADV_WILLNEED) on create such clean zero'ed pages for
>> > ramfs. This change removes these two interfaces.
>> >
>
> It doesn't sound like a risky change to me, although perhaps someone is
> depending on the current behaviour for obscure reasons, who knows.
>
> What are the reasons for this change?  Is the current behaviour causing
> some sort of problem for someone?

Yes, one of our generic library does fadvise(FADV_DONTNEED). Recently
we observed high latency in fadvise() and notice that the users have
started using tmpfs files and the latency was due to expensive remote
LRU cache draining. For normal tmpfs files (have data written on
them), fadvise(FADV_DONTNEED) will always trigger the un-needed remote
cache draining.

>
>

[toc] | [prev] | [next] | [standalone]


#1717909

FromShakeel Butt <shakeelb@google.com>
Date2017-08-23 02:30 +0200
Message-ID<uhrIt-1Ej-1@gated-at.bofh.it>
In reply to#1715499
>> It doesn't sound like a risky change to me, although perhaps someone is
>> depending on the current behaviour for obscure reasons, who knows.
>>
>> What are the reasons for this change?  Is the current behaviour causing
>> some sort of problem for someone?
>
> Yes, one of our generic library does fadvise(FADV_DONTNEED). Recently
> we observed high latency in fadvise() and notice that the users have
> started using tmpfs files and the latency was due to expensive remote
> LRU cache draining. For normal tmpfs files (have data written on
> them), fadvise(FADV_DONTNEED) will always trigger the un-needed remote
> cache draining.
>

Hi Andrew, do you have more comments or concerns?

>>
>>

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web