linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Woodhouse <dwmw2@infradead.org>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: Bernd Eckenfels <ecki@lina.inka.de>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: Reiser4 status: benchmarked vs. V3 (and ext3)
Date: Fri, 08 Aug 2003 14:23:51 +0100	[thread overview]
Message-ID: <1060349031.25209.361.camel@passion.cambridge.redhat.com> (raw)
In-Reply-To: <1059320952.13191.12.camel@dhcp22.swansea.linux.org.uk>

On Sun, 2003-07-27 at 16:49, Alan Cox wrote:
> Flash cards are -slow-. Also jffs2 is mostly synchronous so it writes
> the long bit by bit. The flash wear is on erase not write. You could
> certainly teach jffs2 a bit more about batching writes. The other issue
> with jffs2 is startup because it is a log you have to read the entire
> log to know what state you are in

Startup in 2.5 is a _lot_ better than in 2.4 -- we stopped checking the
crc32 on every node during mount, and do it later instead. We also use a
pointer directly into the flash if it's possible, rather than memcpying
every node we look at during the mount.

The amount of state we need to rebuild during the mount isn't huge -- if
you ignore nlink for the moment, all we really need to do is build up a
list of
	{ physical address, length, inode # to which it belongs }
tuples for each log entry on the medium -- for larger media, we could
add tailers to each eraseblock with a condensed version of that
information, to prevent the need to scan the whole of each block during
mount to work it out.

I suspect we're going to have to do that for the larger NAND devices,
including DiskOnChip, in the fairly near future. It takes 30 seconds to
mount a 144MiB DiskOnChip with JFFS2. 

We already do some form of write batching on NAND flash too -- since we
can't always write more than once to any given 512-byte 'page' on the
flash, we have to have a write-back buffer and coalesce writes. 

The other fairly simple thing we can do to improve runtime performance
and device lifetime is start being more intelligent about garbage
collection -- we should GC ancient and unchanged data to separate blocks
on the flash, rather than mixing it in with new writes; then we will end
up with more fully-clean eraseblocks (which can be ignored except for
once in a blue moon when we decide to GC them for wear levelling
purposes) and more mostly-dirty eraseblocks (on which we make rapid GC
progress since not a lot needs to be copied before the block can be
erased) -- and fewer of the 50%-dirty blocks we tend to see at the
moment.

-- 
dwmw2


  reply	other threads:[~2003-08-08 13:23 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-07-23 21:02 Reiser4 status: benchmarked vs. V3 (and ext3) Hans Reiser
2003-07-24  4:26 ` Tupshin Harper
2003-07-24  4:31   ` Shawn
2003-07-24  4:56     ` Tupshin Harper
2003-07-24  5:21       ` Shawn
2003-07-24  5:33         ` Shawn
2003-07-24 11:10         ` Nikita Danilov
2003-07-24 15:10           ` Tupshin Harper
2003-07-24 15:26             ` Larry McVoy
2003-07-24 15:32               ` Tupshin Harper
2003-07-24 15:54                 ` Larry McVoy
2003-07-24 15:32               ` Shawn
2003-07-27 12:28           ` Hans Reiser
2003-07-27 12:45             ` Tomas Szepe
2003-07-27 14:01               ` Hans Reiser
2003-07-27 15:04               ` Gene Heskett
2003-07-24 15:59 ` Daniel Egger
2003-07-24 17:07   ` Nikita Danilov
2003-07-24 21:10     ` Tupshin Harper
2003-07-25 12:57       ` Nikita Danilov
2003-07-25  0:39     ` Daniel Egger
2003-07-25 13:02       ` Nikita Danilov
2003-07-25 14:20         ` Daniel Egger
2003-07-25 14:39           ` Yury Umanets
2003-07-26  1:08             ` Daniel Egger
2003-07-26  7:19               ` Yury Umanets
2003-07-26 14:13                 ` Daniel Egger
2003-07-26 14:54                   ` Yury Umanets
2003-07-26 15:21                     ` Daniel Egger
2003-07-27  3:28                       ` Valdis.Kletnieks
2003-07-27 10:30                       ` Yury Umanets
2003-07-27 11:05                         ` Daniel Egger
2003-07-27 11:46                           ` Yury Umanets
2003-08-08 14:01                         ` David Woodhouse
2003-08-08 14:28                           ` Bernd Eckenfels
2003-08-08 23:58                             ` David Woodhouse
2003-08-09  0:29                               ` Bernd Eckenfels
2003-08-09  0:38                                 ` David Woodhouse
2003-07-27 13:31                     ` Hans Reiser
2003-07-27 14:13                       ` Yury Umanets
2003-07-27 13:28                   ` Hans Reiser
2003-07-27 14:10                     ` Daniel Egger
2003-07-27 14:15                       ` Yury Umanets
2003-08-13 20:12                         ` Bill Davidsen
2003-08-14  5:04                           ` Yury Umanets
2003-08-14 14:10                             ` David Woodhouse
2003-08-15 11:15                               ` Yury Umanets
2003-08-15 15:28                               ` Bill Davidsen
2003-08-15 15:53                                 ` David Woodhouse
2003-08-14 13:58                           ` David Woodhouse
2003-07-27 15:30                       ` Bernd Eckenfels
2003-07-27 15:49                         ` Alan Cox
2003-08-08 13:23                           ` David Woodhouse [this message]
2003-07-28 11:30                       ` Hans Reiser
2003-07-26 17:14                 ` Jussi Laako
2003-07-27 13:35                   ` Hans Reiser
2003-08-08 14:08                   ` David Woodhouse
2003-07-27 12:59           ` Hans Reiser
2003-07-27 14:16             ` Daniel Egger
2003-07-27 15:32               ` Bernd Eckenfels
2003-08-08 14:29                 ` David Woodhouse
2003-07-28 12:44               ` Hans Reiser
2003-07-28 13:06                 ` Daniel Egger
2003-07-28 13:29                   ` Hans Reiser
2003-07-28 13:48                   ` Hans Reiser
2003-07-27 12:38   ` Hans Reiser
2003-07-26  8:33 ` Andrew Morton
2003-07-27 13:24   ` Hans Reiser

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=1060349031.25209.361.camel@passion.cambridge.redhat.com \
    --to=dwmw2@infradead.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=ecki@lina.inka.de \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).