All of lore.kernel.org
 help / color / mirror / Atom feed
From: Shawn Starr <spstarr@sh0n.net>
To: linux-kernel@vger.kernel.org
Subject: Re: Possible Idea with filesystem buffering.
Date: 21 Jan 2002 14:15:48 -0500	[thread overview]
Message-ID: <1011640576.21632.0.camel@unaropia> (raw)
In-Reply-To: <Pine.LNX.4.40.0201202100340.455-100000@coredump.sh0n.net>
In-Reply-To: <Pine.LNX.4.40.0201202100340.455-100000@coredump.sh0n.net>

Nobody wants to comment on this? :(

Shawn.

On Sun, 2002-01-20 at 21:29, Shawn Starr wrote:
> 
> On Mon, 21 Jan 2002, Anton Altaparmakov wrote:
> 
> > [snip]
> > At 00:57 21/01/02, Hans Reiser wrote:
> > [snip]
> >  > Would be best if VM told us if we really must write that page.
> >
> > In theory the VM should never call writepage unless the page must be writen
> > out...
> >
> > But I agree with you that it would be good to be able to distinguish the
> > two cases. I have been thinking about this a bit in the context of NTFS TNG
> > but I think that it would be better to have a generic solution rather than
> > every fs does their own copy of the same thing. I envisage that there is a
> > flush daemon which just walks around writing pages to disk in the
> > background (there could be one per fs, or a generic one which fs register
> > with, at their option they could have their own of course) in order to keep
> > the number of dirty pages low and in order to minimize data loss on the
> > event of system/power failure.
> >
> > This demon requires several interfaces though, with regards to journalling
> > fs. The daemon should have an interface where the fs can say "commit pages
> > in this list NOW and do not return before done", also a barrier operation
> > would be required in journalling context. A transactions interface would be
> > ideal, where the fs can submit whole transactions consisting of writing out
> > a list of pages and optional write barriers; e.g. write journal pages x, y,
> > z, barrier, write metadata, perhaps barrier, finally write data pages a, b,
> > c. Simple file systems could just not bother at all and rely on the flush
> > daemon calling the fs to write the pages.
> >
> > Obviously when this daemon writes pages the pages will continue being
> > there. OTOH, if the VM calls write page because it needs to free memory
> > then writepage must write and clean the page.
> >
> 
> if they are dirty and written immediately to the disk they can be cleaned
> from the queue. It would be nice if there was some way to have a checksum
> verify the data was written back then wipe it from the queue.
> 
> As an example: 5 operations requested, 2 already in queue.
> 
> In queue) DIRTY write to disk (this task has been in the queue for a
> while)
> 
> In queue) not 'old' memory but must be written to disk
> 
> pending queue:
> 
> 1) read operation
> 2) read operation
> 3) Write operation
> 4) write operation
> 
> The daemon should resort the priority write dirty pages to disk then write
> nay other pages that are left on queue, then get to read pages.
> 
> 
> Notes:
> 
> If there is only one operation in the queue (say write) and nothing else
> comes along, then the daemon should force-write the data back to disk
> after a period of timeout (the memory in the slot becomes dirty)
> 
> If there's too many tasks in the queue and another one requires more
> memory then whats left in the buffer/cache the daemon could request to
> store the request in swap memory and put it in the queue, if the request
> is a write request it would have more priority then any read requests
> still and get completed quickly allowing for remaining queue events to
> complete.
> 
> Example:
> 
> ReiserFS:
>    Operation A.  Write (10K)
>    Operation B.  Read  (200K)
>    Operation C.  Write (160K)
> 
> 
> XFS:
>    Operation A.  Read (63K)
>    Operation B.  Read (3k)
>    Operation C.  Write (10K)
> 
> 
> EXT3:
>    Operation A.  Write (290K)
>    Operation B.  Write (90K)
>    Operation C.  Read  (3k)
> 
> the kpagebuf (or whatever name). Would get all these requests and sort out
> what needs to be done first as long as there's buffer/cache memory free
> the write operations would be done as fast as possible, verified by some
> checksum and purged from the queue, If there's no cache/buffer memory
> free then all write queues reguardless of being in swap or cache/buffer need to be
> written to disk.
> 
> So:
> kpagebuf queue (total available buffer/cache memory is say 512K)
> 
>      EXT3  Write (290K)
>  ReiserFS  Write (160K)
>  ReiserFS  Write (10K)
>       XFS  Write (10K)
>      EXT3  Write (90K)  - Goes in swap because total > 512K (Dirty x2 state)
>  ReiserFS  Read  (200K) - Swap (dirty x2)
>       XFS  Read  (63K)  - Swap (dirty x2)
>       XFS  Read  (3K)   - Swap (dirty x2)
>      EXT3  Read  (3K)   - Swap (dirty x2)
> 
> * The daemon would check in order of filesystem registeration for whos
> should be in the read queue first.
> 
> * The daemon should maximize amount of memory stored in bufeer/cache to
> try to prevent write requests having to go into swap.
> 
> In the above queue, we have a lot of read operations and one write
> operation in swap. Clean out the write operations since they are now dirty
> (because there's no room for more operations in the buffer/cache). Move
> the swapped write operation to the top of the queue and get rid of it.
> Move the read operations from swap to queue since there is room again. **
> NOTE ** because those read requests are now dirty they MUST be delt with
> or they'll get stuck in the queue with more write requests overtaking
> them.
> 
> Maybe I've lost it but that's how I see it ;)
> 
> Shawn.
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
> 



  reply	other threads:[~2002-01-21 19:13 UTC|newest]

