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