All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Hugh Dickins <hugh@veritas.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Pavel Machek <pavel@suse.cz>,
	mtk.manpages@gmail.com,
	kernel list <linux-kernel@vger.kernel.org>
Subject: Re: sync_file_range(SYNC_FILE_RANGE_WRITE) blocks?
Date: Mon, 2 Jun 2008 13:18:25 +0200	[thread overview]
Message-ID: <200806021318.26404.rjw@sisk.pl> (raw)
In-Reply-To: <Pine.LNX.4.64.0806020906001.9534@blonde.site>

[-- Attachment #1: Type: text/plain, Size: 2003 bytes --]

On Monday, 2 of June 2008, Hugh Dickins wrote:
> On Sun, 1 Jun 2008, Andrew Morton wrote:
> > On Mon, 2 Jun 2008 01:00:40 +0200 Pavel Machek <pavel@suse.cz> wrote:
> > > > How about this:
> > > > 
> > > > - Add a new SYNC_FILE_RANGE_NON_BLOCKING
> > > > 
> > > > - If userspace set that flag, turn on writeback_control.nonblocking
> > > >   in __filemap_fdatawrite_range().
> > > > 
> > > > - test it a lot.
> > > 
> > > Works for me. Is the expectation that I code this? I can certainly
> > > provide testing ;-).
> > 
> > Something like this:
> 
> Though this fits very easily into the current kernel implementation,
> I don't think it's the right interface for userspace.
> 
> If we do go this kind of a way, then I'd say SYNC_FILE_RANGE_NON_BLOCKING
> needs to tell the caller how far it got before giving up, rather than just
> success or failure.  Why? um, um, because it feels right; and would help
> the caller help the kernel by not overloading it with needlessly repeated
> loop ranges - any stronger reasons?  But sync_file_range() was defined
> to return int rather than ssize_t, so that becomes awkward.
> 
> Never mind, I don't think it is the right way anyway.  We don't need
> additions to the existing sync_file_range() interface, we just need it
> to behave as naive people like Pavel and I expected it to behave in the
> first place: SYNC_FILE_RANGE_WRITE should be nonblocking (with respect
> to queue congestion, and maybe page locking also).

Well, frankly, I'm not sure if we need anything better than we already have.
In fact my numbers show that SYNC_FILE_RANGE_WRITE works quite well -
please see
http://sourceforge.net/mailarchive/message.php?msg_name=200806020122.36193.rjw%40sisk.pl
"early writeout" means that SYNC_FILE_RANGE_WRITE is used and the file with
the results is attached for convenience.

My interpretation of the results is here:
http://sourceforge.net/mailarchive/forum.php?thread_name=200806021238.17100.rjw%40sisk.pl&forum_name=suspend-devel

Thanks,
Rafael

[-- Attachment #2: image_saving_data.txt --]
[-- Type: text/plain, Size: 1098 bytes --]

Labels:
W+ - early writeout enabled
W- - early writeout disabled
C+ - compression enabled
C- - compression disabled
E+ - encryption enabled
E- - encryption disabled
T+ - threads enabled
T- - threads disabled

The numbers are speed values in MB/s.


Box 1 (Single-core, Athlon 64 3000+ 1.8 GHz, 1 MB L2 cache, 1.5 GB RAM)

	W-C-E-T-	W+C-E-T-	W-C+E-T-	W+C+E-T-
Write:	26.2		27.4		46.5		78.6
Read:	27.5		27.5		83.5		83.8

	W-C-E+T-	W+C-E+T-	W-C+E+T-	W+C+E+T-
Write:	15.6		19.1		28.4		38.7
Read:	18.0		18.1		46.1		46.2

	W-C-E+T+	W+C-E+T+	W-C+E+T+	W+C+E+T+
Write:	N/A		N/A		27.9		37.5
Read:	N/A		N/A		46.4		46.4

For compressed images the compression ratio was approx. 0.30


Box 2 (Dual-core, Turion X2 TL-60 2 GHz, 2 x 512 KB L2 cache, 2 GB RAM)

	W-C-E-T-	W+C-E-T-	W-C+E-T-	W+C+E-T-
Write:	31.9		34.1		42.7		74.5
Read:	33.0		32.9		79.8		80.1

	W-C-E+T-	W+C-E+T-	W-C+E+T-	W+C+E+T-
Write:	16.7		22.0		23.9		34.0
Read:	22.2		22.2		47.6		47.9

	W-C-E+T+	W+C-E+T+	W-C+E+T+	W+C+E+T+
Write:	16.4		22.2		34.7		57.2
Read:	22.2		22.1		47.9		48.0

For compressed images the compression ratio was approx. 0.40


  reply	other threads:[~2008-06-02 11:18 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-30 10:26 sync_file_range(SYNC_FILE_RANGE_WRITE) blocks? Pavel Machek
2008-05-30 13:58 ` Hugh Dickins
2008-05-30 20:43   ` Pavel Machek
2008-05-31 18:44     ` Hugh Dickins
2008-06-01  0:39       ` Andrew Morton
2008-06-01  7:23         ` Hugh Dickins
2008-06-01  8:15           ` Andrew Morton
2008-06-01 11:40             ` Pavel Machek
2008-06-01 20:37               ` Andrew Morton
2008-06-01 22:00                 ` Rafael J. Wysocki
2008-06-01 22:22                 ` Pavel Machek
2008-06-01 22:47                   ` Andrew Morton
2008-06-01 23:00                     ` Pavel Machek
2008-06-01 23:11                       ` Andrew Morton
2008-06-02  8:43                         ` Hugh Dickins
2008-06-02 11:18                           ` Rafael J. Wysocki [this message]
2008-06-02 12:11                             ` Hugh Dickins
2008-06-02 11:43                 ` Jens Axboe
2008-06-02 12:40                   ` Hugh Dickins
2008-06-16 20:53                     ` Rik van Riel
2008-06-17  4:54                       ` Andrew Morton
2008-06-17 13:38                         ` Rik van Riel
2008-06-02 16:50                   ` Andrew Morton
2008-06-03  8:01               ` Michael Kerrisk
2008-06-03  8:05                 ` Pavel Machek

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=200806021318.26404.rjw@sisk.pl \
    --to=rjw@sisk.pl \
    --cc=akpm@linux-foundation.org \
    --cc=hugh@veritas.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mtk.manpages@gmail.com \
    --cc=pavel@suse.cz \
    /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.