From: Artem Bityutskiy <dedekind@infradead.org>
To: Jamie Lokier <jamie@shareable.org>
Cc: "Adam S. Turowski" <a.turowski@wb.com.pl>,
"linux-mtd@lists.infradead.org" <linux-mtd@lists.infradead.org>,
Adrian Hunter <ext-adrian.hunter@nokia.com>
Subject: Re: [UBIFS] Filesystem capacity
Date: Tue, 17 Feb 2009 11:31:23 +0200 [thread overview]
Message-ID: <1234863083.17790.241.camel@localhost.localdomain> (raw)
In-Reply-To: <20090217091633.GB26354@shareable.org>
On Tue, 2009-02-17 at 09:16 +0000, Jamie Lokier wrote:
> Artem Bityutskiy wrote:
> > OK, then indeed Adrian wrote exactly the right thing. You have huge
> > 4144-byte uncompressible nodes. You fit 3 of them to each eraseblock,
> > and you waste 3440 bytes in each eraseblock. JFFS2 would jam a little
> > more data, because it can split big blocks on parts.
> >
> > In real life you will likely have compressible data, and many small
> > files, so you will have small data nodes and many inode nodes, which
> > are 160 bytes in size, so you will fit more.
>
> Also, in real life, JFFS2 will behave badly when the filesystem is
> completely full. Its garbage collector can use 100% CPU for minutes
> even on a small NOR flash, if the filesystem fills up too much. It
> happens because it's difficult to reorganise the data when there's no
> spare room.
>
> I wonder if the "lost" space in UBIFS is helpful to prevent long
> garbage collection cycles?
In JFFS2 GC is random, which means it may:
1. Pick an full EB to GC, this is how JFFS2 does wear-levelling
2. Pick a non-optimal EB to GC, which means that instead of picking EB
with largest amount of dirty space, JFFS2 picks an EB with not so much
dirty space
In UBIFS, we always try pick the most optimal LEB, with most of dirty
space. We have hashtables for this, where we keep track of such LEBs.
This makes UBIFS GC work faster.
And yes, in a way the wasted space helps. And in UBIFS the GC will not
even try GC-ing an LEB if the amount of dirty+free space in it is less
than NAND page size.
However, UBIFS may be optimized and one may teach the GC to try putting
small nodes to the wasted areas at the ends of eraseblocks. We just did
not do this. This is one more way to improve UBIFS.
--
Best regards,
Artem Bityutskiy (Битюцкий Артём)
prev parent reply other threads:[~2009-02-17 9:31 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-16 14:44 [UBIFS] Filesystem capacity Adam S. Turowski
2009-02-16 15:54 ` Adrian Hunter
2009-02-17 0:39 ` Jamie Lokier
2009-02-17 6:11 ` Artem Bityutskiy
2009-02-17 8:01 ` Artem Bityutskiy
2009-02-17 6:07 ` Artem Bityutskiy
2009-02-17 7:39 ` Adam S. Turowski
2009-02-17 7:57 ` Artem Bityutskiy
2009-02-17 9:16 ` Jamie Lokier
2009-02-17 9:31 ` Artem Bityutskiy [this message]
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=1234863083.17790.241.camel@localhost.localdomain \
--to=dedekind@infradead.org \
--cc=a.turowski@wb.com.pl \
--cc=ext-adrian.hunter@nokia.com \
--cc=jamie@shareable.org \
--cc=linux-mtd@lists.infradead.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