From: Ian Kent <raven@themaw.net>
To: Matthew Wilcox <willy@infradead.org>,
David Howells <dhowells@redhat.com>
Cc: Miklos Szeredi <miklos@szeredi.hu>,
Al Viro <viro@zeniv.linux.org.uk>,
Linus Torvalds <torvalds@linux-foundation.org>,
Miklos Szeredi <mszeredi@redhat.com>,
Christian Brauner <christian@brauner.io>,
Jann Horn <jannh@google.com>,
"Darrick J. Wong" <darrick.wong@oracle.com>,
Karel Zak <kzak@redhat.com>, Jeff Layton <jlayton@redhat.com>,
Linux API <linux-api@vger.kernel.org>,
linux-fsdevel@vger.kernel.org,
LSM <linux-security-module@vger.kernel.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 06/18] fsinfo: Add a uniquifier ID to struct mount [ver #21]
Date: Thu, 06 Aug 2020 13:43:11 +0800 [thread overview]
Message-ID: <61ad7b12b1d242247b066e6ffbf5f9382bc57b2a.camel@themaw.net> (raw)
In-Reply-To: <20200805193303.GM23808@casper.infradead.org>
On Wed, 2020-08-05 at 20:33 +0100, Matthew Wilcox wrote:
> On Wed, Aug 05, 2020 at 04:30:10PM +0100, David Howells wrote:
> > Miklos Szeredi <miklos@szeredi.hu> wrote:
> >
> > > idr_alloc_cyclic() seems to be a good template for doing the
> > > lower
> > > 32bit allocation, and we can add code to increment the high 32bit
> > > on
> > > wraparound.
> > >
> > > Lots of code uses idr_alloc_cyclic() so I guess it shouldn't be
> > > too
> > > bad in terms of memory use or performance.
> >
> > It's optimised for shortness of path and trades memory for
> > performance. It's
> > currently implemented using an xarray, so memory usage is dependent
> > on the
> > sparseness of the tree. Each node in the tree is 576 bytes and in
> > the worst
> > case, each one node will contain one mount - and then you have to
> > backfill the
> > ancestry, though for lower memory costs.
> >
> > Systemd makes life more interesting since it sets up a whole load
> > of
> > propagations. Each mount you make may cause several others to be
> > created, but
> > that would likely make the tree more efficient.
>
> I would recommend using xa_alloc and ignoring the ID assigned from
> xa_alloc. Looking up by unique ID is then a matter of iterating
> every
> mount (xa_for_each()) looking for a matching unique ID in the mount
> struct. That's O(n) search, but it's faster than a linked list, and
> we
> don't have that many mounts in a system.
How many is not many, 5000, 10000, I agree that 30000 plus is fairly
rare, even for the autofs direct mount case I hope the implementation
here will help to fix.
Ian
next prev parent reply other threads:[~2020-08-06 11:01 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-03 13:36 [PATCH 00/18] VFS: Filesystem information [ver #21] David Howells
2020-08-03 13:36 ` [PATCH 01/18] fsinfo: Introduce a non-repeating system-unique superblock ID " David Howells
2020-08-04 9:34 ` Miklos Szeredi
2020-08-03 13:36 ` [PATCH 02/18] fsinfo: Add fsinfo() syscall to query filesystem information " David Howells
2020-08-04 10:16 ` Miklos Szeredi
2020-08-04 11:34 ` David Howells
2020-08-27 11:27 ` Michael Kerrisk (man-pages)
2020-08-03 13:36 ` [PATCH 03/18] fsinfo: Provide a bitmap of the features a filesystem supports " David Howells
2020-08-03 13:37 ` [PATCH 04/18] fsinfo: Allow retrieval of superblock devname, options and stats " David Howells
2020-08-03 13:37 ` [PATCH 05/18] fsinfo: Allow fsinfo() to look up a mount object by ID " David Howells
2020-08-04 10:33 ` Miklos Szeredi
2020-08-03 13:37 ` [PATCH 06/18] fsinfo: Add a uniquifier ID to struct mount " David Howells
2020-08-04 10:41 ` Miklos Szeredi
2020-08-04 12:32 ` Ian Kent
2020-08-05 14:13 ` David Howells
2020-08-05 14:46 ` Miklos Szeredi
2020-08-05 15:30 ` David Howells
2020-08-05 19:33 ` Matthew Wilcox
2020-08-06 5:43 ` Ian Kent [this message]
2020-08-03 13:37 ` [PATCH 07/18] fsinfo: Allow mount information to be queried " David Howells
2020-08-03 13:37 ` [PATCH 08/18] fsinfo: Allow mount topology and propagation info to be retrieved " David Howells
2020-08-04 13:38 ` Miklos Szeredi
2020-08-05 15:37 ` David Howells
2020-08-05 17:19 ` Miklos Szeredi
2020-08-03 13:37 ` [PATCH 09/18] watch_queue: Mount event counters " David Howells
2020-08-03 13:37 ` [PATCH 10/18] fsinfo: Provide notification overrun handling support " David Howells
2020-08-04 13:56 ` Miklos Szeredi
2020-08-05 2:05 ` Ian Kent
2020-08-05 2:46 ` Ian Kent
2020-08-05 7:45 ` Miklos Szeredi
2020-08-05 11:23 ` Ian Kent
2020-08-05 11:27 ` Miklos Szeredi
2020-08-06 1:47 ` Ian Kent
2020-08-05 16:06 ` David Howells
2020-08-05 17:26 ` Miklos Szeredi
2020-08-03 13:37 ` [PATCH 11/18] fsinfo: sample: Mount listing program " David Howells
2020-08-03 13:38 ` [PATCH 12/18] fsinfo: Add API documentation " David Howells
2020-08-03 13:38 ` [PATCH 13/18] fsinfo: Add support for AFS " David Howells
2020-08-03 13:38 ` [PATCH 14/18] fsinfo: Add support to ext4 " David Howells
2020-08-03 13:38 ` [PATCH 15/18] fsinfo: Add an attribute that lists all the visible mounts in a namespace " David Howells
2020-08-04 14:05 ` Miklos Szeredi
2020-08-05 0:59 ` Ian Kent
2020-08-05 16:44 ` David Howells
2020-08-03 13:38 ` [PATCH 16/18] errseq: add a new errseq_scrape function " David Howells
2020-08-03 13:38 ` [PATCH 17/18] vfs: allow fsinfo to fetch the current state of s_wb_err " David Howells
2020-08-03 13:39 ` [PATCH 18/18] samples: add error state information to test-fsinfo.c " David Howells
2020-08-04 15:39 ` [PATCH 00/18] VFS: Filesystem information " James Bottomley
2020-08-04 19:18 ` Miklos Szeredi
2020-08-05 17:13 ` David Howells
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=61ad7b12b1d242247b066e6ffbf5f9382bc57b2a.camel@themaw.net \
--to=raven@themaw.net \
--cc=christian@brauner.io \
--cc=darrick.wong@oracle.com \
--cc=dhowells@redhat.com \
--cc=jannh@google.com \
--cc=jlayton@redhat.com \
--cc=kzak@redhat.com \
--cc=linux-api@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=miklos@szeredi.hu \
--cc=mszeredi@redhat.com \
--cc=torvalds@linux-foundation.org \
--cc=viro@zeniv.linux.org.uk \
--cc=willy@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;
as well as URLs for NNTP newsgroup(s).