From: Mpourtounis Dimitris <db@wless.gr>
To: Hugh Dickins <hugh@veritas.com>,
linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: strange behavior creating and deleting files
Date: Sat, 25 Sep 2004 16:44:39 +0300 [thread overview]
Message-ID: <1096119879.4080.3.camel@WLESS> (raw)
In-Reply-To: <Pine.LNX.4.44.0409241915420.3336-100000@localhost.localdomain>
On Fri, 2004-09-24 at 21:40, Hugh Dickins wrote:
> On Fri, 24 Sep 2004, Mpourtounis Dimitris wrote:
> >
> > there seems to be a strange behaviour in the way my system creates and
> > deletes files, as long as memory allocation is concerned.
> >
> > running a simple script that continuously creates and deletes files on
> > tmpfs filesystem, a got the following results:
> >
> > files created free memory on system
> > ------------- ---------------------
> > 0 48180
> > +6000 47936
> > +6000 47372
> > +6000 47372
> > +6000 47936
> > +6000 47936
> > +6000 47936
> > +6000 47936 (seems stable)
> > +9000 46976 (what on earth?)
> > +30000 45084
> > +80000 45084 (again stable)
> > +70000 39156 (not again...:( )
> >
> > and sometime in the morning 25000 MB free RAM, and my system running too
> > slow
> >
> > I am sure these are a lot a files and under normal conditions, there
> > will never be made and deleted so many.
> >
> > It is that misbehavior of being stable for a long time and then again
> > allocating memory that concerns me.
>
> I'll admit that I don't _fully_ understand it either. Another user
> noticed related behaviour a couple of months ago, below is the patch
> which I hope you find fixes yours too. An equivalent fix (to fs/libfs.c)
> went into 2.6.9-rc1-bk1, I'd been waiting for it to get more 2.6 exposure
> (lest unwanted side-effects appeared) before sending Marcelo the 2.4 fix.
> If it works well for you, let me know and I'll send it in for 2.4.28...
>
I seems to work fine. Having created-deleted about 50000 files there is
no leak. Hope it continues that way.
Great job, thanks !
DB
> A tmpfs user reported increasingly slow directory reads when repeatedly
> creating and unlinking in a mkstemp-like way. The negative dentries
> accumulate alarmingly (until memory pressure finally frees them), and
> are just a hindrance to any in-memory filesystem. shmem_lookup set
> d_op to arrange for negative dentries to be deleted immediately.
>
> (But I failed to discover how it is that on-disk filesystems seem to
> keep their negative dentries within manageable bounds: this effect was
> gross with tmpfs or ramfs, but no problem at all with extN or reiser.)
>
> Signed-off-by: Hugh Dickins <hugh@veritas.com>
>
> --- 2.4.26/mm/shmem.c 2003-11-28 18:26:21.000000000 +0000
> +++ linux/mm/shmem.c 2004-07-30 12:48:31.324978800 +0100
> @@ -1161,13 +1161,27 @@ static int shmem_statfs(struct super_blo
> }
>
> /*
> + * Retaining negative dentries for an in-memory filesystem just wastes
> + * memory and lookup time: arrange for them to be deleted immediately.
> + */
> +static int shmem_delete_dentry(struct dentry *dentry)
> +{
> + return 1;
> +}
> +
> +/*
> * Lookup the data. This is trivial - if the dentry didn't already
> - * exist, we know it is negative.
> + * exist, we know it is negative. Set d_op to delete negative dentries.
> */
> static struct dentry *shmem_lookup(struct inode *dir, struct dentry *dentry)
> {
> + static struct dentry_operations shmem_dentry_operations = {
> + .d_delete = shmem_delete_dentry,
> + };
> +
> if (dentry->d_name.len > NAME_MAX)
> return ERR_PTR(-ENAMETOOLONG);
> + dentry->d_op = &shmem_dentry_operations;
> d_add(dentry, NULL);
> return NULL;
> }
prev parent reply other threads:[~2004-09-25 13:44 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-09-24 10:13 strange behavior creating and deleting files Mpourtounis Dimitris
2004-09-24 18:40 ` Hugh Dickins
2004-09-25 13:44 ` Mpourtounis Dimitris [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=1096119879.4080.3.camel@WLESS \
--to=db@wless.gr \
--cc=hugh@veritas.com \
--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