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>