Poor performance with invokedynamic on Graal
Doug Simon
doug.simon at oracle.com
Mon Aug 8 17:56:19 UTC 2016
Hi Charlie,
I’ve created an issue to track our investigation into the reported performance issue:
https://github.com/graalvm/graal-core/issues/202
Feel free to add an extra discoveries you make there.
Thanks,
-Doug
> On 08 Aug 2016, at 19:49, Thomas Wuerthinger <thomas.wuerthinger at oracle.com> wrote:
>
> Hi Charlie!
>
> Thanks for the regression report. Our policy with Graal is to not accept any significant peak slow-down on realistic workloads compared to C2. We will create a ticket to track progress. Can you also specify the version of the JDK used with Graal (i.e., the full “-version” output of the JVM)?
>
> We did not (wittingly) change the behavior of Graal related to invokedynamic. Maybe some VM internals have changed that we did not yet adopt for.
>
> Obviously, we recommend on the long run to use Truffle+JRuby. We see fairly convincing numbers with Truffle enabled for the mentioned red-black tree benchmark on our performance tracking infrastructure.
>
> - thomas
>
>
>> On 06 Aug 2016, at 03:35, Charles Oliver Nutter <headius at headius.com> wrote:
>>
>> Hey all!
>>
>> I've started to poke at running JRuby on Graal and I've been pretty
>> disappointed with the results so far. It appears that Graal is not doing a
>> good job of optimizing through invokedynamic call sites, which largely
>> defeats our best opportunity for optimization.
>>
>> I've tried two benchmarks today against graal-core HEAD.
>>
>> The first is trivial: a recursive fib benchmark. JRuby+indy on Hotspot
>> (8u92) runs fib(35) in around 0.32s. JRuby+indy on Graal takes 0.52s or so
>> per iteration.
>>
>> https://gist.github.com/headius/492fb995e15b50d3db42145339f21968
>>
>> The second benchmark is more robust: a pure-Ruby red/black tree
>> implementation. The benchmark builds up a large tree, searches it, deletes
>> from it, etc. JRuby+indy on Hotspot can run an iteration in about 0.41s. On
>> Graal, it takes 1s or more.
>>
>> This is all especially unfortunate because some time ago I was able to see
>> a 5x improvement on a mandelbrot benchmark. I don't see that on recent
>> Graal builds.
>>
>> Here's how to reproduce...
>>
>> * Grab a master build of JRuby from http://ci.jruby.org. Look for
>> 9.1.3.0-snapshot "bin" tarball.
>> * Unpack, add bin/ to PATH so JRuby gets picked up.
>> * Run the benchmarks I've gisted below.
>>
>> https://gist.github.com/headius/5eb47848fbe486266942695891b0d9f6
>>
>> Let me know if you have question! I want to see this run as well as I
>> believe it should!
>>
>> - Charlie
>
More information about the graal-dev
mailing list