All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Paris <eparis@redhat.com>
To: Dave Chinner <david@fromorbit.com>
Cc: Christoph Hellwig <hch@infradead.org>,
	linux-kernel@vger.kernel.org,
	linux-security-module@vger.kernel.org,
	linux-fsdevel@vger.kernel.org, zohar@us.ibm.com,
	warthog9@kernel.org, jmorris@namei.org, kyle@mcmartin.ca,
	hpa@zytor.com, akpm@linux-foundation.org,
	torvalds@linux-foundation.org, mingo@elte.hu,
	viro@zeniv.linux.org.uk
Subject: Re: [PATCH 1/3] IMA: move read/write counters into struct inode
Date: Tue, 19 Oct 2010 12:24:43 -0400	[thread overview]
Message-ID: <1287505483.2530.174.camel@localhost.localdomain> (raw)
In-Reply-To: <20101019073901.GB11284@dastard>

On Tue, 2010-10-19 at 18:39 +1100, Dave Chinner wrote:
> On Mon, Oct 18, 2010 at 10:14:03PM -0400, Eric Paris wrote:

> Eric, just to put that in context - changing the size of an inode
> needs to be conidered carefully because we cache so many of them. We
> often jump through hoops just to reduce it by 4 or 8 bytes. You are
> proposing to increase it by 24 bytes (roughly 5%) and as such that
> _should_ be considered a big deal, especially for something that is
> currently rarely used.

In my mind it's framed a little differently, my patch series is reducing
it from ~900 bytes to 24 bytes.  Even though that memory might not have
been inside struct inode if there is always a 1-1 mapping it might as
well be....   I'm going from seriously broken to a hell of a lot better.
I believe that when I resend this series I'll drop 8 more of those bytes
(open count as I think we can do without that these days).

> Personally I that adding a pointer into the struct inode is as much
> as I'd want to compromise to. Those that want to use IMA or have the
> possibility of turning it on dynamicaly can accept the additional
> overhead of another memory allocation during inode allocation as the
> cost of using this functionality.  That's the way the security
> subsystem works, so I don't see any problems with doing this for IMA
> and it turns the overhead problem into one that only affects those
> that have it both configured and enabled.  That seems like a
> reasonable compromise to me....

The problem is that this would actually waste another 8 bytes (the size
of the pointer in struct inode) since IMA is still going to need to
allocate a structure for every inode to hold the 16-24 bytes of
counters.  That 16-24 might not be in struct inode, but like I said, if
there is a 1-1 mapping between the two there is no difference.

I said that if there was a consensus that this overhead was still too
large (and it seems that may be the case) I would put looking at using a
userspace freezer to attempt to collect the information dynamically on
my todo list.  I'll gladly do that but we have a space/time tradeoff I'd
rather have a consensus on before I start.

If I go the pointer in struct inode route, I don't need to serialize
entry and removal from core of every inode if IMA is enabled (while I
add and remove it from the IMA lookup tree.)  If I don't add any fields
to struct inode I'll need to serialize while I add them to the IMA
lookup tree, but at the savings of a void * in struct inode.

My guess is that most people will say forcing users to serialize and
saving 8bytes per inode is the better choice, but I know there is
scalability work going on and I want to make sure everyone agrees that
is the right choice before we spend a lot of time on anything like
this...

-Eric


  reply	other threads:[~2010-10-19 16:25 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-19  1:16 [PATCH 1/3] IMA: move read/write counters into struct inode Eric Paris
2010-10-19  1:16 ` [PATCH 2/3] IMA: only allocate iint when needed Eric Paris
2010-10-19  1:17 ` [PATCH 3/3] IMA: use rbtree instead of radix tree for inode information cache Eric Paris
2010-10-19  1:30 ` [PATCH 1/3] IMA: move read/write counters into struct inode Christoph Hellwig
2010-10-19  2:14   ` Eric Paris
2010-10-19  7:39     ` Dave Chinner
2010-10-19 16:24       ` Eric Paris [this message]
2010-10-19 16:29         ` Christoph Hellwig
2010-10-19  8:39     ` Ingo Molnar
2010-10-19  2:46 ` Eric Paris
2010-10-19 15:52 ` Linus Torvalds
2010-10-19 16:36   ` Eric Paris
2010-10-19 16:55     ` Al Viro
2010-10-19 17:03       ` Linus Torvalds
2010-10-19 17:03         ` Linus Torvalds
2010-10-19 17:28         ` Al Viro
2010-10-19 18:16           ` Mimi Zohar
2010-10-20 13:10             ` John Stoffel
2010-10-20 13:36               ` Al Viro
2010-10-20 14:09                 ` John Stoffel
2010-10-19 19:11           ` Matthew Wilcox
2010-10-20  3:15             ` Al Viro
2010-10-20 17:38               ` J. Bruce Fields
2010-10-19 22:49         ` Eric Paris
2010-10-20 14:38           ` Ingo Molnar
2010-10-20 14:46             ` Eric Paris
2010-10-20 15:15               ` Ingo Molnar
2010-10-20 15:25                 ` Eric Paris
2010-10-21 16:15                 ` Casey Schaufler
2010-10-22  8:48                   ` Ingo Molnar
2010-10-22 17:50                     ` Casey Schaufler

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=1287505483.2530.174.camel@localhost.localdomain \
    --to=eparis@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=david@fromorbit.com \
    --cc=hch@infradead.org \
    --cc=hpa@zytor.com \
    --cc=jmorris@namei.org \
    --cc=kyle@mcmartin.ca \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=torvalds@linux-foundation.org \
    --cc=viro@zeniv.linux.org.uk \
    --cc=warthog9@kernel.org \
    --cc=zohar@us.ibm.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 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.