I am writing a calculation intensive program in C (Linux OS, specifically Fedora 11) and was wondering if there is a way to track cache hits/misses and page hits/misses?

And more generally I'm looking for a way to track anything that could be of use in analysis of performance on different machines, is there a way to do this in the C program itself or a utility already out there that can do this?