[Mono-list] profiling mono

James Roberts jerobert@uiuc.edu
Mon, 11 Nov 2002 10:34:10 -0600


Hello all.

My colleagues and I are developing a lightweight
continuous profiler for Mono.  We have a few questions
for the frequenters of this newsgroup.

A little bit about the project... We intend to build a
profiler that will run at low enough overhead that the
profiler could be left on all the time without
adversely affecting the performance of user
applications.  The output from our profiler would be
suitable for driving on-line an on-line optimizer
which would reside in future Mono runtimes.

To achieve such low overhead, we plan on using a
statistical sampling process which will periodically
interrupt the executing program and sample the running
program's program counter.  Currently, we plan on
using OProfile for this part of the project.

Output from OProfile is not itself suitable as input
for an online optimizer however.  For starters, the
data collected by OProfile would be in terms of
translated x86 instructions rather than in terms of
the original MSIL instructions.  This is an especially
important point since on-line optimizations would
almost certainly be applied to the higher-level MSIL
code, and we would necessarily want statistics in
terms of MSIL rather than translated x86.

So, what we would really like to have is some kind of
mapping from the translated x86 instructions back to
the original MSIL instructions from which those
translated instructions arose.

Does anyone have any ideas on how to make such a
mapping from x86 instruction back to MSIL instruction?
 Alternatively, if we only wanted to match x86 basic
block to MSIL basic block, how would the problem
change?  How about mapping x86 functions back to MSIL
methods?

Thanks.

-James