2000-12-22 01:47:47

by Al Peat

[permalink] [raw]
Subject: Re: Purging the Page Table (was: Purging the Buffer Cache)

--- Juri Haberland <[email protected]>
wrote:
> Al Peat wrote:
> >
> > Is there any way to completely purge the buffer
> > cache -- not just the write requests (ala 'sync'
> or
> > 'update'), but the whole thing? Can I just call
> > invalidate_buffers() or destroy_buffers()?
>
> What about the ioctl BLKFLSBUF ?
> If you are running a SuSE distrib there is already a
> tool called flushb
> that does what you want. If not, you can download
> the simple tool from
> http://innominate.org/~juri/flushb.tar.gz

Another question: what if I need to purge the page
table of all files as well? Is there a clean way to
do that? I've been looking at /mm/memory.c, but it
doesn't look like clear_page_tables, etc. get
exported.

I need /all/ read requests to go to disk, and it'd
be nice if I could do that without a reboot (but I'll
take the reboot if that's the only way to go about it
:)

Thanks again,
Al

__________________________________________________
Do You Yahoo!?
Yahoo! Shopping - Thousands of Stores. Millions of Products.
http://shopping.yahoo.com/


2000-12-28 06:29:17

by Jamie Lokier

[permalink] [raw]
Subject: Re: Purging the Page Table (was: Purging the Buffer Cache)

Al Peat wrote:
> > > Is there any way to completely purge the buffer
> > > cache -- not just the write requests (ala 'sync'
> > or
> > > 'update'), but the whole thing? Can I just call
> > > invalidate_buffers() or destroy_buffers()?

Try this script:

case "`id -u`" in
0) ;;
*) echo Only root can run this script. 1>&2; exit 1 ;;
esac

mount | sort -k3 -r | \
while read dev ON dir TYPE type etc; do
echo mount $dir -o remount
mount $dir -o remount
done

mount | sort -k1 | \
while read dev ON dir TYPE type etc; do
case "$dev" in
/dev/*) echo hdparm -f $dev
hdparm -f $dev >/dev/null ;;
esac
done

-- Jamie