qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC PATCH] tcg: add ability to dump /tmp/perf-<pid>.ma


From: Alex Bennée
Subject: Re: [Qemu-devel] [RFC PATCH] tcg: add ability to dump /tmp/perf-<pid>.map files
Date: Fri, 28 Mar 2014 11:12:55 +0000
User-agent: mu4e 0.9.9.6pre2; emacs 24.3.50.3

Richard Henderson <address@hidden> writes:

> On 03/27/2014 09:37 AM, address@hidden wrote:
>> From: Alex Bennée <address@hidden>
>> 
>> This allows the perf tool to map samples to each individual translation
>> block. This could be expanded for user space but currently it gives
>> enough information to find any hotblocks by other means.
>
> Plausible, I suppose.

It works fine on my toy test case (kernel + single computation
user-space /init task) but I've not really used it in anger for any
performance tweaking hence it's only an RFC patch. Hopefully it will
save re-inventing the wheel should anyone actually want to do serious
tcg optimisation.

I've had a brief poke around the TCG profiling and seen it track
generation cost. Do we have any hotblock tracking in the built-in profiler?

<snip>
>> +static void tcg_write_perfmap(uint8_t *start, uint64_t size, uint64_t 
>> target_pc)
>> +{
>> +    if (tcg_perfmap) {
>> +        g_fprintf(tcg_perfmap, "%lx %lx subject-0x%lx\n",
>> +                  (uint64_t) start, size, target_pc);
>> +    }
>> +}
>
> Why oh why do you feel the need to use g_fprintf?  That's just gratuitous glib
> obfuscation, that.

Sorry my bad, force of habit given that we have glib as a dependency.
But your right in this case it's just a dumb wrapper unlike when your
doing more string mangling where glib save a lot of time.

> For this small of a single-use function, I think it would be clearer to just 
> do
> the printf directly in tcg_gen_code_common.  Certainly no need to use uint64_t
> all over the place; ptrdiff_t and target_ulong are exactly the right
> thing.

Do we have a format macro for target_ulong? The uint64_t was just for
simplicity. I found when I was messing with the trace-event stuff some
of the target types where barred from the common code although I guess
in this case the tcg is very aware of the execution target.

-- 
Alex Bennée




reply via email to

[Prev in Thread] Current Thread [Next in Thread]