Thread overview: 92+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-01-20  9:04 Possible Idea with filesystem buffering Shawn
2002-01-20 11:31 ` Hans Reiser
2002-01-20 13:56   ` Rik van Riel
2002-01-20 14:21     ` Hans Reiser
2002-01-20 15:13       ` Rik van Riel
2002-01-20 21:15         ` Hans Reiser
2002-01-20 21:24           ` Rik van Riel
2002-01-20 21:30             ` Hans Reiser
2002-01-20 21:40               ` Rik van Riel
2002-01-20 21:49                 ` Hans Reiser
2002-01-20 22:00                   ` Rik van Riel
2002-01-21  0:10                   ` Matt
2002-01-21  0:57                     ` Hans Reiser
2002-01-21  1:28                     ` Anton Altaparmakov
2002-01-21  2:29                       ` Shawn Starr
2002-01-21 19:15                         ` Shawn Starr [this message]
2002-01-22 22:02                           ` Hans Reiser
2002-01-21  9:21                     ` Horst von Brand
2002-01-21  9:13                   ` Horst von Brand
2002-01-21 15:29               ` Eric W. Biederman
2002-01-20 17:51       ` Mark Hahn
2002-01-20 21:24         ` Hans Reiser
2002-01-20 21:32           ` Rik van Riel
2002-01-21 15:37           ` Eric W. Biederman
2002-01-20 22:45   ` Shawn Starr
2002-01-20 23:11     ` Rik van Riel
2002-01-20 23:40       ` Shawn Starr
2002-01-20 23:48         ` Rik van Riel
2002-01-21  0:44           ` Hans Reiser
2002-01-21  0:52             ` Rik van Riel
2002-01-21  1:08               ` Hans Reiser
2002-01-21  1:39                 ` Rik van Riel
2002-01-21 11:10                   ` Hans Reiser
2002-01-21 12:12                     ` Rik van Riel
2002-01-21 13:42                       ` Hans Reiser
2002-01-21 13:54                         ` Rik van Riel
2002-01-21 14:07                           ` Hans Reiser
2002-01-21 17:21                             ` Chris Mason
2002-01-21 17:47                               ` Hans Reiser
2002-01-21 19:44                                 ` Chris Mason
2002-01-21 20:41                                   ` Hans Reiser
2002-01-21 21:53                                     ` Chris Mason
2002-01-22  6:02                                       ` Andreas Dilger
2002-01-22 10:09                                         ` Tommi Kyntola
2002-01-22 11:39                                         ` Hans Reiser
2002-01-22 18:41                                           ` Andrew Morton
2002-01-22 19:03                                             ` Rik van Riel
2002-01-23 20:35                                               ` [Ext2-devel] " Stephen C. Tweedie
2002-01-23 20:48                                                 ` Hans Reiser
2002-01-23 20:55                                                 ` Andrew Morton
2002-01-23 23:53                                                 ` Hugh Dickins
2002-01-24  0:01                                                   ` Jeff Garzik
2002-01-22 20:19                                             ` Hans Reiser
2002-01-22 20:50                                               ` Rik van Riel
2002-01-22 14:03                                         ` Chris Mason
2002-01-22 14:39                                           ` Rik van Riel
2002-01-22 18:46                                             ` Hans Reiser
2002-01-22 19:19                                               ` Chris Mason
2002-01-22 20:13                                                 ` Steve Lord
2002-01-22 21:22                                                   ` Chris Mason
2002-01-22 20:32                                                 ` Hans Reiser
2002-01-22 21:08                                                   ` Chris Mason
2002-01-22 22:05                                                     ` Hans Reiser
2002-01-22 22:21                                                       ` Rik van Riel
2002-01-23  0:16                                                         ` Hans Reiser
2002-01-22 22:10                                                     ` Richard B. Johnson
2002-01-23  1:14                                                     ` Stuart Young
2002-01-23 17:16                                                     ` Daniel Phillips
2002-01-22 21:12                                                   ` Rik van Riel
2002-01-22 21:28                                                     ` Shawn Starr
2002-01-22 21:31                                                       ` Rik van Riel
2002-01-22 20:20                                               ` Rik van Riel
2002-01-22 22:31                                                 ` Hans Reiser
2002-01-22 23:34                                                   ` Rik van Riel
2002-01-23 17:15                                                 ` Josh MacDonald
2002-01-21  0:28       ` Hans Reiser
2002-01-21  0:47         ` Rik van Riel
2002-01-21  1:01           ` Hans Reiser
2002-01-21  1:21             ` Rik van Riel
2002-01-21  1:26               ` Hans Reiser
2002-01-21  1:40                 ` Rik van Riel
2002-01-20 15:49 ` Anton Altaparmakov
2002-01-20 21:21   ` Hans Reiser
  -- strict thread matches above, loose matches on Subject: below --
2002-01-22 21:02 Rolf Lear
     [not found] <Pine.LNX.4.33L.0201222008280.32617-100000@imladris.surriel.com>
2002-01-22 23:31 ` Shawn Starr
2002-01-22 23:37   ` Rik van Riel
2002-01-23  5:26     ` Shawn Starr
2002-01-23  9:43 Martin Knoblauch
2002-01-23 11:52 ` Helge Hafting
2002-01-23 12:02   ` Rik van Riel
2002-01-23 12:11   ` Martin Knoblauch
     [not found] <Pine.LNX.4.33.0201231301560.24338-100000@coffee.psychology.mcmaster.ca>
     [not found] ` <3C4FC478.BCC44CDF@TeraPort.de>
     [not found]   ` <3C4FDB80.C9F83EBB@aitel.hist.no>
2002-01-24 13:59     ` Martin Knoblauch

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=1011640576.21632.0.camel@unaropia \
    --to=spstarr@sh0n.net \
    --cc=linux-kernel@vger.kernel.org \
    /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.