[m-users.] Grade for profiling

Volker Wysk post at volker-wysk.de
Tue Mar 21 18:08:19 AEDT 2023


For the record (if someone stumbles into the same problem). With the help of
Julien I was able to find the solution.

A (Linux) kernel feature called "Address space layout randomization" (ASLR)
must be turned off, before running the program which is to be profiled. This
can be accomplished with this command:

sudo bash -c "echo 0 > /proc/sys/kernel/randomize_va_space"

Then you get the right names for most predicates.

You also need to run the program with an English locale. Set the LANG
environment variable to "C.UTF-8" or something like that. Otherwise, the
mprof program might quit with an error message, because numbers aren't
formatted right (point vs. comma in floating point numbers).

Cheers,
Volker

Am Dienstag, dem 21.03.2023 um 06:27 +0100 schrieb Volker Wysk:
> Am Dienstag, dem 21.03.2023 um 10:16 +1100 schrieb Julien Fischer:
> > Hi Volker,
> > 
> > On Mon, 20 Mar 2023, Volker Wysk wrote:
> > 
> > > Am Montag, dem 20.03.2023 um 13:17 +0100 schrieb Volker Wysk:
> > > > Am Montag, dem 20.03.2023 um 21:29 +1100 schrieb Julien Fischer:
> > > > > 
> > > > > On Mon, 20 Mar 2023, Volker Wysk wrote:
> > > > > 
> > > > > > Hi, Julien
> > > > > > 
> > > > > > Am Montag, dem 20.03.2023 um 09:40 +1100 schrieb Julien Fischer:
> > > > > > > Hi Volker,
> > > > > > > 
> > > > > > > On Sun, 19 Mar 2023, Volker Wysk wrote:
> > > > > > > 
> > > > > > > > I want to profile my program, but when using mprof, I get only lines like
> > > > > > > > this:
> > > > > > > > 
> > > > > > > >  0.0       0.00     0.00 49576032     0.00     0.00
> > > > > > > > unknown__140325205178080 [140]
> > > > > > > > 
> > > > > > > > All names begin with "unknown_...".
> > > > > > > > 
> > > > > > > > My guess is, that debug symbols must be compiled in. My profiling grade is
> > > > > > > > "asm_fast.gc.prof", so no debug symbols.
> > > > > > > 
> > > > > > > The .prof component should be all that is required for (time) profiling
> > > > > > > to work; there's no need for anything additional
> > > > > > 
> > > > > > So why are all the names "unknown__..."? It isn't usable this way...
> > > > > 
> > > > > If they are all "unknown__...", then something is wrong. The profiler
> > > > > builds a table of addresses to procedure names; if it can't find an
> > > > > entry for a given address in that table it outputs it as "unknown__...".
> > > > > When you run a program with profiling enabled, that table should be
> > > > > written to the file Prof.Decl. When you run your program, does the file
> > > > > Prof.Decl contain any entries?
> > > > 
> > > > Yes, it does. It's a megabyte big.
> > > 
> > > This is how I build my program:
> > > 
> > > mmc -j8 -E --make \
> > >    --grade asm_fast.gc.debug.stseg \
> > >    --output-compile-error-lines=200 \
> > >    --cflags "$(pkg-config --cflags glib-2.0)" \
> > >    --cflags "$(pkg-config --cflags mhash)" \
> > >    --ml colipa \
> > >    -lodbc -lpthread -ldl \
> > >    --cflag "-DMODBC_UNIX" --cflag "-DMODBC_MYSQL" \
> > >    `pkg-config --libs glib-2.0` \
> > >    `pkg-config --libs mhash` \
> > >    "$PROG"
> > 
> > The above doesn't specify a profiling grade, so it's presumably not
> > quite how you built it.  
> 
> You're right. When I build with profiling, the grade line is:
> 
>     --grade asm_fast.gc.prof --profiling \
> 
> > If you want to zip up and the profiling files
> > (Prof.Decl, Prof.Counts and Prof.CallPair) and email them to me
> > directly, I can take a further look.
> 
> On the way - thanks!
> 
> 
> Volker
> _______________________________________________
> users mailing list
> users at lists.mercurylang.org
> https://lists.mercurylang.org/listinfo/users

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part
URL: <http://lists.mercurylang.org/archives/users/attachments/20230321/296c8337/attachment.sig>


More information about the users mailing list