mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Daniel Phillips <phillips@bonn-fries.net>
To: Jeff Garzik <jgarzik@mandrakesoft.com>
Cc: Linus Torvalds <torvalds@transmeta.com>, linux-kernel@vger.kernel.org
Subject: Re: [reiserfs-dev] Re: Ext2 directory index: ALS paper and benchmarks
Date: Sun, 9 Dec 2001 04:27:29 +0100	[thread overview]
Message-ID: <E16Cucn-00015D-00@starship.berlin> (raw)
In-Reply-To: <E16BjYc-0000hS-00@starship.berlin> <E16ClLY-000124-00@starship.berlin> <3C1253D3.75EAA26E@mandrakesoft.com>
In-Reply-To: <3C1253D3.75EAA26E@mandrakesoft.com>

On December 8, 2001 06:54 pm, Jeff Garzik wrote:
> Daniel Phillips wrote:
> > Linus wrote:
> > > So "ext2_write_inode()" would basically become somehting like
> > >
> > >       struct ext2_inode *raw_inode = inode->u.ext2_i.i_raw_inode;
> > >       struct buffer_head *bh = inode->u.ext2_i.i_raw_bh;
> > >
> > >       /* Update the stuff we've brought into the generic part of the 
inode */
> > >       raw_inode->i_size = cpu_to_le32(inode->i_size);
> > >       ...
> > >       mark_buffer_dirty(bh);
> > >
> > > with part of the data already in the right place (ie the current
> > > "inode->u.ext2_i.i_data[block]" wouldn't exist, it would just exist as
> > > "raw_inode->i_block[block]" directly in the buffer block.
> 
> note we do this for the superblock already, and it's pretty useful

The difference is, there's only one superblock per mount.  There are 
bazillions
of inodes.

> > I'd then be able to write a trivial program that would eat inode+blocksize
> > worth of cache for each cached inode, by opening one file on each itable
> > block.
> 
> you already have X overhead per inode cached... yes this would increase
> X but since there is typically more than one inode per block there is
> also sharing as well.  So inode+blocksize is not true.

You skipped over my example too fast.

> > I'd also regret losing the genericity that comes from the read_inode 
(unpack)
> > and update_inode (repack) abstraction.
> 
> so what is write_inode... re-repack?  :)

It's a trivial shell for update_inode:

http://innominate.org/~graichen/projects/lxr/source/fs/ext2/inode.c?v=v2.4#L1146

> > Right now, I don't see any fields in
> > _info that aren't directly copied, but I expect there soon will be.
> 
> i_data[] is copied, and that would be nice to directly access in
> inode->u.ext2_i.i_bh...

Yes, that's the major one, it's 60 bytes, more than the other _info fields 
put together.  However, almost half the itable block data is going to be 
redundant, and the proposal as I understand it is to lock it in cache while 
the inode is in cache.  This makes things worse, not better - it reduces the 
total number of inodes that can be cached.  And that's the best case, 
when *all* the inodes on an itable block are in cache.  Take a look at the 
inode distribution in your directories and see if you think that's likely.

> > An alternative approach: suppose we were to map the itable blocks with
> > smaller-than-blocksize granularity.  We could then fall back to smaller
> > transfers under cache pressure, eliminating much thrashing.
> 
> in ibu fs the entire inode table[1] is accessing via the page cache. 
> ext2 could do this too.  If ext2's per-block-group inode table has
> padding at the end page calculations get a bit more annoying but it's
> still doable.

That's roughly what I had in mind, for starters.

It's worth keeping in mind that tweaking the icache efficiency in this case 
is really just curing a symptom - the underlying problem is a mismatch 
between readdir order and inode order.

--
Daniel

  reply	other threads:[~2001-12-09  3:25 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-12-05 21:26 Daniel Phillips
2001-12-06  3:41 ` Hans Reiser
2001-12-06  3:54   ` Daniel Phillips
2001-12-06  3:56     ` Hans Reiser
2001-12-06  4:08       ` Daniel Phillips
2001-12-06 13:44         ` Hans Reiser
2001-12-06 17:22           ` Daniel Phillips
2001-12-07  0:13             ` [reiserfs-dev] " Hans Reiser
2001-12-07  4:39               ` Daniel Phillips
2001-12-07 12:36                 ` Hans Reiser
2001-12-07 14:35                   ` Daniel Phillips
2001-12-07 20:16                     ` Hans Reiser
2001-12-06 11:27   ` Ragnar Kjørstad
2001-12-07 15:51     ` Daniel Phillips
2001-12-07 16:47       ` Ragnar Kjørstad
2001-12-07 17:41         ` Daniel Phillips
2001-12-07 18:03           ` Ragnar Kjørstad
2001-12-07 18:18             ` Daniel Phillips
2001-12-07 21:10               ` Hans Reiser
2001-12-07 21:12               ` Hans Reiser
2001-12-07 18:32           ` Andrew Morton
2001-12-07 19:46             ` Daniel Phillips
2001-12-07 20:00               ` Andrew Morton
2001-12-08  7:19             ` Linus Torvalds
2001-12-08 17:32               ` Daniel Phillips
2001-12-08 17:54                 ` Jeff Garzik
2001-12-09  3:27                   ` Daniel Phillips [this message]
2001-12-09  4:19                     ` Linus Torvalds
2001-12-09 16:29                       ` Alan Cox
2001-12-09 20:13                       ` Daniel Phillips
2001-12-10  6:27                         ` Linus Torvalds
2001-12-10  6:49                           ` Alexander Viro
2001-12-10  8:32                           ` Alan Cox
2001-12-10 16:14                           ` Daniel Phillips
2001-12-08 20:28                 ` Hans Reiser
2001-12-08 21:10                   ` Ragnar Kjørstad
2001-12-07 21:01         ` Hans Reiser
2001-12-07 22:56           ` Ragnar Kjørstad
2001-12-08  0:15             ` Hans Reiser
2001-12-08 19:16               ` Ragnar Kjørstad
2001-12-08 19:55                 ` Hans Reiser
2001-12-09  2:47                   ` Daniel Phillips
2001-12-09  2:39                 ` Daniel Phillips
2001-12-08 18:02     ` Jeremy Fitzhardinge
2001-12-09  2:24       ` Daniel Phillips
2001-12-07  3:19   ` Cameron Simpson
2001-12-07 10:54     ` Hans Reiser
2001-12-07 14:53       ` Daniel Phillips
2001-12-07 20:33         ` Hans Reiser
2001-12-07 13:06     ` [reiserfs-dev] " Ragnar Kjørstad

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=E16Cucn-00015D-00@starship.berlin \
    --to=phillips@bonn-fries.net \
    --cc=jgarzik@mandrakesoft.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@transmeta.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®