All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Minchan Kim <minchan.kim@gmail.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	linux-mm <linux-mm@kvack.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Rik van Riel <riel@redhat.com>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Nick Piggin <npiggin@kernel.dk>
Subject: Re: [RFC 1/2] deactive invalidated pages
Date: Mon, 22 Nov 2010 23:42:57 -0800	[thread overview]
Message-ID: <20101122234257.f14bad44.akpm@linux-foundation.org> (raw)
In-Reply-To: <AANLkTinZmv540r+EkjwUu6cd9c1u7qG9iR+pvp3YqZC1@mail.gmail.com>

On Tue, 23 Nov 2010 16:40:03 +0900 Minchan Kim <minchan.kim@gmail.com> wrote:

> Hi KOSAKI,
> 
> 2010/11/23 KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>:
> >> By Other approach, app developer uses POSIX_FADV_DONTNEED.
> >> But it has a problem. If kernel meets page is writing
> >> during invalidate_mapping_pages, it can't work.
> >> It is very hard for application programmer to use it.
> >> Because they always have to sync data before calling
> >> fadivse(..POSIX_FADV_DONTNEED) to make sure the pages could
> >> be discardable. At last, they can't use deferred write of kernel
> >> so that they could see performance loss.
> >> (http://insights.oetiker.ch/linux/fadvise.html)
> >
> > If rsync use the above url patch, we don't need your patch.
> > fdatasync() + POSIX_FADV_DONTNEED should work fine.
> 
> It works well. But it needs always fdatasync before calling fadvise.
> For small file, it hurt performance since we can't use the deferred write.

fdatasync() is (much) better than nothing, but a userspace application
which is carefully managing its IO scheduling should use
sync_file_range(SYNC_FILE_RANGE_WRITE) to push data at the disk and
should then run fadvise(DONTNEED) against the same data a few seconds
later, after the IO has completed.

That way, the application won't block against the write I/O at all,
unless of course someone else is thrashing the disk as well, etc.

If the app is doing a lot of file I/O (eg, rsync) then this shouldn't
be too hard to arrange.  Although the payback will be pretty small
unless the IO-intensive process is also compute-intensive at times. 
And such applications are a) fairly rare and b) poorly designed:
shouldn't be doing heavy IO and heavy compute in the same thread!



WARNING: multiple messages have this Message-ID (diff)
From: Andrew Morton <akpm@linux-foundation.org>
To: Minchan Kim <minchan.kim@gmail.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	linux-mm <linux-mm@kvack.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Rik van Riel <riel@redhat.com>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Nick Piggin <npiggin@kernel.dk>
Subject: Re: [RFC 1/2] deactive invalidated pages
Date: Mon, 22 Nov 2010 23:42:57 -0800	[thread overview]
Message-ID: <20101122234257.f14bad44.akpm@linux-foundation.org> (raw)
In-Reply-To: <AANLkTinZmv540r+EkjwUu6cd9c1u7qG9iR+pvp3YqZC1@mail.gmail.com>

On Tue, 23 Nov 2010 16:40:03 +0900 Minchan Kim <minchan.kim@gmail.com> wrote:

> Hi KOSAKI,
> 
> 2010/11/23 KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>:
> >> By Other approach, app developer uses POSIX_FADV_DONTNEED.
> >> But it has a problem. If kernel meets page is writing
> >> during invalidate_mapping_pages, it can't work.
> >> It is very hard for application programmer to use it.
> >> Because they always have to sync data before calling
> >> fadivse(..POSIX_FADV_DONTNEED) to make sure the pages could
> >> be discardable. At last, they can't use deferred write of kernel
> >> so that they could see performance loss.
> >> (http://insights.oetiker.ch/linux/fadvise.html)
> >
> > If rsync use the above url patch, we don't need your patch.
> > fdatasync() + POSIX_FADV_DONTNEED should work fine.
> 
> It works well. But it needs always fdatasync before calling fadvise.
> For small file, it hurt performance since we can't use the deferred write.

fdatasync() is (much) better than nothing, but a userspace application
which is carefully managing its IO scheduling should use
sync_file_range(SYNC_FILE_RANGE_WRITE) to push data at the disk and
should then run fadvise(DONTNEED) against the same data a few seconds
later, after the IO has completed.

That way, the application won't block against the write I/O at all,
unless of course someone else is thrashing the disk as well, etc.

If the app is doing a lot of file I/O (eg, rsync) then this shouldn't
be too hard to arrange.  Although the payback will be pretty small
unless the IO-intensive process is also compute-intensive at times. 
And such applications are a) fairly rare and b) poorly designed:
shouldn't be doing heavy IO and heavy compute in the same thread!


--
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 policy in Canada: sign http://dissolvethecrtc.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2010-11-23  7:48 UTC|newest]

