Re: [RFC][PATCH] update /proc/sys/vm/drop_caches documentation

From: KAMEZAWA Hiroyuki
Date: Wed Sep 15 2010 - 20:17:35 EST


On Wed, 15 Sep 2010 12:24:55 -0700
"Tim Pepper" <lnxninja@xxxxxxxxxxxxxxxxxx> wrote:

> On Wed 15 Sep at 13:33:03 +0900 kamezawa.hiroyu@xxxxxxxxxxxxxx said:
> > >
> > > diff -puN fs/drop_caches.c~update-drop_caches-documentation fs/drop_caches.c
> > > --- linux-2.6.git/fs/drop_caches.c~update-drop_caches-documentation 2010-09-14 15:44:29.000000000 -0700
> > > +++ linux-2.6.git-dave/fs/drop_caches.c 2010-09-14 15:58:31.000000000 -0700
> > > @@ -47,6 +47,8 @@ int drop_caches_sysctl_handler(ctl_table
> > > {
> > > proc_dointvec_minmax(table, write, buffer, length, ppos);
> > > if (write) {
> > > + WARN_ONCE(1, "kernel caches forcefully dropped, "
> > > + "see Documentation/sysctl/vm.txt\n");
> >
> > Documentation updeta seems good but showing warning seems to be meddling to me.
>
> We already have examples of things where we warn in order to turn up
> "interesting" userspace code, in the hope of starting dialog and getting
> things fixed for the future. I don't see this so much as meddling as
> one of the fundamental aspects of open source.
>
> drop_caches probably originally should have gone in under a CONFIG_DEBUG
> (even if all the distros would have turned it on), and had a WARN_ON
> (personally I'd argue for this compared to WARN_ONCE()), and even have
> been exposed in debugfs not procfs...but it's part of the "the interface"
> at this point.
>
> Somebody doing debug and testing which leverages drop_caches should not
> be bothered by a WARN_ON(). Somebody using it to "fix" the kernel with
> repeated/regular calls to drop_caches should get called out for fixing
> themselves and the WARN_*()'s noting the comm could help that, unless
> somebody has a use case where repeated/regular calls to drop_caches
> is valid and not connected to buggy usage or explicit performance
> debug/testing?
>

I hear a customer's case. His server generates 3-80000+ new dentries per day
and dentries will be piled up to 1000000+ in a month. This makes open()'s
performance very bad because Hash-lookup will be heavy. (He has very big memory.)

What we could ask him was
- rewrite your application. or
- reboot once in a month (and change hash size) or
- drop_cache once in a month

Because their servers cannot stop, he used drop_caches once in a month
while his server is idle, at night. Changing HashSize cannot be a permanent
fix because he may not stop the server for years.

For rare users who have 10000000+ of files and tons of free memory, drop_cache
can be an emergency help.

Thanks,
-Kame






--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/