Truffle on-stack-replacement sometimes not working well with background compilation?

Christian Humer christian.humer at gmail.com
Thu Aug 11 18:06:57 UTC 2016


Hi Gerard,

I could reproduce and fix your problem. The outer loop compilation was 
indeed blocking the inner loop compilation when background compilation 
was enabled.

Its fixed in 
https://github.com/graalvm/graal-core/commit/e46c8d69e4a12fce8a7ca6853a5e60294af262de 
if you are building your own graal-core.
If not, its going to be in the next GraalVM release 0.17 coming to OTN, 
early next month.

Cheers,
Christian


On 04.08.2016 22:13:27, "Gerard Krol" <gerard at gerardkrol.nl> wrote:

>Hi Christian,
>
>I'm using graalvm version 0.12, with truffle-api 0.15. I'm perfectly 
>happy
>with background compilation disabled at the moment, so take your time.
>
>Regards,
>
>Gerard
>
>On Thu, Aug 4, 2016 at 9:56 PM, Christian Humer 
><christian.humer at gmail.com>
>wrote:
>
>>  Hi Gerard,
>>
>>  Thanks for the report. Unfortunately I am unable to have a look at it
>>  right now, but I will asap.
>>  Can you, in the meantime, provide me with some info on which version 
>>of
>>  graalvm/truffle you are using so I can try to reproduce?
>>
>>  Thanks,
>>  Christian
>>
>>  On 04.08.2016 21:46:17, "Gerard Krol" <gerard at gerardkrol.nl> wrote:
>>
>>  Hi,
>>>
>>>  I've had some performance problems with Cover[1] and a specific 
>>>benchmark.
>>>  Yesterday I finally figured out what was going on. The problem seems 
>>>to be
>>>  that on-stack-replacement doesn't always work well with background
>>>  compilation.
>>>
>>>  The benchmark (fannkuch, [2])  did take 311 seconds to run, while 
>>>the GCC
>>>  version would finish in 25 seconds. Warming up (running the 
>>>benchmark
>>>  twice
>>>  and timing the second run) would reduce the runtime to 47 seconds. I 
>>>like
>>>  to run my benchmarks without warmup though, as that is a good 
>>>worst-case
>>>  scenario.
>>>
>>>  I then figured out that just adding
>>>  -Dgraal.TruffleBackgroundCompilation=false made a huge difference. 
>>>The
>>>  time
>>>  needed was reduced to 52 seconds.
>>>
>>>  Is this a bug? Expected behavior in some cases? Am I doing something
>>>  wrong?
>>>
>>>  Reproduction:
>>>  1. Get Cover from [1] (don't forget the 5th installation step)
>>>  2. Run time ./cover tests/fannkuch-redux_gcc5.cover
>>>  3. Run time ./cover -benchmark tests/fannkuch-redux_gcc5.cover (this 
>>>will
>>>  disable the background compilation)
>>>
>>>  Regards,
>>>
>>>  Gerard
>>>
>>>  [1] https://github.com/gerard-/cover
>>>  [2]
>>>  https://github.com/gerard-/cover/blob/master/tests/fannkuch-
>>>  redux_gcc5.cover
>>>
>>
>>



More information about the graal-dev mailing list