Thread overview: 108+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-11-21 14:30 [RFC 1/2] deactive invalidated pages Minchan Kim
2010-11-21 14:30 ` Minchan Kim
2010-11-21 14:30 ` [RFC 2/2] Prevent promotion of page in madvise_dontneed Minchan Kim
2010-11-21 14:30   ` Minchan Kim
2010-11-21 14:38   ` Minchan Kim
2010-11-21 14:38     ` Minchan Kim
2010-11-21 16:34   ` Ben Gamari
2010-11-21 16:34     ` Ben Gamari
2010-11-22  0:31     ` Minchan Kim
2010-11-22  0:31       ` Minchan Kim
2010-11-22 22:21   ` Andrew Morton
2010-11-22 22:21     ` Andrew Morton
2010-11-23  4:57     ` Minchan Kim
2010-11-23  4:57       ` Minchan Kim
2010-11-23  9:50     ` Mel Gorman
2010-11-23  9:50       ` Mel Gorman
2010-11-23 23:49       ` Minchan Kim
2010-11-23 23:49         ` Minchan Kim
2010-11-21 15:21 ` [RFC 1/2] deactive invalidated pages Ben Gamari
2010-11-21 15:21   ` Ben Gamari
2010-11-23  7:16   ` KOSAKI Motohiro
2010-11-23  7:16     ` KOSAKI Motohiro
2010-11-23 13:48     ` Ben Gamari
2010-11-23 13:48       ` Ben Gamari
2010-11-23 23:48       ` Minchan Kim
2010-11-23 23:48         ` Minchan Kim
2010-11-23 14:49     ` [RFC PATCH] fadvise support in rsync Ben Gamari
2010-11-23 14:49       ` Ben Gamari
2010-11-23 15:35       ` Pádraig Brady
2010-11-23 15:35         ` Pádraig Brady
2010-11-24  0:17       ` KOSAKI Motohiro
2010-11-24  0:17         ` KOSAKI Motohiro
2010-11-23 14:49     ` [PATCH 1/3] Add fadvise interface wrapper Ben Gamari
2010-11-23 14:49       ` Ben Gamari
2010-11-23 14:49     ` [PATCH 2/3] Inform kernel of FADV_DONTNEED hint in sender Ben Gamari
2010-11-23 14:49       ` Ben Gamari
2010-11-23 14:49     ` [PATCH 3/3] Inform kernel of FADV_DONTNEED hint in receiver Ben Gamari
2010-11-23 14:49       ` Ben Gamari
2010-11-22  1:17 ` [RFC 1/2] deactive invalidated pages Rik van Riel
2010-11-22  1:17   ` Rik van Riel
2010-11-22 22:14 ` Andrew Morton
2010-11-22 22:14   ` Andrew Morton
2010-11-23  4:52   ` Minchan Kim
2010-11-23  4:52     ` Minchan Kim
2010-11-23  5:01     ` Andrew Morton
2010-11-23  5:01       ` Andrew Morton
2010-11-23  5:23       ` Minchan Kim
2010-11-23  5:23         ` Minchan Kim
2010-11-23  5:22         ` Andrew Morton
2010-11-23  5:22           ` Andrew Morton
2010-11-23  5:45           ` Minchan Kim
2010-11-23  5:45             ` Minchan Kim
2010-11-23  5:48             ` Andrew Morton
2010-11-23  5:48               ` Andrew Morton
2010-11-23  6:05               ` Minchan Kim
2010-11-23  6:05                 ` Minchan Kim
2010-11-23  7:15                 ` Andrew Morton
2010-11-23  7:15                   ` Andrew Morton
2010-11-23  7:44                   ` Minchan Kim
2010-11-23  7:44                     ` Minchan Kim
2010-11-23  7:53                     ` Andrew Morton
2010-11-23  7:53                       ` Andrew Morton
2010-11-23  8:02                       ` Minchan Kim
2010-11-23  8:02                         ` Minchan Kim
2010-11-23  9:43               ` Mel Gorman
2010-11-23  9:43                 ` Mel Gorman
2010-11-23 23:32                 ` Minchan Kim
2010-11-23 23:32                   ` Minchan Kim
2010-11-23  9:38       ` Mel Gorman
2010-11-23  9:38         ` Mel Gorman
2010-11-23 14:55         ` Ben Gamari
2010-11-23 14:55           ` Ben Gamari
2010-11-23 14:58           ` Mel Gorman
2010-11-23 14:58             ` Mel Gorman
2010-11-23 20:35             ` Andrew Morton
2010-11-23 20:35               ` Andrew Morton
2010-11-23 22:10               ` Mel Gorman
2010-11-23 22:10                 ` Mel Gorman
2010-11-23 23:45                 ` Minchan Kim
2010-11-23 23:45                   ` Minchan Kim
2010-11-24 18:01                   ` Mel Gorman
2010-11-24 18:01                     ` Mel Gorman
2010-11-23  7:16 ` KOSAKI Motohiro
2010-11-23  7:16   ` KOSAKI Motohiro
2010-11-23  7:40   ` Minchan Kim
2010-11-23  7:40     ` Minchan Kim
2010-11-23  7:42     ` Andrew Morton [this message]
2010-11-23  7:42       ` Andrew Morton
2010-11-23  8:01     ` KOSAKI Motohiro
2010-11-23  8:01       ` KOSAKI Motohiro
2010-11-23  8:44       ` Minchan Kim
2010-11-23  8:44         ` Minchan Kim
2010-11-23  9:02         ` KOSAKI Motohiro
2010-11-23  9:02           ` KOSAKI Motohiro
2010-11-23  9:05           ` Minchan Kim
2010-11-23  9:05             ` Minchan Kim
2010-11-23  9:07             ` Minchan Kim
2010-11-23  9:07               ` Minchan Kim
2010-11-23 14:57   ` Ben Gamari
2010-11-23 14:57     ` Ben Gamari
2010-11-24  0:13     ` KOSAKI Motohiro
2010-11-24  0:13       ` KOSAKI Motohiro
2010-11-23  9:28 ` Mel Gorman
2010-11-23  9:28   ` Mel Gorman
2010-11-23 23:24   ` Minchan Kim
2010-11-23 23:24     ` Minchan Kim
2010-11-24 10:02     ` Mel Gorman
2010-11-24 10:02       ` Mel Gorman

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=20101122234257.f14bad44.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=hannes@cmpxchg.org \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=minchan.kim@gmail.com \
    --cc=npiggin@kernel.dk \
    --cc=peterz@infradead.org \
    --cc=riel@redhat.com \
    /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.