Profiling a Truffle language
Christian Humer
christian.humer at gmail.com
Sun Jul 31 19:15:01 UTC 2016
Hi Gerard,
On 31.07.2016 21:05:04, "Gerard Krol" <gerard at gerardkrol.nl> wrote:
>Thanks, that was very helpful. It was quite hard to get it working, but
>I
>managed. For me it's still called TruffleProfiler (version 0.15 of
>Truffle). Weirdly enough it was not picking up the class from the
>truffle-debug jar through the @Registration annotation, so I had to
>copy
>the class over (just adding a derived class with the annotation worked
>as
>well).
>
Sorry to hear that. Did you put the truffle-debug.jar on the normal or
boot classpath? Could you maybe copy in your java command line that you
were using, so I can potentially reproduce it?
Please also note that this version of the TruffleProfiler is based on
instrumentation and is quite heavy. Therefore its results might not be
very reliable.
A more lightweight version based on sampling is coming soonish (1-3
weeks) to the Truffle tip.
Cheers,
Christian
>
>Chris, the slow part does seem to be the array copy part, not sure why
>as
>Cover is fully typed so all nodes have just a single specialization.
>I'm
>off investigating!
>
>Regards,
>
>Gerard
>
>On Sun, Jul 31, 2016 at 12:13 PM, Stefan Marr <java at stefan-marr.de>
>wrote:
>
>> Hi Gerard:
>>
>>
>> > On 31 Jul 2016, at 11:45, Gerard Krol <gerard at gerardkrol.nl> wrote:
>> >
>> > What I'd like to have is a simple profiler (preferably one using
>> sampling),
>> > that will point me to the actual slow statements in the source
>>program.
>> Is
>> > something like that available or will I have to write something
>>myself?
>> In
>> > the last case, I suppose I should be using the the Truffle
>> Instrumentation
>> > API[2]?
>>
>> There is a profiler already in the instrumentation framework.
>> I am not entirely sure, but I think the class is now named Profiler.
>> Things seem to have changed.
>>
>> I am using it in SOMns:
>> https://github.com/smarr/SOMns/blob/master/src/som/VM.java#L329
>> And I wrote some related notes up here:
>>
>>http://stefan-marr.de/2016/04/adding-debugging-support-to-a-truffle-language/
>>
>> For the profiler, you’ll need to tag some node in each method as Root
>> (RootTag:
>>
>>https://github.com/graalvm/truffle/blob/master/truffle/com.oracle.truffle.api.instrumentation/src/com/oracle/truffle/api/instrumentation/StandardTags.java#L87)
>> Or perhaps easier to find in the SimpleLanguage:
>>
>>https://github.com/graalvm/truffle/blob/master/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/SLStatementNode.java#L99
>>
>> Hope that gets you started.
>>
>> Best regards
>> Stefan
>>
>>
>>
>>
>> --
>> Stefan Marr
>> Johannes Kepler Universität Linz
>> http://stefan-marr.de/research/
>>
>>
>>
>>
More information about the graal-dev
mailing list