Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 01 Nov 2005 12:58:19 +1300
From:      Mark Kirkwood <markir@paradise.net.nz>
To:        Robert Watson <rwatson@FreeBSD.org>
Cc:        freebsd-hackers@freebsd.org, Scott Long <scottl@samsco.org>, Eric Anderson <anderson@centtech.com>
Subject:   Re: Display files currently in the  buffer cache
Message-ID:  <4366AF9B.6050503@paradise.net.nz>
In-Reply-To: <20051031154701.C80645@fledge.watson.org>
References:  <43633948.5030801@paradise.net.nz> <43663443.2090802@centtech.com> <43663B6C.5020804@samsco.org> <20051031154701.C80645@fledge.watson.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Robert Watson wrote:
> On Mon, 31 Oct 2005, Scott Long wrote:
> 
>>>> Assuming not, is it feasible to write one to do this? (if so, any 
>>>> pointers appreciated - massive FreeBSD internals newbie here....).
>>>
>>>
>>> This would be a cool tool!  I've been thinking of that too, and also 
>>> would like to have a lkdump tool - which dumps information about 
>>> currently locked files.
>>
>>
>> Does the FreeBSD VM really have a concept of filenames at all?  I 
>> thought that all it understood was buffer objects and vnodes.  And 
>> since there isn't a strong correlation between vnodes and the 
>> filesystem namespace, it would be hard to provide such information.
> 
> 
> The usual work-arounds are either to assume this explicitly, showing 
> device numbers and inodes, or to give it a best effort shot (use the 
> name cache).  Either way, the results are still likely to be useful.  
> You'll get some obvious messes, such as the results of installworld 
> deleting old libraries and running processes continuing to use the 
> deleted ones, resulting in an inode number that doesn't have a name that 
> can be found. The same approach is taken in lsof, whereby "good enough" 
> is generally good enough.  The problems start when assumptions are made 
> that paths can always be found.
> 

Yeah - this is what I had in mind.

The application is this:

I want to be able to show files and pages that a database (Postgres in 
this case) has cached. So a list of inodes and pages (or page offsets) 
is fine, as I can pass these to the (postgres) specific part of the 
utility and it can figure out which inodes correspond to its own files.

Maybe the name cache lookup will be good enough for me...

Ok, so, ahem, if I were to start on this, what bits of the src should I 
delve into first? Any other newbie pointers will also be much 
appreciated :-).

(Was meaning to start this yesterday, but got sidetracked with a Promise 
SX4060 that I can't get to work...).

Cheers

Mark





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4366AF9B.6050503>