Peter,

Thats' fine. I have already gone through those articles, and user space
techniques are fine with me. But here I have to do it
( flush the cache ) from kernel module, so I have to do all the things that
kernel does when it get argument 3 into /proc/sys/vm/dropcaches.

Now again  drop_caches_sysctl_handler function accepts lots of argument and
its not defined in .h file, so what I have to do is, I have to pass those
arguments to this function and  include it in my module by exporting this
function. This is a bit of cumbersome and I really don't know weather it
will work or not !!!!!


Just asking,  if I export only  drop_pagecache function and add it in my
module, it will work or not. Or, any other better way to handle this case
from kernel module ????


Thanks & Best Regards,
Krishna

On Sat, Jul 18, 2009 at 11:12 AM, Peter Teoh <htmldevelo...@gmail.com>wrote:

> my first attempt at any solution, is to do it in userspace.   This
> article is good:
>
> http://aplawrence.com/Linux/buffer_cache.html
>
> drop caches is principally used, if u want to remove all existing
> cache, not flushing it to the storage, so that your next read is
> guaranteed to be from the storage.   but if u want to flush to
> storage, "sync" is the better option.
>
> Many advices are available on the use of drop_cache:
>
> http://jons-thoughts.blogspot.com/2007/09/tip-of-day-dropcaches.html
> http://linux-mm.org/Drop_Caches
> http://jons-thoughts.blogspot.com/2007/09/tip-of-day-dropcaches.html
> http://www.linuxreaders.com/tag/drop_caches/
> http://ubuntuforums.org/showthread.php?t=1002612
>
> On Sat, Jul 18, 2009 at 12:02 AM, er krishna<erkris...@gmail.com> wrote:
> > Dear Peter,
> >
> > Thanks for the great help.
> >
> > Just asking, If I have to include this function [
> drop_caches_sysctl_handler
> > ] , then what should I do ? Shall I export it and compile the kernel or
> is
> > there any other means to do it.
> >
> > Second, I just want to know that there will be lots of hurdels to set the
> > arguments of above handler, So, if I only export
> > static void drop_pagecache(void) function in kernel & include this in my
> > driver, would it work as per the expectation ?
> >
> > May be I am wrong, but please correct if the above method need any
> > modification?
> >
>
> but if u insist on doing it in kernel u HAVE TO WORRY about lots of things:
>
> a.   what if u are interrupted by hardware/software interrupt?   if u
> cannot tolerate interrupt, then u may need to disable interrupt.   but
> then u have to understand the serious implication of these as well.
>
> b.   does ANY of the API u are going to call, require any non-blocking
> condition?   or will it result in blocking condition?
>
> c.   since u are doing it in kernel - how do u ensure that the same is
> not called by two different CPU at the same time?   or, how do u
> ensure that the SAME cpu don't execute the same function, in a nested
> manner - assuming interrupt is enabled, and the same function got
> executed during the 2nd interrupt?
>
> lots of small little things to worry about, if not, it will result in
> kernel crash, or system deadlock.....consequences may result in lost
> of human life....
>
> for example, even kernel developer had bugs in this API before:
>
>
> http://forum.soft32.com/linux/circular-locking-proc-sys-vm-drop_caches-ftopict340340.html
>
> > Thanks & Best regards,
> > Krishna
> >
> >
> >
> >
> >
> >
> > On Fri, Jul 17, 2009 at 8:11 PM, Peter Teoh <htmldevelo...@gmail.com>
> wrote:
> >>
> >> sorry....my previous was accidentally sent out halfway...specifically
> >> detailing on the implementation of  drop_caches_sysctl_handler():
> >>
> >> > and reading into the implementation, it just wipe away all the dirty
> >> > buffer cache (as the name implies).   Not really the type of flushing
> >> > I originally meant - which is to write back the dirty buffer cache to
> >> > the backing store.
> >> >
> >> drop_caches_sysctl_handler()--->
> >> drop_pagecache()--->drop_pagecache_sb()--->invalidate_mapping_pages().
> >>
> >> where invalidate_mappping_pages() is in mm/truncate.c.....and so on.
> >>
> >> and as drop_pagecache_sb() is done for each filesystem's superblock,
> >> which is why my initial statement is that it is performance-heavy.
> >> if u know what to flush out, doing it directly will be much better.
> >
> >
>
>
>
> --
> Regards,
> Peter Teoh
>

Reply via email to