Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Investigate perf degradation when using slice in Vector_Builder.to_vector #4608

Closed
wdanilo opened this issue Feb 5, 2023 · 0 comments
Closed
Assignees
Labels

Comments

@wdanilo
Copy link
Member

wdanilo commented Feb 5, 2023

This task is automatically imported from the old Task Issue Board and it was originally created by Hubert Plociniczak.
Original issue is here.


#3781

James provided a new implementation for Vector.fill and Vector_Builder.to_array that avoids copying in #3744.

It looks great except for some reason we get a huge perf penalty for some functions, e.g. 40% for filter in our Vector benchmarks.
This ticket serves as a stub for investigating why this is the case because the implementation looks very much alright.

Comments:

Hubert Plociniczak reports a new STANDUP for yesterday (2022-10-06):

Progress: Had an IGV pair-debugging session with Jaroslav to investigate perf degradation when using slice. We didn't really manage to find the problem, but learned a lot about IGV (couldn't send kudos to Jaroslav because of the bot). We did learn that probably the main reason was due the fact weren't inlining as much as before. No idea yet why. Investigated problems with adding a check to CI to verify @TruffleBoundary annotations in #183136313. It should be finished by 2022-10-10.

Next Day: Next day I will be working on the #183488659 task. Continue with the investigation, rewrite the benchmark written in Enso into Java to potentially eliminate some noise. (Enso Bot - Oct 7, 2022)


**Hubert Plociniczak** reports a new **STANDUP** for today (2022-10-07):

Progress: Continued my epic fun with IGV. Was going to give up on this perf regression but decided to give it a last chance by reviewing plain old inline tracing reported by GraalVM. Turns out were having abnormal number of deoptimizations. Further debugging revealed a regression when calling methods on polyglot arrays because of an invalid equality check that would never be true. It should be finished by 2022-10-10.

Next Day: Next day I will be working on the #183403598 task. Address PR review, pick up another task in the pipeline (Enso Bot - Oct 7, 2022)


So the related PR brings as from 40% degradation in filter to 10% degradation compared to the previous implementation. By analyzing inlining decisions I was able to conclude that we are simply reaching inlining budget and won't do more partial evaluation. Running Vector benchmark with increased budget (I think default is 12000) brings it back to what we had previously: ``` JAVA_OPTS="-Dpolyglot.engine.InliningExpansionBudget=14000" ``` But increasing the budget comes at its own cost. (Hubert Plociniczak - Oct 10, 2022)
**Hubert Plociniczak** reports a new **STANDUP** for yesterday (2022-10-10):

Progress: Cleaned up PR based on the feedback. Spent some time debugging the remaining 10% that we still lost in the filter benchmarks. Turns out this was due to hitting Truffle's inline budget. This concludes this particular perf investigation. Encountered another crash (#183500635) with polyglot arrays. It should be finished by 2022-10-10.

Next Day: Next day I will be working on the #183500635 task. Continue fixing various polyglot Arrays bugs. (Enso Bot - Oct 11, 2022)


For reference here is PR https://github.com//pull/3781 (Hubert Plociniczak - Oct 11, 2022)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants